From 2569416881e213faebe454be04bda1352c9152d9 Mon Sep 17 00:00:00 2001 From: Michael Alexsander Date: Tue, 3 Sep 2024 13:59:23 -0300 Subject: [PATCH] Add option to copy a file's name in the FileSystem dock --- editor/filesystem_dock.cpp | 14 ++++++++++++++ editor/filesystem_dock.h | 1 + 2 files changed, 15 insertions(+) diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index 4fafdefbb59..4679a77bece 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -2547,6 +2547,14 @@ void FileSystemDock::_file_option(int p_option, const Vector &p_selected } } break; + case FILE_COPY_NAME: { + if (!p_selected.is_empty()) { + const String &fpath = p_selected[0]; + const String file_name = fpath.get_file(); + DisplayServer::get_singleton()->clipboard_set(file_name); + } + } break; + case FILE_COPY_UID: { if (!p_selected.is_empty()) { ResourceUID::ID uid = ResourceLoader::get_resource_uid(p_selected[0]); @@ -3273,6 +3281,7 @@ void FileSystemDock::_file_and_folders_fill_popup(PopupMenu *p_popup, const Vect if (p_paths.size() == 1) { p_popup->add_icon_shortcut(get_editor_theme_icon(SNAME("ActionCopy")), ED_GET_SHORTCUT("filesystem_dock/copy_path"), FILE_COPY_PATH); p_popup->add_shortcut(ED_GET_SHORTCUT("filesystem_dock/copy_absolute_path"), FILE_COPY_ABSOLUTE_PATH); + p_popup->add_shortcut(ED_GET_SHORTCUT("filesystem_dock/copy_name"), FILE_COPY_NAME); if (ResourceLoader::get_resource_uid(p_paths[0]) != ResourceUID::INVALID_ID) { p_popup->add_icon_shortcut(get_editor_theme_icon(SNAME("Instance")), ED_GET_SHORTCUT("filesystem_dock/copy_uid"), FILE_COPY_UID); } @@ -3630,6 +3639,8 @@ void FileSystemDock::_tree_gui_input(Ref p_event) { _tree_rmb_option(FILE_COPY_PATH); } else if (ED_IS_SHORTCUT("filesystem_dock/copy_absolute_path", p_event)) { _tree_rmb_option(FILE_COPY_ABSOLUTE_PATH); + } else if (ED_IS_SHORTCUT("filesystem_dock/copy_name", p_event)) { + _tree_rmb_option(FILE_COPY_NAME); } else if (ED_IS_SHORTCUT("filesystem_dock/copy_uid", p_event)) { _tree_rmb_option(FILE_COPY_UID); } else if (ED_IS_SHORTCUT("filesystem_dock/delete", p_event)) { @@ -3713,6 +3724,8 @@ void FileSystemDock::_file_list_gui_input(Ref p_event) { _file_list_rmb_option(FILE_COPY_PATH); } else if (ED_IS_SHORTCUT("filesystem_dock/copy_absolute_path", p_event)) { _file_list_rmb_option(FILE_COPY_ABSOLUTE_PATH); + } else if (ED_IS_SHORTCUT("filesystem_dock/copy_name", p_event)) { + _tree_rmb_option(FILE_COPY_NAME); } else if (ED_IS_SHORTCUT("filesystem_dock/delete", p_event)) { _file_list_rmb_option(FILE_REMOVE); } else if (ED_IS_SHORTCUT("filesystem_dock/rename", p_event)) { @@ -4033,6 +4046,7 @@ FileSystemDock::FileSystemDock() { // `KeyModifierMask::CMD_OR_CTRL | Key::C` conflicts with other editor shortcuts. ED_SHORTCUT("filesystem_dock/copy_path", TTRC("Copy Path"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::C); ED_SHORTCUT("filesystem_dock/copy_absolute_path", TTRC("Copy Absolute Path"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::ALT | Key::C); + ED_SHORTCUT("filesystem_dock/copy_name", TTR("Copy Name")); ED_SHORTCUT("filesystem_dock/copy_uid", TTRC("Copy UID"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::ALT | KeyModifierMask::SHIFT | Key::C); ED_SHORTCUT("filesystem_dock/duplicate", TTRC("Duplicate..."), KeyModifierMask::CMD_OR_CTRL | Key::D); ED_SHORTCUT("filesystem_dock/delete", TTRC("Delete"), Key::KEY_DELETE); diff --git a/editor/filesystem_dock.h b/editor/filesystem_dock.h index 0ed0de3d59e..6aae327155d 100644 --- a/editor/filesystem_dock.h +++ b/editor/filesystem_dock.h @@ -122,6 +122,7 @@ private: FILE_OPEN_IN_TERMINAL, FILE_COPY_PATH, FILE_COPY_ABSOLUTE_PATH, + FILE_COPY_NAME, FILE_COPY_UID, FOLDER_EXPAND_ALL, FOLDER_COLLAPSE_ALL,