浏览代码

Add option to copy a file's name in the FileSystem dock

Michael Alexsander 1 年之前
父节点
当前提交
2569416881
共有 2 个文件被更改,包括 15 次插入0 次删除
  1. 14 0
      editor/filesystem_dock.cpp
  2. 1 0
      editor/filesystem_dock.h

+ 14 - 0
editor/filesystem_dock.cpp

@@ -2547,6 +2547,14 @@ void FileSystemDock::_file_option(int p_option, const Vector<String> &p_selected
 			}
 			}
 		} break;
 		} 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: {
 		case FILE_COPY_UID: {
 			if (!p_selected.is_empty()) {
 			if (!p_selected.is_empty()) {
 				ResourceUID::ID uid = ResourceLoader::get_resource_uid(p_selected[0]);
 				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) {
 	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_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_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) {
 		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);
 			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<InputEvent> p_event) {
 			_tree_rmb_option(FILE_COPY_PATH);
 			_tree_rmb_option(FILE_COPY_PATH);
 		} else if (ED_IS_SHORTCUT("filesystem_dock/copy_absolute_path", p_event)) {
 		} else if (ED_IS_SHORTCUT("filesystem_dock/copy_absolute_path", p_event)) {
 			_tree_rmb_option(FILE_COPY_ABSOLUTE_PATH);
 			_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)) {
 		} else if (ED_IS_SHORTCUT("filesystem_dock/copy_uid", p_event)) {
 			_tree_rmb_option(FILE_COPY_UID);
 			_tree_rmb_option(FILE_COPY_UID);
 		} else if (ED_IS_SHORTCUT("filesystem_dock/delete", p_event)) {
 		} else if (ED_IS_SHORTCUT("filesystem_dock/delete", p_event)) {
@@ -3713,6 +3724,8 @@ void FileSystemDock::_file_list_gui_input(Ref<InputEvent> p_event) {
 			_file_list_rmb_option(FILE_COPY_PATH);
 			_file_list_rmb_option(FILE_COPY_PATH);
 		} else if (ED_IS_SHORTCUT("filesystem_dock/copy_absolute_path", p_event)) {
 		} else if (ED_IS_SHORTCUT("filesystem_dock/copy_absolute_path", p_event)) {
 			_file_list_rmb_option(FILE_COPY_ABSOLUTE_PATH);
 			_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)) {
 		} else if (ED_IS_SHORTCUT("filesystem_dock/delete", p_event)) {
 			_file_list_rmb_option(FILE_REMOVE);
 			_file_list_rmb_option(FILE_REMOVE);
 		} else if (ED_IS_SHORTCUT("filesystem_dock/rename", p_event)) {
 		} 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.
 	// `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_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_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/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/duplicate", TTRC("Duplicate..."), KeyModifierMask::CMD_OR_CTRL | Key::D);
 	ED_SHORTCUT("filesystem_dock/delete", TTRC("Delete"), Key::KEY_DELETE);
 	ED_SHORTCUT("filesystem_dock/delete", TTRC("Delete"), Key::KEY_DELETE);

+ 1 - 0
editor/filesystem_dock.h

@@ -122,6 +122,7 @@ private:
 		FILE_OPEN_IN_TERMINAL,
 		FILE_OPEN_IN_TERMINAL,
 		FILE_COPY_PATH,
 		FILE_COPY_PATH,
 		FILE_COPY_ABSOLUTE_PATH,
 		FILE_COPY_ABSOLUTE_PATH,
+		FILE_COPY_NAME,
 		FILE_COPY_UID,
 		FILE_COPY_UID,
 		FOLDER_EXPAND_ALL,
 		FOLDER_EXPAND_ALL,
 		FOLDER_COLLAPSE_ALL,
 		FOLDER_COLLAPSE_ALL,