From f4d9e4032fe1157dd90b6c2b462246c2c16a1ec6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= Date: Wed, 22 Jul 2020 07:10:59 +0200 Subject: [PATCH] widget: Compare proper adjusted size to new size when allocating We were comparing first but then still modifying the adjusted size later on, leading to unnecessary resizes. --- gtk/gtkwidget.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index e02699a336..1ff5ed00f9 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -3834,7 +3834,6 @@ gtk_widget_allocate (GtkWidget *widget, gtk_widget_adjust_size_allocation (widget, &adjusted); - size_changed = (priv->width != adjusted.width) || (priv->height != adjusted.height); if (adjusted.width < 0 || adjusted.height < 0) { @@ -3885,15 +3884,16 @@ gtk_widget_allocate (GtkWidget *widget, if (priv->surface_transform_data) sync_widget_surface_transform (widget); - if (!alloc_needed && !size_changed && !baseline_changed) - goto skip_allocate; - /* Since gtk_widget_measure does it for us, we can be sure here that * the given alloaction is large enough for the css margin/bordder/padding */ adjusted.width -= border.left + padding.left + border.right + padding.right; adjusted.height -= border.top + padding.top + border.bottom + padding.bottom; + size_changed = (priv->width != adjusted.width) || (priv->height != adjusted.height); + + if (!alloc_needed && !size_changed && !baseline_changed) + goto skip_allocate; priv->width = adjusted.width; priv->height = adjusted.height;