From d34ef6d997a91e7e0e39cf8d9a11e8aa693a518a Mon Sep 17 00:00:00 2001 From: Karol Kosek Date: Tue, 13 Jul 2021 00:24:48 +0200 Subject: [PATCH] FileManager: Add Rename action to context and application menu Prior to this change, the only way to rename a file was to press F2 on keyboard. --- Userland/Applications/FileManager/DirectoryView.cpp | 11 ++++++++--- Userland/Applications/FileManager/DirectoryView.h | 2 ++ Userland/Applications/FileManager/main.cpp | 6 ++++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Userland/Applications/FileManager/DirectoryView.cpp b/Userland/Applications/FileManager/DirectoryView.cpp index 361bc99a61..7e2cc35013 100644 --- a/Userland/Applications/FileManager/DirectoryView.cpp +++ b/Userland/Applications/FileManager/DirectoryView.cpp @@ -538,9 +538,10 @@ void DirectoryView::handle_selection_change() { update_statusbar(); - bool can_delete = !current_view().selection().is_empty() && access(path().characters(), W_OK) == 0; - m_delete_action->set_enabled(can_delete); - m_force_delete_action->set_enabled(can_delete); + bool can_modify = !current_view().selection().is_empty() && access(path().characters(), W_OK) == 0; + m_delete_action->set_enabled(can_modify); + m_force_delete_action->set_enabled(can_modify); + m_rename_action->set_enabled(can_modify); if (on_selection_change) on_selection_change(current_view()); @@ -591,6 +592,10 @@ void DirectoryView::setup_actions() }); m_delete_action = GUI::CommonActions::make_delete_action([this](auto&) { do_delete(true); }, window()); + m_rename_action = GUI::CommonActions::make_rename_action([this](auto&) { + current_view().begin_editing(current_view().cursor_index()); + }, + window()); m_force_delete_action = GUI::Action::create( "Delete Without Confirmation", { Mod_Shift, Key_Delete }, diff --git a/Userland/Applications/FileManager/DirectoryView.h b/Userland/Applications/FileManager/DirectoryView.h index 3dec5bdabc..500aaceb26 100644 --- a/Userland/Applications/FileManager/DirectoryView.h +++ b/Userland/Applications/FileManager/DirectoryView.h @@ -123,6 +123,7 @@ public: GUI::Action& open_terminal_action() { return *m_open_terminal_action; } GUI::Action& delete_action() { return *m_delete_action; } GUI::Action& force_delete_action() { return *m_force_delete_action; } + GUI::Action& rename_action() { return *m_rename_action; } private: explicit DirectoryView(Mode); @@ -168,6 +169,7 @@ private: RefPtr m_open_terminal_action; RefPtr m_delete_action; RefPtr m_force_delete_action; + RefPtr m_rename_action; }; } diff --git a/Userland/Applications/FileManager/main.cpp b/Userland/Applications/FileManager/main.cpp index ed1ee2ab8a..47a71e081e 100644 --- a/Userland/Applications/FileManager/main.cpp +++ b/Userland/Applications/FileManager/main.cpp @@ -375,6 +375,7 @@ int run_in_desktop_mode([[maybe_unused]] RefPtr config) desktop_context_menu->add_action(cut_action); desktop_context_menu->add_action(paste_action); desktop_context_menu->add_action(directory_view.delete_action()); + desktop_context_menu->add_action(directory_view.rename_action()); desktop_context_menu->add_separator(); desktop_context_menu->add_action(properties_action); @@ -393,6 +394,7 @@ int run_in_desktop_mode([[maybe_unused]] RefPtr config) file_context_menu->add_action(cut_action); file_context_menu->add_action(paste_action); file_context_menu->add_action(directory_view.delete_action()); + file_context_menu->add_action(directory_view.rename_action()); file_context_menu->add_separator(); if (node.full_path().ends_with(".zip", AK::CaseSensitivity::CaseInsensitive)) { @@ -846,6 +848,7 @@ int run_in_windowed_mode(RefPtr config, String initial_locatio file_menu.add_action(mkdir_action); file_menu.add_action(touch_action); file_menu.add_action(focus_dependent_delete_action); + file_menu.add_action(directory_view.rename_action()); file_menu.add_separator(); file_menu.add_action(properties_action); file_menu.add_separator(); @@ -1040,6 +1043,7 @@ int run_in_windowed_mode(RefPtr config, String initial_locatio directory_context_menu->add_action(cut_action); directory_context_menu->add_action(folder_specific_paste_action); directory_context_menu->add_action(directory_view.delete_action()); + directory_context_menu->add_action(directory_view.rename_action()); directory_context_menu->add_action(shortcut_action); directory_context_menu->add_separator(); directory_context_menu->add_action(properties_action); @@ -1059,6 +1063,7 @@ int run_in_windowed_mode(RefPtr config, String initial_locatio tree_view_directory_context_menu->add_action(cut_action); tree_view_directory_context_menu->add_action(paste_action); tree_view_directory_context_menu->add_action(tree_view_delete_action); + tree_view_directory_context_menu->add_action(directory_view.rename_action()); tree_view_directory_context_menu->add_separator(); tree_view_directory_context_menu->add_action(properties_action); tree_view_directory_context_menu->add_separator(); @@ -1083,6 +1088,7 @@ int run_in_windowed_mode(RefPtr config, String initial_locatio file_context_menu->add_action(cut_action); file_context_menu->add_action(paste_action); file_context_menu->add_action(directory_view.delete_action()); + file_context_menu->add_action(directory_view.rename_action()); file_context_menu->add_action(shortcut_action); file_context_menu->add_separator();