[gtk+] Fix clipping of drawn pixbufs in the no-render case



commit 0ad0646dafed805a1fb7d8bed37301c1248a7591
Author: Alexander Larsson <alexl redhat com>
Date:   Tue Aug 25 08:57:10 2009 +0200

    Fix clipping of drawn pixbufs in the no-render case
    
    The fallback pixbuf rendering case ends up calling gdk_draw_image() on the
    destination drawable wrapper, which resets the previously set clip region.
    So, we need to manually get the impl and draw on that directly.
    
    This fixes bug 592752 where we don't clip pixbuf rendering on non-render
    Xservers.

 gdk/gdkdraw.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)
---
diff --git a/gdk/gdkdraw.c b/gdk/gdkdraw.c
index 8ab9464..041d94e 100644
--- a/gdk/gdkdraw.c
+++ b/gdk/gdkdraw.c
@@ -1638,12 +1638,14 @@ gdk_drawable_real_draw_pixbuf (GdkDrawable  *drawable,
      have already retargeted the destination to any
      impl window and set the clip, so what we really
      want to do is draw directly on the impl, ignoring
-     client side subwindows. */
+     client side subwindows. We also use the impl
+     in the pixmap target case to avoid resetting the
+     already set clip on the GC. */
   if (GDK_IS_WINDOW (drawable))
     real_drawable = GDK_WINDOW_OBJECT (drawable)->impl;
   else
-    real_drawable = drawable;
-  
+    real_drawable = GDK_PIXMAP_OBJECT (drawable)->impl;
+
   if (pixbuf->has_alpha)
     {
       GdkVisual *visual = gdk_drawable_get_visual (drawable);



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