popover bar: Add setters
Add setters/getters for the menu-model property.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user