diff options
author | Benjamin Otte <otte@redhat.com> | 2018-04-22 02:46:00 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2018-04-22 02:57:47 +0200 |
commit | 7a09cd4cdaff9c5643ad0e3e212cb2acb8ba9fde (patch) | |
tree | f075ef1ce871e440e66d0e1d3b79532bcd6628a8 | |
parent | c5bcc47ce798a160aa851b623ed9411f1e461f62 (diff) | |
download | gtk+-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.c | 4 |
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) |