diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index b05c0d85f8..ceff9092fc 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -1443,6 +1443,20 @@ void EditorNode::_sources_changed(bool p_exist) { if (!singleton->cmdline_mode) { EditorResourcePreview::get_singleton()->start(); } + + // Set initial focus for screen reader users. + if (get_tree()->is_accessibility_enabled()) { + if (SceneTreeDock::get_singleton()->is_visible_in_tree()) { + SceneTreeDock::get_singleton()->get_tree_editor()->get_scene_tree()->grab_focus(); + } else { + TabContainer *tab_container = EditorDockManager::get_singleton()->get_dock_tab_container(SceneTreeDock::get_singleton()); + if (tab_container) { + // Another tab is active (e.g., Import) - focus the tab bar so user can switch. + tab_container->get_tab_bar()->grab_focus(); + } + } + } + get_tree()->create_timer(1.0f)->connect("timeout", callable_mp(this, &EditorNode::_remove_lock_file)); } }