Fix `EditorInterface.get_selected_paths()` working incorrectly when FileSystemDock is in split mode

(cherry picked from commit b55e97cd85)
This commit is contained in:
Artemy Fedotov 2024-07-24 20:01:11 +04:00 committed by Rémi Verschelde
parent d8c13f88ed
commit 4168220169
No known key found for this signature in database
GPG Key ID: C3336907360768E1
2 changed files with 19 additions and 1 deletions

View File

@ -685,7 +685,15 @@ void FileSystemDock::_tree_multi_selected(Object *p_item, int p_column, bool p_s
}
Vector<String> FileSystemDock::get_selected_paths() const {
return _tree_get_selected(false);
if (display_mode == DISPLAY_MODE_TREE_ONLY) {
return _tree_get_selected(false);
} else {
Vector<String> 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<String> FileSystemDock::_tree_get_selected(bool remove_self_inclusion, bo
return selected_strings;
}
Vector<String> FileSystemDock::_file_list_get_selected() const {
Vector<String> selected;
for (int idx : files->get_selected_items()) {
selected.push_back(files->get_item_metadata(idx));
}
return selected;
}
Vector<String> FileSystemDock::_remove_self_included_paths(Vector<String> selected_strings) {
// Remove paths or files that are included into another.
if (selected_strings.size() > 1) {

View File

@ -359,6 +359,7 @@ private:
void _update_display_mode(bool p_force = false);
Vector<String> _tree_get_selected(bool remove_self_inclusion = true, bool p_include_unselected_cursor = false) const;
Vector<String> _file_list_get_selected() const;
bool _is_file_type_disabled_by_feature_profile(const StringName &p_class);