From 043ca236f2f9678638e05b435bdf675f80b631b1 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 13 Aug 2009 13:32:17 +0200 Subject: [PATCH] Invalidate old source in gdk_window_move_region When we copy the region we need to also re-expose the areas of the copied region that was not also in the destination. And, we need to do this invalidation after the move, as the move also moves any invalid area. --- gdk/gdkwindow.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 04d8010061..211d672434 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -6960,17 +6960,19 @@ gdk_window_move_region (GdkWindow *window, gdk_region_offset (copy_area, dx, dy); gdk_region_intersect (copy_area, private->clip_region_with_children); - /* invalidate parts of the region not covered by the copy */ + /* Invalidate parts of the region (source and dest) not covered + by the copy */ nocopy_area = gdk_region_copy (region); gdk_region_offset (nocopy_area, dx, dy); + gdk_region_union (nocopy_area, region); gdk_region_subtract (nocopy_area, copy_area); - gdk_window_invalidate_region (window, nocopy_area, FALSE); - gdk_region_destroy (nocopy_area); /* convert from window coords to impl */ gdk_region_offset (copy_area, private->abs_x, private->abs_y); - move_region_on_impl (impl_window, copy_area, dx, dy); /* Takes ownership of copy_area */ + + gdk_window_invalidate_region (window, nocopy_area, FALSE); + gdk_region_destroy (nocopy_area); } /**