diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index 3b6ce8d3961..2d03c75eb5c 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -2385,6 +2385,12 @@ void FileSystemDock::_file_option(int p_option, const Vector &p_selected } } break; + case FILE_SHOW_IN_FILESYSTEM: { + if (!p_selected.is_empty()) { + navigate_to_path(p_selected[0]); + } + } break; + case FILE_DEPENDENCIES: { // Checkout the file dependencies. if (!p_selected.is_empty()) { @@ -3261,8 +3267,33 @@ void FileSystemDock::_file_and_folders_fill_popup(PopupMenu *p_popup, const Vect if (p_paths.size() == 1) { const String &fpath = p_paths[0]; + bool added_separator = false; + + if (favorites_list.has(fpath)) { + TreeItem *favorites_item = tree->get_root()->get_first_child(); + TreeItem *cursor_item = tree->get_selected(); + bool is_item_in_favorites = false; + while (cursor_item != nullptr) { + if (cursor_item == favorites_item) { + is_item_in_favorites = true; + break; + } + + cursor_item = cursor_item->get_parent(); + } + + if (is_item_in_favorites) { + p_popup->add_separator(); + added_separator = true; + p_popup->add_icon_item(get_editor_theme_icon(SNAME("ShowInFileSystem")), TTR("Show in FileSystem"), FILE_SHOW_IN_FILESYSTEM); + } + } + #if !defined(ANDROID_ENABLED) && !defined(WEB_ENABLED) - p_popup->add_separator(); + if (!added_separator) { + p_popup->add_separator(); + added_separator = true; + } // Opening the system file manager is not supported on the Android and web editors. const bool is_directory = fpath.ends_with("/"); diff --git a/editor/filesystem_dock.h b/editor/filesystem_dock.h index c9fe3a8bafc..61c00d6147b 100644 --- a/editor/filesystem_dock.h +++ b/editor/filesystem_dock.h @@ -116,6 +116,7 @@ private: FILE_INSTANTIATE, FILE_ADD_FAVORITE, FILE_REMOVE_FAVORITE, + FILE_SHOW_IN_FILESYSTEM, FILE_DEPENDENCIES, FILE_OWNERS, FILE_MOVE,