gdk/x11: Serialize gtype content formats before sending Xdnd enter
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 13 Jan 2020 19:07:27 +0000 (20:07 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Thu, 16 Jan 2020 12:31:40 +0000 (13:31 +0100)
This ensures GType handlers get serialized to mimetypes at the time
the drag dest inspects the XdndTypeList property.

gdk/x11/gdkdrag-x11.c

index 724099dab0c4aaa64aaabbf2488b7306204e895f..55e157b52aec38f96b672f19d08c3eb0b896a540 100644 (file)
@@ -1061,6 +1061,7 @@ xdnd_send_enter (GdkX11Drag *drag_x11)
 {
   GdkDrag *drag = GDK_DRAG (drag_x11);
   GdkDisplay *display = gdk_drag_get_display (drag);
+  GdkContentFormats *formats;
   const char * const *atoms;
   gsize i, n_atoms;
   XEvent xev;
@@ -1080,7 +1081,10 @@ xdnd_send_enter (GdkX11Drag *drag_x11)
   GDK_DISPLAY_NOTE (display, DND,
            g_message ("Sending enter source window %#lx XDND protocol version %d\n",
                       GDK_SURFACE_XID (drag_x11->ipc_surface), drag_x11->version));
-  atoms = gdk_content_formats_get_mime_types (gdk_drag_get_formats (drag), &n_atoms);
+  formats = gdk_content_formats_ref (gdk_drag_get_formats (drag));
+  formats = gdk_content_formats_union_serialize_mime_types (formats);
+
+  atoms = gdk_content_formats_get_mime_types (formats, &n_atoms);
 
   if (n_atoms > 3)
     {