summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-03-08 13:06:53 -0500
committerMatthias Clasen <mclasen@redhat.com>2023-03-08 13:39:54 -0500
commitffb7177c2e39f97f79fe2e1c7f770c4046234d5e (patch)
tree3ba03c6ccc390409f3528ae885dba08045b51af9 /gtk
parent14a5c78d805ff712389ebf37d9f0fbaeda483aec (diff)
downloadgtk+-ffb7177c2e39f97f79fe2e1c7f770c4046234d5e.tar.gz
widget: Simplify size allocation
Don't call ensure_allocate if we've just done size_allocate. This makes criticals from reshowing popovers go away.
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkwidget.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index fd242a88eb..274b507b7c 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -4037,7 +4037,10 @@ gtk_widget_allocate (GtkWidget *widget,
size_changed = (priv->width != adjusted.width) || (priv->height != adjusted.height);
if (!alloc_needed && !size_changed && !baseline_changed)
- goto skip_allocate;
+ {
+ gtk_widget_ensure_allocate (widget);
+ goto skip_allocate;
+ }
priv->width = adjusted.width;
priv->height = adjusted.height;
@@ -4085,9 +4088,6 @@ skip_allocate:
gtk_widget_queue_draw (priv->parent);
out:
- if (priv->alloc_needed_on_child)
- gtk_widget_ensure_allocate (widget);
-
gtk_widget_pop_verify_invariants (widget);
}