summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-03-08 00:43:43 -0500
committerMatthias Clasen <mclasen@redhat.com>2021-03-08 00:47:45 -0500
commit2e46926abae88263d6f1271421c85d0e731f23a8 (patch)
tree7cc7c44b9ea3edaf734a9a1e10f5f9739f43c518
parent21bd27fb97d591059168266e4654ff4aab5b9175 (diff)
downloadgtk+-submenu-action-fixes.tar.gz
menusectionbox: Fix submenu-action for nested menussubmenu-action-fixes
We were not updating the state of submenu-actions for nested submenus. Fixes: #3721
-rw-r--r--gtk/gtkmenusectionbox.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/gtk/gtkmenusectionbox.c b/gtk/gtkmenusectionbox.c
index 6210119c35..8dd8fe18f3 100644
--- a/gtk/gtkmenusectionbox.c
+++ b/gtk/gtkmenusectionbox.c
@@ -293,6 +293,22 @@ open_submenu (GtkWidget *button,
}
static void
+submenu_shown (GtkPopoverMenu *popover,
+ GtkMenuTrackerItem *item)
+{
+ if (gtk_menu_tracker_item_get_should_request_show (item))
+ gtk_menu_tracker_item_request_submenu_shown (item, TRUE);
+}
+
+static void
+submenu_hidden (GtkPopoverMenu *popover,
+ GtkMenuTrackerItem *item)
+{
+ if (gtk_menu_tracker_item_get_should_request_show (item))
+ gtk_menu_tracker_item_request_submenu_shown (item, FALSE);
+}
+
+static void
gtk_menu_section_box_insert_func (GtkMenuTrackerItem *item,
int position,
gpointer user_data)
@@ -324,6 +340,9 @@ gtk_menu_section_box_insert_func (GtkMenuTrackerItem *item,
g_object_bind_property (item, "label", widget, "text", G_BINDING_SYNC_CREATE);
g_object_bind_property (item, "icon", widget, "icon", G_BINDING_SYNC_CREATE);
g_object_bind_property (item, "sensitive", widget, "sensitive", G_BINDING_SYNC_CREATE);
+
+ g_signal_connect (submenu, "show", G_CALLBACK (submenu_shown), item);
+ g_signal_connect (submenu, "hide", G_CALLBACK (submenu_hidden), item);
}
else
{