[gtk+] gtkstack: reorder size_allocate and move_window



commit 03b8a8a880561fc4389dfd648477905ee6cfbecb
Author: Olivier Fourdan <ofourdan redhat com>
Date:   Wed Nov 2 10:08:17 2016 +0100

    gtkstack: reorder size_allocate and move_window
    
    Unlike other container widgets, GtkStack would allocate its children
    prior to moving its windows, which might prevent further valid size
    allocation signals to be emitted.
    
    Re-order the size allocation of child widgets to be performed after
    moving the GtkStack windows.
    
    Thanks to Owen for spotting the real issue here.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=767713

 gtk/gtkstack.c |   20 +++++++++-----------
 1 files changed, 9 insertions(+), 11 deletions(-)
---
diff --git a/gtk/gtkstack.c b/gtk/gtkstack.c
index 7416718..22a1099 100644
--- a/gtk/gtkstack.c
+++ b/gtk/gtkstack.c
@@ -2226,6 +2226,15 @@ gtk_stack_allocate (GtkCssGadget        *gadget,
   child_allocation.x = 0;
   child_allocation.y = 0;
 
+  if (gtk_widget_get_realized (widget))
+    {
+      gdk_window_move_resize (priv->view_window,
+                              allocation->x, allocation->y,
+                              allocation->width, allocation->height);
+      gdk_window_move_resize (priv->bin_window,
+                              get_bin_window_x (stack, allocation), get_bin_window_y (stack, allocation),
+                              allocation->width, allocation->height);
+    }
 
   if (priv->last_visible_child)
     {
@@ -2288,17 +2297,6 @@ gtk_stack_allocate (GtkCssGadget        *gadget,
 
       gtk_widget_size_allocate (priv->visible_child->widget, &child_allocation);
     }
-
-   if (gtk_widget_get_realized (widget))
-    {
-      gdk_window_move_resize (priv->view_window,
-                              allocation->x, allocation->y,
-                              allocation->width, allocation->height);
-      gdk_window_move_resize (priv->bin_window,
-                              get_bin_window_x (stack, allocation), get_bin_window_y (stack, allocation),
-                              allocation->width, allocation->height);
-    }
-
   gtk_container_get_children_clip (GTK_CONTAINER (widget), out_clip);
 }
 static void


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