changeset 1178:0a48149e93b9

Ok so gdk_cairo_set_source_window() is only available in GTK 2.24 and higher... So cairo window sources are not available in lower than 2.24. Also had to add support for pixmaps as sources for Cairo... which works except it currently does not support the clipping mask, so no transparency yet.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 19 Sep 2011 21:31:36 +0000
parents c38ec904b6d3
children ebe0d27f6705
files gtk/dw.c
diffstat 1 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/gtk/dw.c	Mon Sep 19 21:09:58 2011 +0000
+++ b/gtk/dw.c	Mon Sep 19 21:31:36 2011 +0000
@@ -8459,7 +8459,7 @@
    int _locked_by_me = FALSE;
    cairo_t *cr = NULL;
 
-   if((!dest && (!destp || !destp->image)) || (!src && (!srcp || !srcp->image)))
+   if((!dest && (!destp || !destp->image)) || (!src && (!srcp || (!srcp->image && !srcp->pixmap))))
       return;
 
    DW_MUTEX_LOCK;
@@ -8474,15 +8474,20 @@
       }
       cr = gdk_cairo_create(window);
    }
-   else if(destp)
+   else if(destp && destp->image)
       cr = cairo_create(destp->image);
 
    if(cr)
    {
+#if GTK_CHECK_VERSION(2,24,0)
       if(src)
          gdk_cairo_set_source_window (cr, gtk_widget_get_window(src), xdest -xsrc, ydest - ysrc);
-      else if(srcp)
+      else
+#endif
+      if(srcp && srcp->image)
          cairo_set_source_surface (cr, srcp->image, xdest - xsrc, ydest - ysrc);
+      else if(srcp && srcp->pixmap)
+         gdk_cairo_set_source_pixmap (cr, srcp->pixmap, xdest - xsrc, ydest - ysrc);
 
       cairo_rectangle(cr, xdest, ydest, width, height);
       cairo_fill(cr);