[gtk+/wip/simple-draw3] gdkwindow: Send unclipped invalidate requests to invalidate handler



commit 76add3ec3968ee9cd159bb4f705f1d9bdb33d523
Author: Alexander Larsson <alexl redhat com>
Date:   Thu May 2 14:55:59 2013 +0200

    gdkwindow: Send unclipped invalidate requests to invalidate handler
    
    This way we can handle buffering caches outside a window. For instance
    in the treeview which has a bin_window which is just the size of the
    viewport.

 gdk/gdkwindow.c |   15 +++++++--------
 1 files changed, 7 insertions(+), 8 deletions(-)
---
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 15b2a89..39ccda0 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -3774,11 +3774,8 @@ gdk_window_invalidate_maybe_recurse_full (GdkWindow            *window,
 
   r.x = 0;
   r.y = 0;
-  r.width = window->width;
-  r.height = window->height;
 
   visible_region = cairo_region_copy (region);
-  cairo_region_intersect_rectangle (visible_region, &r);
 
   invalidate_impl_subwindows (window, region, child_func, user_data, 0, 0);
 
@@ -3788,6 +3785,13 @@ gdk_window_invalidate_maybe_recurse_full (GdkWindow            *window,
   while (window != NULL && 
         !cairo_region_is_empty (visible_region))
     {
+      if (window->invalidate_handler)
+       window->invalidate_handler (window, visible_region);
+
+      r.width = window->width;
+      r.height = window->height;
+      cairo_region_intersect_rectangle (visible_region, &r);
+
       if (gdk_window_has_impl (window))
        {
          impl_window_add_update_area (window, visible_region);
@@ -3795,14 +3799,9 @@ gdk_window_invalidate_maybe_recurse_full (GdkWindow            *window,
        }
       else
        {
-         if (window->invalidate_handler)
-           window->invalidate_handler (window, visible_region);
          cairo_region_translate (visible_region,
                                  window->x, window->y);
          window = window->parent;
-         r.width = window->width;
-         r.height = window->height;
-         cairo_region_intersect_rectangle (visible_region, &r);
        }
     }
 


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