summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2009-11-02 18:09:15 +0100
committerAlexander Larsson <alexl@redhat.com>2009-11-27 14:54:07 +0100
commitd5be5ed688bfeb7a8514c2ae3659921f79cdd0eb (patch)
treef1ed198f23afa5587dce5530d66cf5f2d8e6fcff
parentd464b11f167a0125a17ba2555ceec99880a848fb (diff)
downloadnautilus-d5be5ed688bfeb7a8514c2ae3659921f79cdd0eb.tar.gz
Don't get drag data in list mode if we don't support the target.
This fixes bug #600183. (cherry picked from commit 6613262f4e6d40d153299d7fd4726210268a2a53)
-rw-r--r--libnautilus-private/nautilus-tree-view-drag-dest.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/libnautilus-private/nautilus-tree-view-drag-dest.c b/libnautilus-private/nautilus-tree-view-drag-dest.c
index 09ce44265..20646efdc 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;