diff options
author | Nelson Benítez León <nbenitezl+gnome@gmail.com> | 2017-08-13 19:46:08 +0500 |
---|---|---|
committer | Carlos Soriano <csoriano@localhost.localdomain> | 2017-08-17 16:19:52 +0200 |
commit | f0c81e22a3e9c3cbc1a70245e629caa2209c75ba (patch) | |
tree | c2621c5eb56c447e6ccd88abb1d4b16eed4db22a | |
parent | 611f381d561024b0a590237c31fc0612e6698530 (diff) | |
download | nautilus-f0c81e22a3e9c3cbc1a70245e629caa2209c75ba.tar.gz |
dnd: make sidebar show "new bookmark" only for folders
Make sure sidebar shows "new bookmark" only when folders
are being dragged.
https://bugzilla.gnome.org/show_bug.cgi?id=754513
-rw-r--r-- | src/nautilus-canvas-dnd.c | 8 | ||||
-rw-r--r-- | src/nautilus-file.c | 15 | ||||
-rw-r--r-- | src/nautilus-file.h | 1 | ||||
-rw-r--r-- | src/nautilus-list-view-dnd.c | 8 |
4 files changed, 30 insertions, 2 deletions
diff --git a/src/nautilus-canvas-dnd.c b/src/nautilus-canvas-dnd.c index d01c876c3..7ef7dd56e 100644 --- a/src/nautilus-canvas-dnd.c +++ b/src/nautilus-canvas-dnd.c @@ -1459,6 +1459,7 @@ drag_begin_callback (GtkWidget *widget, double x1, y1, x2, y2, winx, winy; int x_offset, y_offset; int start_x, start_y; + GList *dragged_files; container = NAUTILUS_CANVAS_CONTAINER (widget); window = NAUTILUS_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (container))); @@ -1491,7 +1492,12 @@ drag_begin_callback (GtkWidget *widget, container->details->dnd_source_info->selection_cache = nautilus_drag_create_selection_cache (widget, each_icon_get_data_binder); - nautilus_window_start_dnd (window, context); + dragged_files = nautilus_drag_file_list_from_selection_list (drag_info->selection_cache); + if (nautilus_file_list_are_all_folders (dragged_files)) + { + nautilus_window_start_dnd (window, context); + } + g_list_free_full (dragged_files, g_object_unref); } void diff --git a/src/nautilus-file.c b/src/nautilus-file.c index e37ba19a5..d19e0cd56 100644 --- a/src/nautilus-file.c +++ b/src/nautilus-file.c @@ -4204,6 +4204,21 @@ nautilus_file_list_filter (GList *files, return filtered; } +gboolean +nautilus_file_list_are_all_folders (const GList *files) +{ + const GList *l; + + for (l = files; l != NULL; l = l->next) + { + if (!nautilus_file_is_directory (NAUTILUS_FILE (l->data))) + { + return FALSE; + } + } + return TRUE; +} + char * nautilus_file_get_metadata (NautilusFile *file, const char *key, diff --git a/src/nautilus-file.h b/src/nautilus-file.h index 417977856..3a83bd4de 100644 --- a/src/nautilus-file.h +++ b/src/nautilus-file.h @@ -503,6 +503,7 @@ GList * nautilus_file_list_filter (GList GList **failed, NautilusFileFilterFunc filter_function, gpointer user_data); +gboolean nautilus_file_list_are_all_folders (const GList *files); /* DND */ gboolean nautilus_drag_can_accept_item (NautilusFile *drop_target_item, const char *item_uri); diff --git a/src/nautilus-list-view-dnd.c b/src/nautilus-list-view-dnd.c index 4baa28eb1..671ec6c90 100644 --- a/src/nautilus-list-view-dnd.c +++ b/src/nautilus-list-view-dnd.c @@ -176,6 +176,7 @@ drag_begin_callback (GtkWidget *widget, { cairo_surface_t *surface; NautilusWindow *window; + GList *dragged_files; window = nautilus_files_view_get_window (NAUTILUS_FILES_VIEW (view)); surface = get_drag_surface (view); @@ -195,7 +196,12 @@ drag_begin_callback (GtkWidget *widget, view->details->drag_source_info->selection_cache = nautilus_drag_create_selection_cache (view, each_item_get_data_binder); - nautilus_window_start_dnd (window, context); + dragged_files = nautilus_drag_file_list_from_selection_list (view->details->drag_source_info->selection_cache); + if (nautilus_file_list_are_all_folders (dragged_files)) + { + nautilus_window_start_dnd (window, context); + } + g_list_free_full (dragged_files, g_object_unref); } static void |