gdk: when scrolling windows, use the correct source for copying from

Previously we were copying from the toplevel window unconditionally.
This is wrong in two cases:
1) composited windows
2) different visuals

So when encountering such a window in the hierarchy, we stop going up
and just use the latest window as the source.

https://bugzilla.gnome.org/show_bug.cgi?id=643416
This commit is contained in:
Benjamin Otte 2011-03-07 17:25:31 +01:00
parent 559cb5d8ab
commit 70715c377e

View File

@ -3240,7 +3240,9 @@ do_move_region_bits_on_impl (GdkWindowObject *impl_window,
* so we copy from the toplevel with INCLUDE_INFERIORS.
*/
private = impl_window;
while (!gdk_window_is_toplevel (private))
while (!gdk_window_is_toplevel (private) &&
!private->composited &&
gdk_drawable_get_visual ((GdkDrawable *) private) == gdk_drawable_get_visual ((GdkDrawable *) private->parent))
{
dx -= private->parent->abs_x + private->x;
dy -= private->parent->abs_y + private->y;