[gtk+] Fix cairo clipping to client side windows



commit 7cc8cf2888f8a295b0f348095e818c5495523e58
Author: Alexander Larsson <alexl redhat com>
Date:   Tue Aug 25 15:43:52 2009 +0200

    Fix cairo clipping to client side windows
    
    When updating the clip region on cairo context (due to window changes or
    paints of different sizes) we reset the old clip region, but this was
    erronously done inside a cairo_save/cairo_restore pair, which made the
    reset not take effect.
    
    This fixes bug #592263.

 gdk/gdkwindow.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)
---
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 7ca6c3c..195ba3e 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -4602,11 +4602,11 @@ gdk_window_set_cairo_clip (GdkDrawable *drawable,
 
   if (!private->paint_stack)
     {
+      cairo_reset_clip (cr);
+
       cairo_save (cr);
       cairo_identity_matrix (cr);
 
-      cairo_reset_clip (cr);
-
       cairo_new_path (cr);
       gdk_cairo_region (cr, private->clip_region_with_children);
 
@@ -4619,13 +4619,12 @@ gdk_window_set_cairo_clip (GdkDrawable *drawable,
 
       /* Only needs to clip to region if piggybacking
 	 on an implicit paint pixmap */
+      cairo_reset_clip (cr);
       if (paint->uses_implicit)
 	{
 	  cairo_save (cr);
 	  cairo_identity_matrix (cr);
 
-	  cairo_reset_clip (cr);
-
 	  cairo_new_path (cr);
 	  gdk_cairo_region (cr, paint->region);
 	  cairo_restore (cr);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]