diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index 4fafdefbb5..267514ffde 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -1338,6 +1338,10 @@ void FileSystemDock::_fs_changed() { } set_process(false); + if (had_focus) { + had_focus->grab_focus(); + had_focus = nullptr; + } } void FileSystemDock::_set_scanning_mode() { @@ -2675,6 +2679,12 @@ bool FileSystemDock::_matches_all_search_tokens(const String &p_text) { } void FileSystemDock::_rescan() { + if (tree->has_focus()) { + had_focus = tree; + } else if (files->has_focus()) { + had_focus = files; + } + _set_scanning_mode(); EditorFileSystem::get_singleton()->scan(); } diff --git a/editor/filesystem_dock.h b/editor/filesystem_dock.h index 0ed0de3d59..dac535efb8 100644 --- a/editor/filesystem_dock.h +++ b/editor/filesystem_dock.h @@ -235,6 +235,7 @@ private: bool import_dock_needs_update = false; TreeItem *resources_item = nullptr; TreeItem *favorites_item = nullptr; + Control *had_focus = nullptr; bool holding_branch = false; Vector tree_items_selected_on_drag_begin;