diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-02-05 12:48:10 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-02-05 12:48:10 +0000 |
commit | 60ff231fac3da797372165ba27dbbfc8602cef7d (patch) | |
tree | aaed02fb31e09eed0da8600c6b01e63029216f1c | |
parent | 958005317bd0374159c32ecc067f934a2b50e718 (diff) | |
parent | 15c36aaa1e0c287518c7cd7d6c83b8ef2ef805c0 (diff) | |
download | gtk+-60ff231fac3da797372165ba27dbbfc8602cef7d.tar.gz |
Merge branch 'matthiasc/for-master' into 'master'
iconbrowser: Make image dnd work again
Closes #3648
See merge request GNOME/gtk!3159
-rw-r--r-- | demos/icon-browser/iconbrowserwin.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/demos/icon-browser/iconbrowserwin.c b/demos/icon-browser/iconbrowserwin.c index 876c09a0d1..11c9c53234 100644 --- a/demos/icon-browser/iconbrowserwin.c +++ b/demos/icon-browser/iconbrowserwin.c @@ -279,11 +279,31 @@ drag_prepare_texture (GtkDragSource *source, GtkWidget *widget) { GdkPaintable *paintable = get_image_paintable (GTK_IMAGE (widget)); + GtkSnapshot *snapshot; + double width, height; + GskRenderNode *node; + GskRenderer *renderer; + GdkTexture *texture; + GdkContentProvider *ret; if (!GDK_IS_PAINTABLE (paintable)) return NULL; - return gdk_content_provider_new_typed (GDK_TYPE_PAINTABLE, paintable); + snapshot = gtk_snapshot_new (); + width = gdk_paintable_get_intrinsic_width (paintable); + height = gdk_paintable_get_intrinsic_height (paintable); + gdk_paintable_snapshot (paintable, snapshot, width, height); + node = gtk_snapshot_free_to_node (snapshot); + + renderer = gtk_native_get_renderer (gtk_widget_get_native (widget)); + texture = gsk_renderer_render_texture (renderer, node, &GRAPHENE_RECT_INIT (0, 0, width, height)); + + ret = gdk_content_provider_new_typed (GDK_TYPE_TEXTURE, texture); + + g_object_unref (texture); + gsk_render_node_unref (node); + + return ret; } static GdkContentProvider * |