diff options
author | Benjamin Otte <otte@redhat.com> | 2021-08-19 02:15:59 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2021-08-19 03:16:48 +0200 |
commit | 7bc1c9a5626aa5d681b65507524aacd5da2d079f (patch) | |
tree | c454635d3bfe0b67eb3977f47f218aaff8ab6626 | |
parent | 1596fdeba3fa8d7ce98cf3481c20f2b23e1c27be (diff) | |
download | gtk+-7bc1c9a5626aa5d681b65507524aacd5da2d079f.tar.gz |
demo: Add a dnd special-case for textures
If the DND/clipboard machinery knows a texture is a texture, it will try
to serialize it. Paintables can't be serialized, so it wouldn't try.
-rw-r--r-- | demos/gtk-demo/demoimage.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/demos/gtk-demo/demoimage.c b/demos/gtk-demo/demoimage.c index a7ecb6e213..8fdc4257a5 100644 --- a/demos/gtk-demo/demoimage.c +++ b/demos/gtk-demo/demoimage.c @@ -100,7 +100,11 @@ prepare_drag (GtkDragSource *source, DemoImage *demo = DEMO_IMAGE (widget); GdkPaintable *paintable = get_image_paintable (GTK_IMAGE (demo->image)); - return gdk_content_provider_new_typed (GDK_TYPE_PAINTABLE, paintable); + /* Textures can be serialized, paintables can't, so special case the textures */ + if (GDK_IS_TEXTURE (paintable)) + return gdk_content_provider_new_typed (GDK_TYPE_TEXTURE, paintable); + else + return gdk_content_provider_new_typed (GDK_TYPE_PAINTABLE, paintable); } static gboolean @@ -129,7 +133,11 @@ copy_image (GtkWidget *widget, GdkPaintable *paintable = get_image_paintable (GTK_IMAGE (demo->image)); GValue value = G_VALUE_INIT; - g_value_init (&value, GDK_TYPE_PAINTABLE); + /* Textures can be serialized, paintables can't, so special case the textures */ + if (GDK_IS_TEXTURE (paintable)) + g_value_init (&value, GDK_TYPE_TEXTURE); + else + g_value_init (&value, GDK_TYPE_PAINTABLE); g_value_set_object (&value, paintable); gdk_clipboard_set_value (clipboard, &value); g_value_unset (&value); |