Commit 19c1c11322baa4fc8a1314b6550665414fdc4f60

Don't invalidate unnecessary areas on raise

We used to invalidate the whole window when raised, but this is
unnecessary much, we now just invalidate the visible area minus the
previously visible area.

This also fixes a problem where expose calling raise caused a loop (#588438)
  
59785978gdk_window_raise (GdkWindow *window)
59795979{
59805980 GdkWindowObject *private;
5981 GdkRegion *old_region, *new_region;
59815982
59825983 g_return_if_fail (GDK_IS_WINDOW (window));
59835984
59865986 if (private->destroyed)
59875987 return;
59885988
5989 old_region = NULL;
5990 if (gdk_window_is_viewable (window) &&
5991 !private->input_only)
5992 old_region = gdk_region_copy (private->clip_region);
5993
59895994 /* Keep children in (reverse) stacking order */
59905995 gdk_window_raise_internal (window);
59915996
59925997 recompute_visible_regions (private, TRUE, FALSE);
59935998
5994 gdk_window_invalidate_rect (window, NULL, TRUE);
5999 if (old_region)
6000 {
6001 new_region = gdk_region_copy (private->clip_region);
6002
6003 gdk_region_subtract (new_region, old_region);
6004 gdk_window_invalidate_region (window, new_region, TRUE);
6005
6006 gdk_region_destroy (old_region);
6007 gdk_region_destroy (new_region);
6008 }
59956009}
59966010
59976011static void