[Xfce4-commits] <xfdesktop:xfce-4.8> Fix moving files to the desktop with shift & drag (bug #7629).
Jannis Pohlmann
noreply at xfce.org
Fri May 20 01:58:01 CEST 2011
Updating branch refs/heads/xfce-4.8
to 7b5c9ef98efe7c9f13472b423d723058bbb774e1 (commit)
from a7c18f520463d985e3c8406a4fe0eb141edf65b0 (commit)
commit 7b5c9ef98efe7c9f13472b423d723058bbb774e1
Author: Jannis Pohlmann <jannis at xfce.org>
Date: Fri May 20 01:51:35 2011 +0200
Fix moving files to the desktop with shift & drag (bug #7629).
Patch provided by Patrick Melo <patrickmelo.eti at gmail.com>.
NEWS | 6 ++++++
src/xfdesktop-file-icon-manager.c | 23 +++++++++++++++--------
2 files changed, 21 insertions(+), 8 deletions(-)
diff --git a/NEWS b/NEWS
index 73138ca..81b120d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,9 @@
+Xfdesktop 4.8.x
+---------------
+ * Fix moving files to the desktop via shift & drag (bug #7629).
+ Reported and fixed by Patrick Melo.
+
+
Xfdesktop 4.8.2
---------------
* Fix a crash on focus in when items are selected (bug #7313).
diff --git a/src/xfdesktop-file-icon-manager.c b/src/xfdesktop-file-icon-manager.c
index 2711646..d3ca2eb 100644
--- a/src/xfdesktop-file-icon-manager.c
+++ b/src/xfdesktop-file-icon-manager.c
@@ -2794,7 +2794,7 @@ xfdesktop_file_icon_manager_drag_data_received(XfdesktopIconViewManager *manager
GFile *tfile = NULL;
gboolean copy_only = TRUE, drop_ok = FALSE;
GList *file_list;
-
+
if(info == TARGET_XDND_DIRECT_SAVE0) {
/* we don't suppose XdndDirectSave stage 3, result F, i.e., the app
* has to save the data itself given the filename we provided in
@@ -2816,7 +2816,7 @@ xfdesktop_file_icon_manager_drag_data_received(XfdesktopIconViewManager *manager
/* data is "URL\nTITLE" */
GFile *source_file = NULL;
gchar *exo_desktop_item_edit = g_find_program_in_path("exo-desktop-item-edit");
-
+
if(drop_icon) {
GFileInfo *finfo = xfdesktop_file_icon_peek_file_info(XFDESKTOP_FILE_ICON(drop_icon));
if(g_file_info_get_file_type(finfo) == G_FILE_TYPE_DIRECTORY)
@@ -2911,8 +2911,15 @@ xfdesktop_file_icon_manager_drag_data_received(XfdesktopIconViewManager *manager
gchar *dest_basename = g_file_get_basename(l->data);
if(dest_basename && *dest_basename != '\0') {
- GFile *dest_file = g_file_get_child(base_dest_file, dest_basename);
- dest_file_list = g_list_prepend(dest_file_list, dest_file);
+ /* If we copy a file, we need to use the new absolute filename
+ * as the destination. If we move, we need to use the destination
+ * directory. */
+ if(copy_only) {
+ GFile *dest_file = g_file_get_child(base_dest_file, dest_basename);
+ dest_file_list = g_list_prepend(dest_file_list, dest_file);
+ } else {
+ dest_file_list = g_list_prepend(dest_file_list, base_dest_file);
+ }
}
g_free(dest_basename);
@@ -2923,10 +2930,10 @@ xfdesktop_file_icon_manager_drag_data_received(XfdesktopIconViewManager *manager
if(dest_file_list) {
dest_file_list = g_list_reverse(dest_file_list);
- drop_ok =xfdesktop_file_utils_transfer_files(context->action,
- file_list,
- dest_file_list,
- fmanager->priv->gscreen);
+ drop_ok = xfdesktop_file_utils_transfer_files(context->action,
+ file_list,
+ dest_file_list,
+ fmanager->priv->gscreen);
}
xfdesktop_file_utils_file_list_free(dest_file_list);
More information about the Xfce4-commits
mailing list