From a864855c4cb1a9eab4df123d4bedcdad167e3813 Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Mon, 5 Aug 2013 16:48:16 +0200 Subject: [PATCH] canvas-item: use gtk_render_icon_surface for the DnD surface So to get HiDpi support. origin commit: https://gitlab.gnome.org/GNOME/nautilus/commit/31059f33 --- libcaja-private/caja-icon-canvas-item.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libcaja-private/caja-icon-canvas-item.c b/libcaja-private/caja-icon-canvas-item.c index 397420e9d..88908196b 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;