avmedia/source/framework/MediaControlBase.cxx |   47 ++++++++++++++++----------
 include/avmedia/MediaControlBase.hxx          |    1 
 2 files changed, 30 insertions(+), 18 deletions(-)

New commits:
commit 3d61c9026a8a562022fa3099472a82b60172f112
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Mon Feb 14 10:59:34 2022 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Mon Feb 14 16:23:19 2022 +0100

    update play/pause/stop when one of the other changes
    
    so (esp under gtk) that when pause is enabled and pause
    is clicked again that it remains visually enabled
    
    Change-Id: I779bb1491d2473db926b8075a0b574ef5767337d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129909
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/avmedia/source/framework/MediaControlBase.cxx 
b/avmedia/source/framework/MediaControlBase.cxx
index eac8fc3923c5..16ab1df32aa2 100644
--- a/avmedia/source/framework/MediaControlBase.cxx
+++ b/avmedia/source/framework/MediaControlBase.cxx
@@ -128,6 +128,28 @@ void MediaControlBase::InitializeWidgets()
     mxTimeSlider->set_tooltip_text( AvmResId( AVMEDIA_STR_POSITION ));
 }
 
+void MediaControlBase::UpdatePlayState(const MediaItem& rMediaItem)
+{
+    if (rMediaItem.getState() == MediaState::Play)
+    {
+        mxPlayToolBox->set_item_active("play", true);
+        mxPlayToolBox->set_item_active("pause", false);
+        mxPlayToolBox->set_item_active("stop", false);
+    }
+    else if( rMediaItem.getState() == MediaState::Pause )
+    {
+        mxPlayToolBox->set_item_active("play", false);
+        mxPlayToolBox->set_item_active("pause", true);
+        mxPlayToolBox->set_item_active("stop", false);
+    }
+    else
+    {
+        mxPlayToolBox->set_item_active("play", false);
+        mxPlayToolBox->set_item_active("pause", false);
+        mxPlayToolBox->set_item_active("stop", true);
+    }
+}
+
 void MediaControlBase::UpdateToolBoxes(const MediaItem& rMediaItem)
 {
     const bool bValidURL = !rMediaItem.getURL().isEmpty();
@@ -145,24 +167,7 @@ void MediaControlBase::UpdateToolBoxes(const MediaItem& 
rMediaItem)
     {
         mxPlayToolBox->set_sensitive(true);
         mxMuteToolBox->set_sensitive(true);
-        if( rMediaItem.getState() == MediaState::Play )
-        {
-            mxPlayToolBox->set_item_active("play", true);
-            mxPlayToolBox->set_item_active("pause", false);
-            mxPlayToolBox->set_item_active("stop", false);
-        }
-        else if( rMediaItem.getState() == MediaState::Pause )
-        {
-            mxPlayToolBox->set_item_active("play", false);
-            mxPlayToolBox->set_item_active("pause", true);
-            mxPlayToolBox->set_item_active("stop", false);
-        }
-        else
-        {
-            mxPlayToolBox->set_item_active("play", false);
-            mxPlayToolBox->set_item_active("pause", false);
-            mxPlayToolBox->set_item_active("stop", true);
-        }
+        UpdatePlayState(rMediaItem);
         mxPlayToolBox->set_item_active("loop", rMediaItem.isLoop());
         mxMuteToolBox->set_item_active("mute", rMediaItem.isMute());
         if (!mbCurrentlySettingZoom)
@@ -221,15 +226,21 @@ void MediaControlBase::SelectPlayToolBoxItem( MediaItem& 
aExecItem, MediaItem co
             aExecItem.setTime( 0.0 );
         else
             aExecItem.setTime( aItem.getTime() );
+
+        UpdatePlayState(aExecItem);
     }
     else if (rId == "pause")
     {
         aExecItem.setState( MediaState::Pause );
+
+        UpdatePlayState(aExecItem);
     }
     else if (rId == "stop")
     {
         aExecItem.setState( MediaState::Stop );
         aExecItem.setTime( 0.0 );
+
+        UpdatePlayState(aExecItem);
     }
     else if (rId == "mute")
     {
diff --git a/include/avmedia/MediaControlBase.hxx 
b/include/avmedia/MediaControlBase.hxx
index 3d4464ce0424..1379a4364f33 100644
--- a/include/avmedia/MediaControlBase.hxx
+++ b/include/avmedia/MediaControlBase.hxx
@@ -63,6 +63,7 @@ protected:
     void UpdateVolumeSlider( MediaItem const & aMediaItem );
     void UpdateTimeSlider( MediaItem const & aMediaItem );
     void UpdateTimeField( MediaItem const & aMediaItem, double fTime );
+    void UpdatePlayState(const MediaItem& rMediaItem);
     void SelectPlayToolBoxItem( MediaItem& aExecItem, MediaItem const & aItem, 
std::string_view rId);
     void disposeWidgets();
 };

Reply via email to