diff -ru xfdesktop-4.8.2//src/xfdesktop-file-icon-manager.c xfdesktop-4.8.2-drag-move-ok//src/xfdesktop-file-icon-manager.c --- xfdesktop-4.8.2//src/xfdesktop-file-icon-manager.c 2011-04-22 15:21:52.000000000 -0300 +++ xfdesktop-4.8.2-drag-move-ok//src/xfdesktop-file-icon-manager.c 2011-05-17 02:43:18.954482297 -0300 @@ -2912,7 +2912,14 @@ 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); + /* It seems that if we copy the file we must send the full target file path, + * and if we are moving the file to the desktop, we need to send just the + * target directory where the file will be moved into. */ + if(copy_only) { + 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);