[Libreoffice-commits] core.git: vcl/unx

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Fri Sep 17 09:27:18 UTC 2021


 vcl/unx/gtk3/gtkinst.cxx |   27 +++------------------------
 1 file changed, 3 insertions(+), 24 deletions(-)

New commits:
commit b4cf6dd97837c34a3e4b754f5132026830051720
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Sep 16 16:51:19 2021 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Sep 17 11:26:44 2021 +0200

    gtk4: listen to "toggled" so callbacks see get_menu_item_active of true
    
    Change-Id: I130ebbb6dad9c0f69667a1c95e97583183656710
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122211
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 13e441fe58f8..60b2a7450846 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -10852,7 +10852,7 @@ private:
 
             GtkWidget* pToggleButton = gtk_widget_get_first_child(GTK_WIDGET(pMenuButton));
             assert(GTK_IS_TOGGLE_BUTTON(pToggleButton));
-            g_signal_connect(pToggleButton, "state-flags-changed", G_CALLBACK(signalItemFlagsChanged), this);
+            g_signal_connect(pToggleButton, "toggled", G_CALLBACK(signalItemToggled), this);
 #endif
 
             // by default the GtkMenuButton down arrow button is as wide as
@@ -10909,7 +10909,6 @@ private:
         signal_clicked(::get_buildable_id(GTK_BUILDABLE(pItem)));
     }
 
-#if !GTK_CHECK_VERSION(4, 0, 0)
     static void signalItemToggled(GtkToggleButton* pItem, gpointer widget)
     {
         GtkInstanceToolbar* pThis = static_cast<GtkInstanceToolbar*>(widget);
@@ -10921,37 +10920,17 @@ private:
     {
         for (const auto& a : m_aMenuButtonMap)
         {
+#if !GTK_CHECK_VERSION(4, 0, 0)
             if (a.second->getWidget() == GTK_WIDGET(pItem))
-            {
-                signal_toggle_menu(a.first);
-                break;
-            }
-        }
-    }
 #else
-    static void signalItemFlagsChanged(GtkToggleButton* pItem, GtkStateFlags flags, gpointer widget)
-    {
-        GtkInstanceToolbar* pThis = static_cast<GtkInstanceToolbar*>(widget);
-        bool bOldChecked = flags & GTK_STATE_FLAG_CHECKED;
-        bool bNewChecked = gtk_widget_get_state_flags(GTK_WIDGET(pItem)) & GTK_STATE_FLAG_CHECKED;
-        if (bOldChecked == bNewChecked)
-            return;
-        SolarMutexGuard aGuard;
-        pThis->signal_item_toggled(pItem);
-    }
-
-    void signal_item_toggled(GtkToggleButton* pItem)
-    {
-        for (auto& a : m_aMenuButtonMap)
-        {
             if (a.second->getWidget() == gtk_widget_get_parent(GTK_WIDGET(pItem)))
+#endif
             {
                 signal_toggle_menu(a.first);
                 break;
             }
         }
     }
-#endif
 
 #if GTK_CHECK_VERSION(4, 0, 0)
     static void set_item_image(GtkWidget* pItem, GtkWidget* pImage)


More information about the Libreoffice-commits mailing list