summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2018-04-22 02:46:00 +0200
committerBenjamin Otte <otte@redhat.com>2018-04-22 02:57:47 +0200
commit7a09cd4cdaff9c5643ad0e3e212cb2acb8ba9fde (patch)
treef075ef1ce871e440e66d0e1d3b79532bcd6628a8
parentc5bcc47ce798a160aa851b623ed9411f1e461f62 (diff)
downloadgtk+-7a09cd4cdaff9c5643ad0e3e212cb2acb8ba9fde.tar.gz
widget: Position changes don't require a redraw
Well, they don't require a redraw of the widget, because the widget itself didn't change. They require a redraw of the parent, because that now displays the widget in a different position. And this means we can keep the cache of the widget's render node. My fishbowl numbers are through the roof^W water surface. Vulkan gets 4000 now.
-rw-r--r--gtk/gtkwidget.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index a2ec1fe369..9dc5dd55ff 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -4355,8 +4355,10 @@ gtk_widget_size_allocate (GtkWidget *widget,
gtk_widget_invalidate_paintable_size (widget);
check_clip:
- if (position_changed || size_changed || baseline_changed)
+ if (size_changed || baseline_changed)
gtk_widget_queue_draw (widget);
+ else if (position_changed && priv->parent)
+ gtk_widget_queue_draw (priv->parent);
out:
if (priv->alloc_needed_on_child)