[nautilus] canvas-item: use gtk_render_icon_surface for the DnD surface



commit 31059f33c85ba261056ee501b7c3fe627b8fb463
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Mon Aug 5 16:48:16 2013 +0200

    canvas-item: use gtk_render_icon_surface for the DnD surface
    
    So to get HiDpi support.

 libnautilus-private/nautilus-canvas-item.c |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)
---
diff --git a/libnautilus-private/nautilus-canvas-item.c b/libnautilus-private/nautilus-canvas-item.c
index b976fe5..009334b 100644
--- a/libnautilus-private/nautilus-canvas-item.c
+++ b/libnautilus-private/nautilus-canvas-item.c
@@ -461,6 +461,7 @@ nautilus_canvas_item_get_drag_surface (NautilusCanvasItem *item)
        double item_x, item_y;
        cairo_t *cr;
        GtkStyleContext *context;
+       cairo_surface_t *drag_surface;
        
        g_return_val_if_fail (NAUTILUS_IS_CANVAS_ITEM (item), NULL);
 
@@ -485,13 +486,17 @@ nautilus_canvas_item_get_drag_surface (NautilusCanvasItem *item)
        width = EEL_CANVAS_ITEM (item)->x2 - EEL_CANVAS_ITEM (item)->x1;
        height = EEL_CANVAS_ITEM (item)->y2 - EEL_CANVAS_ITEM (item)->y1;
 
-        surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
-                                             width, height);
-
+        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);
 
        get_scaled_icon_size (item, &pix_width, &pix_height);
 


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