[gtk+/gtk-3-20] stack: Only map children when necessary



commit 458c0b95257ec00791cdda4a2d04f64bafbb6e63
Author: Florian Müllner <fmuellner gnome org>
Date:   Sat May 21 00:07:10 2016 +0200

    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

 gtk/gtkstack.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkstack.c b/gtk/gtkstack.c
index b691b65..13ae25d 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));


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]