diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | libnautilus-private/nautilus-dnd.c | 12 | ||||
-rw-r--r-- | libnautilus-private/nautilus-dnd.h | 2 | ||||
-rw-r--r-- | libnautilus-private/nautilus-icon-dnd.c | 8 |
4 files changed, 31 insertions, 1 deletions
@@ -1,3 +1,13 @@ +2008-05-27 Cosimo Cecchi <cosimoc@gnome.org> + + * libnautilus-private/nautilus-dnd.c: + (nautilus_drag_default_drop_action_for_uri_list): + * libnautilus-private/nautilus-dnd.h: + * libnautilus-private/nautilus-icon-dnd.c: + (nautilus_icon_container_get_drop_action): + Select GDK_ACTION_MOVE as default action when DnD-ing a uri list + into the trash. (#534769). + 2008-05-23 Christian Neumair <cneumair@gnome.org> * libnautilus-private/nautilus-directory-async.c (seen_inode), diff --git a/libnautilus-private/nautilus-dnd.c b/libnautilus-private/nautilus-dnd.c index 97a502ff9..3613d2890 100644 --- a/libnautilus-private/nautilus-dnd.c +++ b/libnautilus-private/nautilus-dnd.c @@ -453,6 +453,18 @@ nautilus_drag_default_drop_action_for_icons (GdkDragContext *context, } +GdkDragAction +nautilus_drag_default_drop_action_for_uri_list (GdkDragContext *context, + const char *target_uri_string) +{ + if (eel_uri_is_trash (target_uri_string) && (context->actions & GDK_ACTION_MOVE)) { + /* Only move to Trash */ + return GDK_ACTION_MOVE; + } else { + return context->suggested_action; + } +} + /* Encode a "x-special/gnome-icon-list" selection. Along with the URIs of the dragged files, this encodes the location and size of each icon relative to the cursor. diff --git a/libnautilus-private/nautilus-dnd.h b/libnautilus-private/nautilus-dnd.h index d82336c94..ed8821b8d 100644 --- a/libnautilus-private/nautilus-dnd.h +++ b/libnautilus-private/nautilus-dnd.h @@ -126,6 +126,8 @@ void nautilus_drag_default_drop_action_for_icons (GdkDrag const GList *items, int *action); GdkDragAction nautilus_drag_default_drop_action_for_netscape_url (GdkDragContext *context); +GdkDragAction nautilus_drag_default_drop_action_for_uri_list (GdkDragContext *context, + const char *target_uri_string); gboolean nautilus_drag_drag_data_get (GtkWidget *widget, GdkDragContext *context, GtkSelectionData *selection_data, diff --git a/libnautilus-private/nautilus-icon-dnd.c b/libnautilus-private/nautilus-icon-dnd.c index 46b92b5ec..c5216e4f4 100644 --- a/libnautilus-private/nautilus-icon-dnd.c +++ b/libnautilus-private/nautilus-icon-dnd.c @@ -1278,6 +1278,13 @@ nautilus_icon_container_get_drop_action (NautilusIconContainer *container, action); g_free (drop_target); break; + case NAUTILUS_ICON_DND_URI_LIST: + drop_target = nautilus_icon_container_find_drop_target (container, + context, x, y, &icon_hit, FALSE); + *action = nautilus_drag_default_drop_action_for_uri_list (context, drop_target); + + g_free (drop_target); + break; /* handle emblems by setting the action if we're over an object */ case NAUTILUS_ICON_DND_KEYWORD: @@ -1293,7 +1300,6 @@ nautilus_icon_container_get_drop_action (NautilusIconContainer *container, case NAUTILUS_ICON_DND_COLOR: case NAUTILUS_ICON_DND_BGIMAGE: case NAUTILUS_ICON_DND_RESET_BACKGROUND: - case NAUTILUS_ICON_DND_URI_LIST: case NAUTILUS_ICON_DND_ROOTWINDOW_DROP: *action = context->suggested_action; break; |