diff options
Diffstat (limited to 'gtk/gtkmenu.c')
-rw-r--r-- | gtk/gtkmenu.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c index 3534937618..39c83f2e8b 100644 --- a/gtk/gtkmenu.c +++ b/gtk/gtkmenu.c @@ -1350,16 +1350,11 @@ gtk_menu_tearoff_bg_copy (GtkMenu *menu) if (menu->torn_off) { GdkPixmap *pixmap; - GdkGC *gc; - GdkGCValues gc_values; + cairo_t *cr; menu->tearoff_active = FALSE; menu->saved_scroll_offset = menu->scroll_offset; - gc_values.subwindow_mode = GDK_INCLUDE_INFERIORS; - gc = gdk_gc_new_with_values (widget->window, - &gc_values, GDK_GC_SUBWINDOW); - gdk_drawable_get_size (menu->tearoff_window->window, &width, &height); pixmap = gdk_pixmap_new (menu->tearoff_window->window, @@ -1367,10 +1362,13 @@ gtk_menu_tearoff_bg_copy (GtkMenu *menu) height, -1); - gdk_draw_drawable (pixmap, gc, - menu->tearoff_window->window, - 0, 0, 0, 0, -1, -1); - g_object_unref (gc); + cr = gdk_cairo_create (pixmap); + /* Let's hope that function never notices we're not passing it a pixmap */ + gdk_cairo_set_source_pixmap (cr, + menu->tearoff_window->window, + 0, 0); + cairo_paint (cr); + cairo_destroy (cr); gtk_widget_set_size_request (menu->tearoff_window, width, |