diff options
author | Benjamin Otte <otte@redhat.com> | 2021-08-20 05:51:20 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2021-08-30 06:02:16 +0200 |
commit | 18affbd390abe4f31cb2480faf56bf6e6b3e37d8 (patch) | |
tree | d4df4d8d8fa78331db32e3516221c5b55933bf4b | |
parent | 0b7a36ce334f659df7fa99f8aca5b2fb0e0ae573 (diff) | |
download | gtk+-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.c | 21 |
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; |