forked from AuroraMiddleware/gtk
sizegroup: Skip resizes on widgets that have resize queued
Widgets that already have a resize queued don't need to walk the whole parent chain and queue another resize. It's enough to do it once per resize. This also means that sizegroups cannot use the shortcut of just invalidating the first widget in the group anymore. That widget might already have a resize queued while others don't.
This commit is contained in:
parent
a4587ef4a0
commit
a31123e9f0
@ -217,6 +217,9 @@ queue_resize_on_widget (GtkWidget *widget,
|
||||
|
||||
do
|
||||
{
|
||||
if (gtk_widget_get_resize_needed (parent))
|
||||
return;
|
||||
|
||||
gtk_widget_queue_resize_on_widget (parent);
|
||||
|
||||
if (!check_siblings || _gtk_widget_get_sizegroups (parent) == NULL)
|
||||
@ -268,9 +271,12 @@ static void
|
||||
queue_resize_on_group (GtkSizeGroup *size_group)
|
||||
{
|
||||
GtkSizeGroupPrivate *priv = size_group->priv;
|
||||
GSList *list;
|
||||
|
||||
if (priv->widgets)
|
||||
queue_resize_on_widget (priv->widgets->data, TRUE);
|
||||
for (list = priv->widgets; list; list = list->next)
|
||||
{
|
||||
gtk_widget_queue_resize (list->data);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -7686,6 +7686,7 @@ gtk_window_configure_event (GtkWidget *widget,
|
||||
priv->configure_notify_received = TRUE;
|
||||
|
||||
gtk_widget_queue_resize (widget);
|
||||
gtk_container_queue_resize_handler (GTK_CONTAINER (widget));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user