diff options
-rw-r--r-- | data/org.gnome.nautilus.gschema.xml | 4 | ||||
-rw-r--r-- | src/nautilus-files-view.c | 47 | ||||
-rw-r--r-- | src/resources/ui/nautilus-files-view-context-menus.ui | 7 |
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> |