summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNelson Benítez León <nbenitezl+gnome@gmail.com>2014-12-27 20:24:56 +0500
committerNelson Benítez León <nbenitezl+gnome@gmail.com>2015-01-07 16:08:51 +0500
commitfa1211f8ed069a3a9e994249caa35e041e835030 (patch)
tree34cd33686f224415312e487350c8d8171826b63a
parentcc493d649344e7d458e82b37e5f80ff7a075ad2e (diff)
downloadnautilus-fa1211f8ed069a3a9e994249caa35e041e835030.tar.gz
dnd: fix dnd issues with Type=Link desktop files
When creating NautilusDragSelectionItem items for dnd make sure we use regular uri (instead of activation uri) for Type=Link desktop files. Other types of desktop files were not affected by this bug as their regular uri and activation uri are usually the same. Fixes bug 720390
-rw-r--r--libnautilus-private/nautilus-canvas-dnd.c6
-rw-r--r--src/nautilus-list-view.c6
2 files changed, 10 insertions, 2 deletions
diff --git a/libnautilus-private/nautilus-canvas-dnd.c b/libnautilus-private/nautilus-canvas-dnd.c
index 3fd46e730..b4da369f3 100644
--- a/libnautilus-private/nautilus-canvas-dnd.c
+++ b/libnautilus-private/nautilus-canvas-dnd.c
@@ -224,6 +224,7 @@ icon_get_data_binder (NautilusCanvasIcon *icon, gpointer data)
EelIRect widget_rect;
char *uri;
NautilusCanvasContainer *container;
+ NautilusFile *file;
context = (CanvasGetDataBinderContext *)data;
@@ -236,13 +237,15 @@ icon_get_data_binder (NautilusCanvasIcon *icon, gpointer data)
canvas_rect_world_to_widget (EEL_CANVAS (container), &world_rect, &widget_rect);
uri = nautilus_canvas_container_get_icon_uri (container, icon);
- if (!eel_uri_is_desktop (uri)) {
+ file = nautilus_file_get_by_uri (uri);
+ if (!eel_uri_is_desktop (uri) && !nautilus_file_is_nautilus_link (file)) {
g_free (uri);
uri = nautilus_canvas_container_get_icon_activation_uri (container, icon);
}
if (uri == NULL) {
g_warning ("no URI for one of the iterated icons");
+ nautilus_file_unref (file);
return TRUE;
}
@@ -262,6 +265,7 @@ icon_get_data_binder (NautilusCanvasIcon *icon, gpointer data)
context->iteratee_data);
g_free (uri);
+ nautilus_file_unref (file);
return TRUE;
}
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c
index d1abe4873..a7132a6fe 100644
--- a/src/nautilus-list-view.c
+++ b/src/nautilus-list-view.c
@@ -464,7 +464,11 @@ item_get_data_binder (GtkTreeModel *model,
column,
&cell_area);
- uri = nautilus_file_get_activation_uri (file);
+ if (nautilus_file_is_nautilus_link (file)) {
+ uri = nautilus_file_get_uri (file);
+ } else {
+ uri = nautilus_file_get_activation_uri (file);
+ }
nautilus_file_unref (file);
/* pass the uri, mouse-relative x/y and icon width/height */