From 5eaebde394ba755b1f614c7d0e7c5513cf531493 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 18 Feb 2014 22:43:04 -0500 Subject: Add map/unmap to GtkActionBar The recursion in map needs to follow the actual physical widget tree, otherwise we violate invariants. The generic container map implementation uses gtk_container_forall to operate on the children, and thus is not suitable for containers where the children are inside some internal container. --- gtk/gtkactionbar.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'gtk/gtkactionbar.c') diff --git a/gtk/gtkactionbar.c b/gtk/gtkactionbar.c index 14faa134c4..012e4d10c9 100644 --- a/gtk/gtkactionbar.c +++ b/gtk/gtkactionbar.c @@ -137,6 +137,24 @@ gtk_action_bar_forall (GtkContainer *container, gtk_container_forall (GTK_CONTAINER (priv->center_box), callback, callback_data); } +static void +gtk_action_bar_map (GtkWidget *widget) +{ + GtkActionBarPrivate *priv = gtk_action_bar_get_instance_private (GTK_ACTION_BAR (widget)); + + gtk_widget_set_mapped (widget, TRUE); + gtk_widget_map (priv->revealer); +} + +static void +gtk_action_bar_unmap (GtkWidget *widget) +{ + GtkActionBarPrivate *priv = gtk_action_bar_get_instance_private (GTK_ACTION_BAR (widget)); + + gtk_widget_set_mapped (widget, FALSE); + gtk_widget_unmap (priv->revealer); +} + static GType gtk_action_bar_child_type (GtkContainer *container) { @@ -200,6 +218,8 @@ gtk_action_bar_class_init (GtkActionBarClass *klass) widget_class->show = gtk_action_bar_show; widget_class->hide = gtk_action_bar_hide; + widget_class->map = gtk_action_bar_map; + widget_class->unmap = gtk_action_bar_unmap; container_class->add = gtk_action_bar_add; container_class->remove = gtk_action_bar_remove; -- cgit v1.2.1