summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorBenjamin Otte <otte.benjamin@googlemail.com>2023-03-08 18:23:50 +0000
committerMatthias Clasen <mclasen@redhat.com>2023-03-08 13:40:31 -0500
commitc8d356a2509db2f3da43fd13a4141dcaec3abf1e (patch)
tree1938e843933ffcbf116f31119c84cb418e6684b5 /gtk
parentffb7177c2e39f97f79fe2e1c7f770c4046234d5e (diff)
downloadgtk+-c8d356a2509db2f3da43fd13a4141dcaec3abf1e.tar.gz
widget: Split out gtk_widget_ensure_allocate_on_children()
allocate() should not be calling into ensure_allocate(), they do a similar job. In the end, the code does the same work, but it should be easier to follow now.
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkwidget.c37
1 files changed, 25 insertions, 12 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 274b507b7c..4a765edf36 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -3871,6 +3871,28 @@ gtk_widget_adjust_size_allocation (GtkWidget *widget,
}
}
+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`
@@ -4038,7 +4060,7 @@ gtk_widget_allocate (GtkWidget *widget,
if (!alloc_needed && !size_changed && !baseline_changed)
{
- gtk_widget_ensure_allocate (widget);
+ gtk_widget_ensure_allocate_on_children (widget);
goto skip_allocate;
}
@@ -10685,18 +10707,9 @@ gtk_widget_ensure_allocate (GtkWidget *widget)
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);
}
}