]> www.fi.muni.cz Git - evince.git/commitdiff
[libview] Use gtk_widget_shape_combine_region
authorChristian Persch <chpe@gnome.org>
Sat, 11 Sep 2010 21:43:51 +0000 (23:43 +0200)
committerChristian Persch <chpe@gnome.org>
Sun, 26 Sep 2010 14:44:38 +0000 (16:44 +0200)
libview/ev-loading-window.c

index c04933b57e4df46a12bb3142a85e0cf43c31500a..5ed0c7089a42f15d69db883f906c9d31d1499d27 100644 (file)
@@ -177,7 +177,10 @@ ev_loading_window_size_allocate (GtkWidget      *widget,
                                 GtkAllocation  *allocation)
 {
        EvLoadingWindow *window = EV_LOADING_WINDOW (widget);
-       GdkPixmap       *mask;
+#if GTK_CHECK_VERSION (2, 90, 8)
+        cairo_surface_t *surface;
+        cairo_region_t *shape;
+#endif
        cairo_t         *cr;
        double           r;
 
@@ -189,8 +192,15 @@ ev_loading_window_size_allocate (GtkWidget      *widget,
        window->width = allocation->width;
        window->height = allocation->height;
 
-       mask = gdk_pixmap_new (NULL, window->width, window->height, 1);
-       cr = gdk_cairo_create (GDK_DRAWABLE (mask));
+#if GTK_CHECK_VERSION (2, 90, 8)
+        surface = cairo_image_surface_create (CAIRO_FORMAT_A8,
+                                              window->width,
+                                              window->height);
+       cr = cairo_create (surface);
+#else
+        mask = gdk_pixmap_new (NULL, window->width, window->height, 1);
+        cr = gdk_cairo_create (GDK_DRAWABLE (mask));
+#endif
 
        cairo_save (cr);
        cairo_rectangle (cr, 0, 0, window->width, window->height);
@@ -205,8 +215,16 @@ ev_loading_window_size_allocate (GtkWidget      *widget,
 
        cairo_destroy (cr);
 
+#if GTK_CHECK_VERSION (2, 90, 8)
+        shape = gdk_cairo_region_create_from_surface (surface);
+        cairo_surface_destroy (surface);
+
+        gtk_widget_shape_combine_region (widget, shape);
+        cairo_region_destroy (shape);
+#else
        gtk_widget_shape_combine_mask (widget, mask, 0, 0);
        g_object_unref (mask);
+#endif
 }
 
 static void