summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2021-08-20 05:51:20 +0200
committerBenjamin Otte <otte@redhat.com>2021-08-30 06:02:16 +0200
commit18affbd390abe4f31cb2480faf56bf6e6b3e37d8 (patch)
treed4df4d8d8fa78331db32e3516221c5b55933bf4b
parent0b7a36ce334f659df7fa99f8aca5b2fb0e0ae573 (diff)
downloadgtk+-18affbd390abe4f31cb2480faf56bf6e6b3e37d8.tar.gz
dragicon: Add a default drag icon for GskRenderNode
Somebody should make this default drag icon machinery pluggable.
-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;