diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2009-11-02 18:09:15 +0100 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2009-11-27 14:54:07 +0100 |
commit | d5be5ed688bfeb7a8514c2ae3659921f79cdd0eb (patch) | |
tree | f1ed198f23afa5587dce5530d66cf5f2d8e6fcff | |
parent | d464b11f167a0125a17ba2555ceec99880a848fb (diff) | |
download | nautilus-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.c | 19 |
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; |