[gtk+/rendering-cleanup: 48/141] menu: set tearoff background using new background API



commit e57a79f648b8f22227de0f525da796fbf1487f5b
Author: Benjamin Otte <otte redhat com>
Date:   Sun Aug 15 14:41:29 2010 +0200

    menu: set tearoff background using new background API

 gtk/gtkmenu.c |   20 ++++++++++++--------
 1 files changed, 12 insertions(+), 8 deletions(-)
---
diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c
index 0a4575c..6bc4644 100644
--- a/gtk/gtkmenu.c
+++ b/gtk/gtkmenu.c
@@ -1342,8 +1342,9 @@ gtk_menu_tearoff_bg_copy (GtkMenu *menu)
 
   if (menu->torn_off)
     {
-      GdkPixmap *pixmap;
       GdkWindow *window;
+      cairo_surface_t *surface;
+      cairo_pattern_t *pattern;
       cairo_t *cr;
 
       menu->tearoff_active = FALSE;
@@ -1353,12 +1354,12 @@ gtk_menu_tearoff_bg_copy (GtkMenu *menu)
 
       gdk_drawable_get_size (window, &width, &height);
 
-      pixmap = gdk_pixmap_new (window,
-			       width,
-			       height,
-			       -1);
+      surface = gdk_window_create_similar_surface (window,
+                                                   CAIRO_CONTENT_COLOR,
+                                                   width,
+                                                   height);
 
-      cr = gdk_cairo_create (pixmap);
+      cr = cairo_create (surface);
       /* Let's hope that function never notices we're not passing it a pixmap */
       gdk_cairo_set_source_pixmap (cr,
                                    window,
@@ -1370,8 +1371,11 @@ gtk_menu_tearoff_bg_copy (GtkMenu *menu)
 				   width,
 				   height);
 
-      gdk_window_set_back_pixmap (window, pixmap, FALSE);
-      g_object_unref (pixmap);
+      pattern = cairo_pattern_create_for_surface (surface);
+      gdk_window_set_background_pattern (window, pattern);
+
+      cairo_pattern_destroy (pattern);
+      cairo_surface_destroy (surface);
     }
 }
 



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