diff options
author | Florian Müllner <fmuellner@gnome.org> | 2016-05-21 00:07:10 +0200 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2016-05-23 07:58:42 -0400 |
commit | 458c0b95257ec00791cdda4a2d04f64bafbb6e63 (patch) | |
tree | e3619ae92fc5e51970a5a7007d8ca03b35b49b80 | |
parent | a2d723c13391e560cce7e5aed62554114f346c83 (diff) | |
download | gtk+-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.c | 3 |
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)); |