mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-11 05:00:07 +00:00
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
This commit is contained in:
parent
f70039cb96
commit
57f551a114
@ -2245,6 +2245,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)
|
||||
{
|
||||
@ -2284,17 +2293,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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user