diff options
| -rw-r--r-- | libcaja-private/caja-icon-canvas-item.c | 11 | 
1 files changed, 8 insertions, 3 deletions
| diff --git a/libcaja-private/caja-icon-canvas-item.c b/libcaja-private/caja-icon-canvas-item.c index 397420e9..88908196 100644 --- a/libcaja-private/caja-icon-canvas-item.c +++ b/libcaja-private/caja-icon-canvas-item.c @@ -515,6 +515,7 @@ caja_icon_canvas_item_get_drag_surface (CajaIconCanvasItem *item)      gboolean is_rtl;      cairo_t *cr;      GtkStyleContext *context; +    cairo_surface_t *drag_surface;      g_return_val_if_fail (CAJA_IS_ICON_CANVAS_ITEM (item), NULL); @@ -540,14 +541,18 @@ caja_icon_canvas_item_get_drag_surface (CajaIconCanvasItem *item)      width = EEL_CANVAS_ITEM (item)->x2 - EEL_CANVAS_ITEM (item)->x1;      height = EEL_CANVAS_ITEM (item)->y2 - EEL_CANVAS_ITEM (item)->y1; -    surface = gdk_window_create_similar_surface (gdk_screen_get_root_window (screen), +    surface = gdk_window_create_similar_surface (gtk_widget_get_window (GTK_WIDGET (canvas)),      						 CAIRO_CONTENT_COLOR_ALPHA,      						 width, height);      cr = cairo_create (surface); -    gtk_render_icon (context, cr, item->details->pixbuf, -                     item_offset_x, item_offset_y); +    drag_surface = gdk_cairo_surface_create_from_pixbuf (item->details->pixbuf, +                                                         gtk_widget_get_scale_factor (GTK_WIDGET (canvas)), +                                                         gtk_widget_get_window (GTK_WIDGET (canvas))); +    gtk_render_icon_surface (context, cr, drag_surface, +                             item_offset_x, item_offset_y); +    cairo_surface_destroy (drag_surface);      icon_rect.x0 = item_offset_x; | 
