From d5be5ed688bfeb7a8514c2ae3659921f79cdd0eb Mon Sep 17 00:00:00 2001
From: Cosimo Cecchi <cosimoc@gnome.org>
Date: Mon, 02 Nov 2009 17:09:15 +0000
Subject: Don't get drag data in list mode if we don't support the target.
This fixes bug #600183.
(cherry picked from commit 6613262f4e6d40d153299d7fd4726210268a2a53)
---
diff --git a/libnautilus-private/nautilus-tree-view-drag-dest.c b/libnautilus-private/nautilus-tree-view-drag-dest.c
index 09ce442..20646ef 100644
--- a/libnautilus-private/nautilus-tree-view-drag-dest.c
+++ b/libnautilus-private/nautilus-tree-view-drag-dest.c
@@ -242,7 +242,7 @@ clear_drag_dest_row (NautilusTreeViewDragDest *dest)
set_widget_highlight (dest, FALSE);
}
-static void
+static gboolean
get_drag_data (NautilusTreeViewDragDest *dest,
GdkDragContext *context,
guint32 time)
@@ -252,15 +252,22 @@ get_drag_data (NautilusTreeViewDragDest *dest,
target = gtk_drag_dest_find_target (GTK_WIDGET (dest->details->tree_view),
context,
NULL);
+
+ if (target == GDK_NONE) {
+ return FALSE;
+ }
+
if (target == gdk_atom_intern (NAUTILUS_ICON_DND_XDNDDIRECTSAVE_TYPE, FALSE) &&
!dest->details->drop_occurred) {
dest->details->drag_type = NAUTILUS_ICON_DND_XDNDDIRECTSAVE;
dest->details->have_drag_data = TRUE;
- return;
+ return TRUE;
}
gtk_drag_get_data (GTK_WIDGET (dest->details->tree_view),
context, target, time);
+
+ return TRUE;
}
static void
@@ -455,6 +462,7 @@ drag_motion_callback (GtkWidget *widget,
GtkTreeViewDropPosition pos;
GdkWindow *bin_window;
guint action;
+ gboolean res = TRUE;
dest = NAUTILUS_TREE_VIEW_DRAG_DEST (data);
@@ -463,8 +471,13 @@ drag_motion_callback (GtkWidget *widget,
if (!dest->details->have_drag_data) {
- get_drag_data (dest, context, time);
+ res = get_drag_data (dest, context, time);
}
+
+ if (!res) {
+ return FALSE;
+ }
+
drop_path = get_drop_path (dest, path);
action = 0;
--
cgit v0.8.2