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

New commits:
commit 7c2d9ec55531efabab008f2bd0130c24366ff988
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Mon Feb 14 10:59:34 2022 +0000
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Tue Feb 15 10:31:21 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/+/129927
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

diff --git a/avmedia/source/framework/MediaControlBase.cxx 
b/avmedia/source/framework/MediaControlBase.cxx
index c572bed7d0e6..dc83204d4228 100644
--- a/avmedia/source/framework/MediaControlBase.cxx
+++ b/avmedia/source/framework/MediaControlBase.cxx
@@ -133,6 +133,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();
@@ -150,24 +172,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)
@@ -226,15 +231,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