summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorey Berla <corey@berla.me>2022-09-01 13:03:48 -0700
committerAntónio Fernandes <antoniof@gnome.org>2022-09-01 21:42:41 +0000
commitab80390f02dbcf92f798de634ccffc9e5128d392 (patch)
treee4149ff9a3ed3dc2dd7f93dec7682eeb2ace1548
parent18961912e87b8db923fdcd543ee0a98b36f35a80 (diff)
downloadnautilus-ab80390f02dbcf92f798de634ccffc9e5128d392.tar.gz
list-base: Allow dropping text to create text file
We already have the function in nautilus-files-view-dnd. Allow dropping G_TYPE_STRING and call nautilus_files_view_handle_text_drop() to generate the filename and create a text file. This only worked in the main view in previous versions, so lets keep that the same for simplicity.
-rw-r--r--src/nautilus-list-base.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/nautilus-list-base.c b/src/nautilus-list-base.c
index ab72c6fc0..411115850 100644
--- a/src/nautilus-list-base.c
+++ b/src/nautilus-list-base.c
@@ -659,6 +659,10 @@ get_preferred_action (NautilusFile *target_file,
GSList *source_file_list = g_value_get_boxed (value);
action = nautilus_dnd_get_preferred_action (target_file, source_file_list->data);
}
+ else if (G_VALUE_HOLDS (value, G_TYPE_STRING))
+ {
+ action = GDK_ACTION_COPY;
+ }
return action;
}
@@ -669,19 +673,22 @@ real_perform_drop (NautilusListBase *self,
GdkDragAction action,
GFile *target_location)
{
+ g_autofree gchar *target_uri = g_file_get_uri (target_location);
+
if (!gdk_drag_action_is_unique (action))
{
/* TODO: Implement */
}
else if (G_VALUE_HOLDS (value, G_TYPE_STRING))
{
- /* TODO: Implement */
+ nautilus_files_view_handle_text_drop (NAUTILUS_FILES_VIEW (self),
+ g_value_get_string (value),
+ target_uri, action);
}
else if (G_VALUE_HOLDS (value, GDK_TYPE_FILE_LIST))
{
GSList *source_file_list = g_value_get_boxed (value);
GList *source_uri_list = NULL;
- g_autofree gchar *target_uri = NULL;
for (GSList *l = source_file_list; l != NULL; l = l->next)
{
@@ -689,7 +696,6 @@ real_perform_drop (NautilusListBase *self,
}
source_uri_list = g_list_reverse (source_uri_list);
- target_uri = g_file_get_uri (target_location);
nautilus_files_view_drop_proxy_received_uris (NAUTILUS_FILES_VIEW (self),
source_uri_list,
target_uri,
@@ -954,7 +960,7 @@ setup_cell_common (GtkListItem *listitem,
drop_target = gtk_drop_target_new (G_TYPE_INVALID, GDK_ACTION_ALL);
gtk_drop_target_set_preload (drop_target, TRUE);
/* TODO: Implement GDK_TYPE_STRING */
- gtk_drop_target_set_gtypes (drop_target, (GType[1]) { GDK_TYPE_FILE_LIST }, 1);
+ gtk_drop_target_set_gtypes (drop_target, (GType[2]) { GDK_TYPE_FILE_LIST, G_TYPE_STRING }, 2);
g_signal_connect (drop_target, "enter", G_CALLBACK (on_item_drag_enter), cell);
g_signal_connect (drop_target, "notify::value", G_CALLBACK (on_item_drag_value_notify), cell);
g_signal_connect (drop_target, "leave", G_CALLBACK (on_item_drag_leave), cell);
@@ -1799,7 +1805,7 @@ nautilus_list_base_setup_gestures (NautilusListBase *self)
drop_target = gtk_drop_target_new (G_TYPE_INVALID, GDK_ACTION_ALL);
gtk_drop_target_set_preload (drop_target, TRUE);
/* TODO: Implement GDK_TYPE_STRING */
- gtk_drop_target_set_gtypes (drop_target, (GType[1]) { GDK_TYPE_FILE_LIST }, 1);
+ gtk_drop_target_set_gtypes (drop_target, (GType[2]) { GDK_TYPE_FILE_LIST, G_TYPE_STRING }, 2);
g_signal_connect (drop_target, "enter", G_CALLBACK (on_view_drag_enter), self);
g_signal_connect (drop_target, "notify::value", G_CALLBACK (on_view_drag_value_notify), self);
g_signal_connect (drop_target, "motion", G_CALLBACK (on_view_drag_motion), self);