You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
3.4 KiB
90 lines
3.4 KiB
2 years ago
|
From 18fd27b5789758a7cbf97c8ab59b57d890923779 Mon Sep 17 00:00:00 2001
|
||
|
From: utkarshvg2401 <utkarshvg2401@gmail.com>
|
||
|
Date: Fri, 1 Apr 2022 10:48:08 +0530
|
||
|
Subject: [PATCH] files-view: Add menu item to copy current path
|
||
|
|
||
|
Currently, there is no option to directly copy the path of the current open directory.
|
||
|
|
||
|
This can be useful when users want to use the path of the directory in the terminal or some code.
|
||
|
|
||
|
Close https://gitlab.gnome.org/GNOME/nautilus/-/issues/1966
|
||
|
---
|
||
|
src/nautilus-files-view.c | 29 +++++++++++++++++++
|
||
|
.../ui/nautilus-files-view-context-menus.ui | 6 ++++
|
||
|
2 files changed, 35 insertions(+)
|
||
|
|
||
|
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
|
||
|
index 378e6bdba..1e1025eed 100644
|
||
|
--- a/src/nautilus-files-view.c
|
||
|
+++ b/src/nautilus-files-view.c
|
||
|
@@ -6123,6 +6123,30 @@ action_cut (GSimpleAction *action,
|
||
|
nautilus_file_list_free (selection);
|
||
|
}
|
||
|
|
||
|
+static void
|
||
|
+action_copy_current_location (GSimpleAction *action,
|
||
|
+ GVariant *state,
|
||
|
+ gpointer user_data)
|
||
|
+{
|
||
|
+ NautilusFilesView *view;
|
||
|
+ GtkClipboard *clipboard;
|
||
|
+ GList *files;
|
||
|
+ NautilusFilesViewPrivate *priv;
|
||
|
+
|
||
|
+ view = NAUTILUS_FILES_VIEW (user_data);
|
||
|
+ priv = nautilus_files_view_get_instance_private (view);
|
||
|
+
|
||
|
+ if (priv->directory_as_file != NULL)
|
||
|
+ {
|
||
|
+ files = g_list_append (NULL, nautilus_file_ref (priv->directory_as_file));
|
||
|
+
|
||
|
+ clipboard = nautilus_clipboard_get (GTK_WIDGET (view));
|
||
|
+ nautilus_clipboard_prepare_for_files (clipboard, files, FALSE);
|
||
|
+
|
||
|
+ nautilus_file_list_free (files);
|
||
|
+ }
|
||
|
+}
|
||
|
+
|
||
|
static void
|
||
|
action_create_links_in_place (GSimpleAction *action,
|
||
|
GVariant *state,
|
||
|
@@ -7154,6 +7178,7 @@ const GActionEntry view_entries[] =
|
||
|
{ "select-all", action_select_all },
|
||
|
{ "paste", action_paste_files },
|
||
|
{ "paste_accel", action_paste_files_accel },
|
||
|
+ { "copy-current-location", action_copy_current_location },
|
||
|
{ "create-link", action_create_links },
|
||
|
{ "new-document" },
|
||
|
/* Selection menu */
|
||
|
@@ -7789,6 +7814,10 @@ real_update_actions_state (NautilusFilesView *view)
|
||
|
g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
|
||
|
can_move_files && !selection_contains_recent &&
|
||
|
!selection_contains_starred);
|
||
|
+ action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
|
||
|
+ "copy-current-location");
|
||
|
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
|
||
|
+ !selection_contains_search);
|
||
|
|
||
|
/* Drive menu */
|
||
|
show_mount = (selection != NULL);
|
||
|
diff --git a/src/resources/ui/nautilus-files-view-context-menus.ui b/src/resources/ui/nautilus-files-view-context-menus.ui
|
||
|
index 27764c9a7..22a1cb231 100644
|
||
|
--- a/src/resources/ui/nautilus-files-view-context-menus.ui
|
||
|
+++ b/src/resources/ui/nautilus-files-view-context-menus.ui
|
||
|
@@ -14,6 +14,12 @@
|
||
|
<attribute name="label" translatable="yes">Add to _Bookmarks</attribute>
|
||
|
<attribute name="action">win.bookmark-current-location</attribute>
|
||
|
</item>
|
||
|
+ <section>
|
||
|
+ <item>
|
||
|
+ <attribute name="label" translatable="yes">_Copy Location</attribute>
|
||
|
+ <attribute name="action">view.copy-current-location</attribute>
|
||
|
+ </item>
|
||
|
+ </section>
|
||
|
<section>
|
||
|
<item>
|
||
|
<attribute name="label" translatable="yes">Create _Link</attribute>
|
||
|
--
|
||
|
2.36.1
|
||
|
|