vcl/unx/gtk3/gtkinst.cxx | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-)
New commits: commit b4cf6dd97837c34a3e4b754f5132026830051720 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Thu Sep 16 16:51:19 2021 +0100 Commit: Caolán McNamara <caol...@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 <caol...@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)