}
}
+static void
+gtk_widget_ensure_allocate_on_children (GtkWidget *widget)
+{
+ GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
+ GtkWidget *child;
+
+ g_assert (!priv->resize_needed);
+ g_assert (!priv->alloc_needed);
+
+ if (!priv->alloc_needed_on_child)
+ return;
+
+ priv->alloc_needed_on_child = FALSE;
+
+ for (child = _gtk_widget_get_first_child (widget);
+ child != NULL;
+ child = _gtk_widget_get_next_sibling (child))
+ {
+ gtk_widget_ensure_allocate (child);
+ }
+}
+
/**
* gtk_widget_allocate:
* @widget: A `GtkWidget`
if (!alloc_needed && !size_changed && !baseline_changed)
{
- gtk_widget_ensure_allocate (widget);
+ gtk_widget_ensure_allocate_on_children (widget);
goto skip_allocate;
}
priv->allocated_size_baseline,
gsk_transform_ref (priv->allocated_transform));
}
- else if (priv->alloc_needed_on_child)
+ else
{
- GtkWidget *child;
-
- priv->alloc_needed_on_child = FALSE;
-
- for (child = _gtk_widget_get_first_child (widget);
- child != NULL;
- child = _gtk_widget_get_next_sibling (child))
- {
- gtk_widget_ensure_allocate (child);
- }
+ gtk_widget_ensure_allocate_on_children (widget);
}
}