diff --git a/gtk/gtkpopoverbar.c b/gtk/gtkpopoverbar.c index 657eeb63f6..49c1337455 100644 --- a/gtk/gtkpopoverbar.c +++ b/gtk/gtkpopoverbar.c @@ -390,35 +390,6 @@ tracker_insert (GtkMenuTrackerItem *item, g_warning ("Don't know how to handle this item"); } -static void -gtk_popover_bar_set_menu_model (GtkPopoverBar *bar, - GMenuModel *model) -{ - if (g_set_object (&bar->model, model)) - { - GtkWidget *child; - GtkActionMuxer *muxer; - - while ((child = gtk_widget_get_first_child (GTK_WIDGET (bar)))) - gtk_widget_destroy (child); - - g_clear_pointer (&bar->tracker, gtk_menu_tracker_free); - - muxer = _gtk_widget_get_action_muxer (GTK_WIDGET (bar), TRUE); - bar->tracker = gtk_menu_tracker_new (GTK_ACTION_OBSERVABLE (muxer), - model, - FALSE, - TRUE, - FALSE, - NULL, - tracker_insert, - tracker_remove, - bar); - - g_object_notify_by_pspec (G_OBJECT (bar), bar_props[PROP_MENU_MODEL]); - } -} - static void gtk_popover_bar_set_property (GObject *object, guint property_id, @@ -526,3 +497,43 @@ gtk_popover_bar_new_from_model (GMenuModel *model) "menu-model", model, NULL); } + +void +gtk_popover_bar_set_menu_model (GtkPopoverBar *bar, + GMenuModel *model) +{ + g_return_if_fail (GTK_IS_POPOVER_BAR (bar)); + g_return_if_fail (G_IS_MENU_MODEL (model)); + + if (g_set_object (&bar->model, model)) + { + GtkWidget *child; + GtkActionMuxer *muxer; + + while ((child = gtk_widget_get_first_child (GTK_WIDGET (bar)))) + gtk_widget_destroy (child); + + g_clear_pointer (&bar->tracker, gtk_menu_tracker_free); + + muxer = _gtk_widget_get_action_muxer (GTK_WIDGET (bar), TRUE); + bar->tracker = gtk_menu_tracker_new (GTK_ACTION_OBSERVABLE (muxer), + model, + FALSE, + TRUE, + FALSE, + NULL, + tracker_insert, + tracker_remove, + bar); + + g_object_notify_by_pspec (G_OBJECT (bar), bar_props[PROP_MENU_MODEL]); + } +} + +GMenuModel * +gtk_popover_bar_get_menu_model (GtkPopoverBar *bar) +{ + g_return_val_if_fail (GTK_IS_POPOVER_BAR (bar), NULL); + + return bar->model; +} diff --git a/gtk/gtkpopoverbar.h b/gtk/gtkpopoverbar.h index 5b74e0bd96..eca22b5828 100644 --- a/gtk/gtkpopoverbar.h +++ b/gtk/gtkpopoverbar.h @@ -36,10 +36,16 @@ G_BEGIN_DECLS typedef struct _GtkPopoverBar GtkPopoverBar; GDK_AVAILABLE_IN_ALL -GType gtk_popover_bar_get_type (void) G_GNUC_CONST; +GType gtk_popover_bar_get_type (void) G_GNUC_CONST; GDK_AVAILABLE_IN_ALL -GtkWidget* gtk_popover_bar_new_from_model (GMenuModel *model); +GtkWidget * gtk_popover_bar_new_from_model (GMenuModel *model); + +GDK_AVAILABLE_IN_ALL +void gtk_popover_bar_set_menu_model (GtkPopoverBar *bar, + GMenuModel *model); +GDK_AVAILABLE_IN_ALL +GMenuModel * gtk_popover_bar_get_menu_model (GtkPopoverBar *bar); G_END_DECLS