summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Müllner <fmuellner@gnome.org>2016-05-21 00:07:10 +0200
committerMatthias Clasen <mclasen@redhat.com>2016-05-23 07:58:42 -0400
commit458c0b95257ec00791cdda4a2d04f64bafbb6e63 (patch)
treee3619ae92fc5e51970a5a7007d8ca03b35b49b80
parenta2d723c13391e560cce7e5aed62554114f346c83 (diff)
downloadgtk+-458c0b95257ec00791cdda4a2d04f64bafbb6e63.tar.gz
stack: Only map children when necessary
gtk_widget_set_parent() will map the widget if the parent is mapped and the widget is both visible and child-visible. As we currently only set the child visibility after adding the child, we immediately map all children that are added to a mapped stack, even when they are not actually shown. Avoid this by setting the child visibility before adding the child, so widgets are only mapped when shown. https://bugzilla.gnome.org/show_bug.cgi?id=766737
-rw-r--r--gtk/gtkstack.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/gtk/gtkstack.c b/gtk/gtkstack.c
index b691b65b68..13ae25d236 100644
--- a/gtk/gtkstack.c
+++ b/gtk/gtkstack.c
@@ -1283,6 +1283,7 @@ gtk_stack_add (GtkContainer *container,
priv->children = g_list_append (priv->children, child_info);
+ gtk_widget_set_child_visible (child, FALSE);
gtk_widget_set_parent_window (child, priv->bin_window);
gtk_widget_set_parent (child, GTK_WIDGET (stack));
@@ -1299,8 +1300,6 @@ gtk_stack_add (GtkContainer *container,
if (priv->visible_child == NULL &&
gtk_widget_get_visible (child))
set_visible_child (stack, child_info, priv->transition_type, priv->transition_duration);
- else
- gtk_widget_set_child_visible (child, FALSE);
if (priv->hhomogeneous || priv->vhomogeneous || priv->visible_child == child_info)
gtk_widget_queue_resize (GTK_WIDGET (stack));