From d671fdab7c832ccb0ca48cc5fd0c6823a69b2349 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 8 Mar 2023 13:06:53 -0500 Subject: [PATCH] widget: Simplify size allocation Don't call ensure_allocate if we've just done size_allocate. This makes criticals from reshowing popovers go away. --- gtk/gtkwidget.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 00e1f63af3..d8b2b7667f 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -4020,7 +4020,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; @@ -4068,9 +4071,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); }