diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index d4bd97a3938..59351a8efc1 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -685,7 +685,15 @@ void FileSystemDock::_tree_multi_selected(Object *p_item, int p_column, bool p_s } Vector FileSystemDock::get_selected_paths() const { - return _tree_get_selected(false); + if (display_mode == DISPLAY_MODE_TREE_ONLY) { + return _tree_get_selected(false); + } else { + Vector selected = _file_list_get_selected(); + if (selected.is_empty()) { + selected.push_back(get_current_directory()); + } + return selected; + } } String FileSystemDock::get_current_path() const { @@ -2049,6 +2057,15 @@ Vector FileSystemDock::_tree_get_selected(bool remove_self_inclusion, bo return selected_strings; } +Vector FileSystemDock::_file_list_get_selected() const { + Vector selected; + + for (int idx : files->get_selected_items()) { + selected.push_back(files->get_item_metadata(idx)); + } + return selected; +} + Vector FileSystemDock::_remove_self_included_paths(Vector selected_strings) { // Remove paths or files that are included into another. if (selected_strings.size() > 1) { diff --git a/editor/filesystem_dock.h b/editor/filesystem_dock.h index 959ace8eba9..2f54cb91db0 100644 --- a/editor/filesystem_dock.h +++ b/editor/filesystem_dock.h @@ -359,6 +359,7 @@ private: void _update_display_mode(bool p_force = false); Vector _tree_get_selected(bool remove_self_inclusion = true, bool p_include_unselected_cursor = false) const; + Vector _file_list_get_selected() const; bool _is_file_type_disabled_by_feature_profile(const StringName &p_class);