summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRazvan Chitu <razvan.ch95@gmail.com>2015-12-23 23:23:23 +0200
committerCarlos Soriano <csoriano@gnome.org>2015-12-24 16:06:48 +0100
commita3a7ac81b77fd65b8d3902aea8e00d2da4ad9f6c (patch)
tree92289c4ada93c7163ba81e23e3b903173bc421c6
parent45c27b41cfc2b0e9a30ea8e6cee81f5aefa0f331 (diff)
downloadnautilus-a3a7ac81b77fd65b8d3902aea8e00d2da4ad9f6c.tar.gz
files-view: add create link menu item for selected files
The menu item for this feature was removed in previous versions of nautilus. A context menu item for creating links from copied files was added, but some users prefered to create links from selected files. Since this is demanded, implement the menu action for it and use the gsetting added in the previous commits. https://bugzilla.gnome.org/show_bug.cgi?id=745575
-rw-r--r--data/org.gnome.nautilus.gschema.xml4
-rw-r--r--src/nautilus-files-view.c47
-rw-r--r--src/resources/ui/nautilus-files-view-context-menus.ui7
3 files changed, 52 insertions, 6 deletions
diff --git a/data/org.gnome.nautilus.gschema.xml b/data/org.gnome.nautilus.gschema.xml
index bf03e0308..0a1acad4a 100644
--- a/data/org.gnome.nautilus.gschema.xml
+++ b/data/org.gnome.nautilus.gschema.xml
@@ -83,8 +83,8 @@
</key>
<key type="b" name="show-create-link">
<default>false</default>
- <summary>Whether to show a context menu item to create links from copied files</summary>
- <description>If set to true Nautilus will show a create link context menu item to create links from the copied files</description>
+ <summary>Whether to show context menu items to create links from copied or selected files</summary>
+ <description>If set to true Nautilus will show context menu items to create links from the copied or selected files</description>
</key>
<key type="b" name="confirm-trash">
<default>true</default>
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 32be4da94..bda80c08f 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -5366,6 +5366,37 @@ action_cut (GSimpleAction *action,
}
static void
+action_create_links_in_place (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusFilesView *view;
+ GList *selection;
+ GList *item_uris;
+ GList *l;
+ char *destination_uri;
+
+ view = NAUTILUS_FILES_VIEW (user_data);
+
+ selection = nautilus_files_view_get_selection_for_file_transfer (view);
+
+ item_uris = NULL;
+ for (l = selection; l != NULL; l = l->next) {
+ item_uris = g_list_prepend (item_uris, nautilus_file_get_uri(l->data));
+ }
+ item_uris = g_list_reverse (item_uris);
+
+ destination_uri = nautilus_files_view_get_backing_uri (view);
+
+ nautilus_files_view_move_copy_items (view, item_uris, NULL, destination_uri,
+ GDK_ACTION_LINK,
+ 0, 0);
+
+ g_list_free_full (item_uris, g_free);
+ nautilus_file_list_free (selection);
+}
+
+static void
action_copy_to (GSimpleAction *action,
GVariant *state,
gpointer user_data)
@@ -5940,6 +5971,7 @@ const GActionEntry view_entries[] = {
{ "open-item-new-tab", action_open_item_new_tab },
{ "cut", action_cut},
{ "copy", action_copy},
+ { "create-link-in-place", action_create_links_in_place },
{ "move-to", action_move_to},
{ "copy-to", action_copy_to},
{ "move-to-trash", action_move_to_trash},
@@ -6222,7 +6254,7 @@ real_update_actions_state (NautilusFilesView *view)
gboolean can_move_files;
gboolean can_trash_files;
gboolean can_copy_files;
- gboolean can_link_files;
+ gboolean can_link_from_copied_files;
gboolean can_paste_files_into;
gboolean show_app, show_run;
gboolean item_opens_in_view;
@@ -6268,8 +6300,8 @@ real_update_actions_state (NautilusFilesView *view)
!selection_contains_desktop_or_home_dir;
can_copy_files = selection_count != 0
&& !selection_contains_special_link;
- can_link_files = !nautilus_clipboard_monitor_is_cut (nautilus_clipboard_monitor_get ()) &&
- !selection_contains_recent && !is_read_only;
+ can_link_from_copied_files = !nautilus_clipboard_monitor_is_cut (nautilus_clipboard_monitor_get ()) &&
+ !selection_contains_recent && !is_read_only;
can_move_files = can_delete_files && !selection_contains_recent;
can_paste_files_into = (!selection_contains_recent &&
selection_count == 1 &&
@@ -6409,6 +6441,12 @@ real_update_actions_state (NautilusFilesView *view)
g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
can_copy_files);
action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
+ "create-link-in-place");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
+ can_copy_files &&
+ can_create_files &&
+ settings_show_create_link);
+ action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
"copy-to");
g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
can_copy_files);
@@ -6491,7 +6529,7 @@ real_update_actions_state (NautilusFilesView *view)
action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
"create-link");
g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
- can_link_files &&
+ can_link_from_copied_files &&
settings_show_create_link);
action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
@@ -8239,6 +8277,7 @@ nautilus_files_view_init (NautilusFilesView *view)
nautilus_application_add_accelerator (app, "view.rename", "F2");
nautilus_application_add_accelerator (app, "view.cut", "<control>x");
nautilus_application_add_accelerator (app, "view.copy", "<control>c");
+ nautilus_application_add_accelerator (app, "view.create-link-in-place", "<control><shift>m");
nautilus_application_add_accelerator (app, "view.new-folder", "<control><shift>n");
/* Only accesible by shorcuts */
nautilus_application_add_accelerator (app, "view.select-pattern", "<control>s");
diff --git a/src/resources/ui/nautilus-files-view-context-menus.ui b/src/resources/ui/nautilus-files-view-context-menus.ui
index b60ab1f08..1d5035f93 100644
--- a/src/resources/ui/nautilus-files-view-context-menus.ui
+++ b/src/resources/ui/nautilus-files-view-context-menus.ui
@@ -145,6 +145,13 @@
<attribute name="label" translatable="yes">_Copy</attribute>
<attribute name="action">view.copy</attribute>
</item>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Create _Link</attribute>
+ <attribute name="action">view.create-link-in-place</attribute>
+ <attribute name="hidden-when">action-disabled</attribute>
+ </item>
+ </section>
<item>
<attribute name="label" translatable="yes">_Paste Into Folder</attribute>
<attribute name="action">view.paste-into</attribute>