summaryrefslogtreecommitdiff
path: root/gtk/gtkdragicon.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkdragicon.c')
-rw-r--r--gtk/gtkdragicon.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/gtk/gtkdragicon.c b/gtk/gtkdragicon.c
index b8b31671f9..a58cf474dc 100644
--- a/gtk/gtkdragicon.c
+++ b/gtk/gtkdragicon.c
@@ -31,7 +31,9 @@
/* for the drag icons */
#include "gtkcolorswatchprivate.h"
+#include "gtkimage.h"
#include "gtklabel.h"
+#include "gtkrendernodepaintableprivate.h"
#include "gtktextutil.h"
@@ -555,6 +557,25 @@ gtk_drag_icon_create_widget_for_value (const GValue *value)
return picture;
}
+ else if (G_VALUE_HOLDS (value, GSK_TYPE_RENDER_NODE))
+ {
+ GskRenderNode *node;
+ GdkPaintable *paintable;
+ graphene_rect_t bounds;
+ GtkWidget *image;
+
+ node = gsk_value_get_render_node (value);
+ if (node == NULL)
+ return NULL;
+
+ gsk_render_node_get_bounds (node, &bounds);
+ paintable = gtk_render_node_paintable_new (node, &bounds);
+ image = gtk_image_new_from_paintable (paintable);
+ gtk_image_set_icon_size (GTK_IMAGE (image), GTK_ICON_SIZE_LARGE);
+ g_object_unref (paintable);
+
+ return image;
+ }
else
{
return NULL;