[gtk+/client-side-windows: 61/284] Don't remove composited childrens area when processing updates



commit a38e79794133e66c134c8fcd011bf9c1f1a4a7f0
Author: Alexander Larsson <alexl redhat com>
Date:   Wed Dec 17 19:45:56 2008 +0100

    Don't remove composited childrens area when processing updates
    Handle shape when processing updates
    Make sure we reset the old clips before setting new cairo clips
---
 gdk/gdkwindow.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 01e4ef7..392a515 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -3986,6 +3986,8 @@ gdk_window_set_cairo_clip (GdkDrawable *drawable,
     {
       cairo_save (cr);
       cairo_identity_matrix (cr);
+
+      cairo_reset_clip (cr);
       
       cairo_new_path (cr);
       gdk_cairo_region (cr, private->clip_region);
@@ -4004,6 +4006,8 @@ gdk_window_set_cairo_clip (GdkDrawable *drawable,
 	  cairo_save (cr);
 	  cairo_identity_matrix (cr);
 	  
+	  cairo_reset_clip (cr);
+	  
 	  cairo_new_path (cr);
 	  gdk_cairo_region (cr, paint->region);
 	  cairo_restore (cr);
@@ -4166,7 +4170,7 @@ gdk_window_process_updates_recurse (GdkWindow *window,
     {
       child = l->data;
       
-      if (!GDK_WINDOW_IS_MAPPED (child) || child->input_only)
+      if (!GDK_WINDOW_IS_MAPPED (child) || child->input_only || child->composited)
 	continue;
 
       /* Ignore offscreen children, as they don't draw in their parent and
@@ -4180,7 +4184,9 @@ gdk_window_process_updates_recurse (GdkWindow *window,
       r.height = child->height;
       
       child_region = gdk_region_rectangle (&r);
-      
+      if (child->shape)
+	gdk_region_intersect (child_region, child->shape);
+	
       if (child->impl == private->impl) 
 	{
 	  /* Client side child, expose */



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