This is an automated email from the git hooks/post-receive script. a n d r e p u s h e d a c o m m i t t o b r a n c h x f c e - 4 . 1 4 in repository xfce/xfdesktop.
commit 8f2cd144e906fce060e03bf147a1e19f0e1e55a0 Author: Andre Miranda <andre...@xfce.org> Date: Sat Dec 21 18:25:35 2019 -0300 Add DnD support for application/octet-stream (Bug #14919) --- src/xfdesktop-file-icon-manager.c | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/xfdesktop-file-icon-manager.c b/src/xfdesktop-file-icon-manager.c index f46429c..1b0008d 100644 --- a/src/xfdesktop-file-icon-manager.c +++ b/src/xfdesktop-file-icon-manager.c @@ -242,6 +242,7 @@ enum TARGET_TEXT_URI_LIST = 0, TARGET_XDND_DIRECT_SAVE0, TARGET_NETSCAPE_URL, + TARGET_APPLICATION_OCTET_STREAM, }; static const GtkTargetEntry drag_targets[] = { @@ -250,6 +251,7 @@ static const GtkTargetEntry drag_targets[] = { static const gint n_drag_targets = (sizeof(drag_targets)/sizeof(drag_targets[0])); static const GtkTargetEntry drop_targets[] = { { "text/uri-list", 0, TARGET_TEXT_URI_LIST, }, + { "application/octet-stream", 0, TARGET_APPLICATION_OCTET_STREAM, }, { "XdndDirectSave0", 0, TARGET_XDND_DIRECT_SAVE0, }, { "_NETSCAPE_URL", 0, TARGET_NETSCAPE_URL, }, }; @@ -3647,6 +3649,46 @@ xfdesktop_file_icon_manager_drag_data_received(XfdesktopIconViewManager *manager } g_free(exo_desktop_item_edit); + } else if(info == TARGET_APPLICATION_OCTET_STREAM) { + guchar *filename; + gchar *filepath; + gint length; + const gchar *content; + GFile *dest; + GFileOutputStream *out; + + if(gdk_property_get(gdk_drag_context_get_source_window(context), + gdk_atom_intern("XdndDirectSave0", FALSE), + gdk_atom_intern("text/plain", FALSE), 0, 1024, + FALSE, NULL, NULL, &length, &filename) && length > 0) { + filename = g_realloc(filename, length + 1); + filename[length] = '\0'; + } else { + filename = g_strdup(_("Untitled document")); + } + + filepath = g_strdup_printf ("%s/%s", + g_get_user_special_dir(G_USER_DIRECTORY_DESKTOP), + filename); + + dest = g_file_new_for_path(filepath); + out = g_file_create(dest, G_FILE_CREATE_NONE, NULL, NULL); + + if(out) { + content = (const gchar *)gtk_selection_data_get_data(data); + length = gtk_selection_data_get_length(data); + + if(g_output_stream_write_all(G_OUTPUT_STREAM(out), content, length, + NULL, NULL, NULL)) { + g_output_stream_close(G_OUTPUT_STREAM(out), NULL, NULL); + } + + g_object_unref(out); + } + + g_free(filename); + g_free(filepath); + g_object_unref(dest); } else if(info == TARGET_TEXT_URI_LIST) { if(drop_icon) { file_icon = XFDESKTOP_FILE_ICON(drop_icon); -- To stop receiving notification emails like this one, please contact the administrator of this repository. _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits