diff --git a/gtk/gtkmodelbutton.c b/gtk/gtkmodelbutton.c index 501dc5e087..3d2e2519c4 100644 --- a/gtk/gtkmodelbutton.c +++ b/gtk/gtkmodelbutton.c @@ -1326,26 +1326,6 @@ gtk_model_button_class_init (GtkModelButtonClass *class) g_object_unref (action); } -static void -close_submenus (GtkPopover *popover) -{ - GtkPopoverMenu *menu; - - if (GTK_IS_POPOVER_MENU (popover)) - { - GtkWidget *submenu; - - menu = GTK_POPOVER_MENU (popover); - submenu = gtk_popover_menu_get_open_submenu (menu); - if (submenu) - { - close_submenus (GTK_POPOVER (submenu)); - gtk_popover_popdown (GTK_POPOVER (submenu)); - gtk_popover_menu_set_open_submenu (menu, NULL); - } - } -} - static gboolean open_submenu (gpointer data) { @@ -1363,7 +1343,7 @@ open_submenu (gpointer data) GtkWidget *submenu = button->popover; if (gtk_popover_menu_get_open_submenu (GTK_POPOVER_MENU (popover)) != submenu) - close_submenus (popover); + gtk_popover_menu_close_submenus (GTK_POPOVER_MENU (popover)); gtk_popover_popup (GTK_POPOVER (submenu)); gtk_popover_menu_set_open_submenu (GTK_POPOVER_MENU (popover), submenu); diff --git a/gtk/gtkpopovermenu.c b/gtk/gtkpopovermenu.c index c3f39ed0ce..d6e5f91887 100644 --- a/gtk/gtkpopovermenu.c +++ b/gtk/gtkpopovermenu.c @@ -189,6 +189,20 @@ gtk_popover_menu_set_open_submenu (GtkPopoverMenu *menu, menu->open_submenu = submenu; } +void +gtk_popover_menu_close_submenus (GtkPopoverMenu *menu) +{ + GtkWidget *submenu; + + submenu = menu->open_submenu; + if (submenu) + { + gtk_popover_menu_close_submenus (GTK_POPOVER_MENU (submenu)); + gtk_widget_hide (submenu); + gtk_popover_menu_set_open_submenu (menu, NULL); + } +} + GtkWidget * gtk_popover_menu_get_active_item (GtkPopoverMenu *menu) { diff --git a/gtk/gtkpopovermenuprivate.h b/gtk/gtkpopovermenuprivate.h index 6c3da47950..4e69627ad4 100644 --- a/gtk/gtkpopovermenuprivate.h +++ b/gtk/gtkpopovermenuprivate.h @@ -28,6 +28,8 @@ void gtk_popover_menu_set_active_item (GtkPopoverMenu *menu, GtkWidget *gtk_popover_menu_get_open_submenu (GtkPopoverMenu *menu); void gtk_popover_menu_set_open_submenu (GtkPopoverMenu *menu, GtkWidget *submenu); +void gtk_popover_menu_close_submenus (GtkPopoverMenu *menu); + GtkWidget *gtk_popover_menu_get_parent_menu (GtkPopoverMenu *menu); void gtk_popover_menu_set_parent_menu (GtkPopoverMenu *menu, GtkWidget *parent);