From 5f0dd6f6836b03015c0a0c581f376fdccae4b38f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pa=CC=84vels=20Nadtoc=CC=8Cajevs?= <7645683+bruvzg@users.noreply.github.com> Date: Wed, 11 Mar 2026 14:44:48 +0200 Subject: [PATCH] [Accessibility] Do not use activation/deactivation callbacks for embedded windows. --- scene/main/window.cpp | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/scene/main/window.cpp b/scene/main/window.cpp index d864d92a2f..e08204d9ac 100644 --- a/scene/main/window.cpp +++ b/scene/main/window.cpp @@ -957,12 +957,16 @@ void Window::hide() { void Window::_accessibility_activate() { _accessibility_notify_enter(this); - AccessibilityServer::get_singleton()->window_activation_completed(get_window_id()); + if (!get_embedder()) { + AccessibilityServer::get_singleton()->window_activation_completed(get_window_id()); + } } void Window::_accessibility_deactivate() { _accessibility_notify_exit(this); - AccessibilityServer::get_singleton()->window_deactivation_completed(get_window_id()); + if (!get_embedder()) { + AccessibilityServer::get_singleton()->window_deactivation_completed(get_window_id()); + } } void Window::_accessibility_notify_enter(Node *p_node) { @@ -1054,12 +1058,16 @@ void Window::set_visible(bool p_visible) { if (get_tree() && get_tree()->is_accessibility_supported()) { get_tree()->_accessibility_force_update(); _accessibility_notify_enter(this); - AccessibilityServer::get_singleton()->window_activation_completed(get_window_id()); + if (!embedder_vp) { + AccessibilityServer::get_singleton()->window_activation_completed(get_window_id()); + } } } else { if (get_tree() && get_tree()->is_accessibility_supported()) { _accessibility_notify_exit(this); - AccessibilityServer::get_singleton()->window_deactivation_completed(get_window_id()); + if (!embedder_vp) { + AccessibilityServer::get_singleton()->window_deactivation_completed(get_window_id()); + } } focused = false; if (focused_window == this) { @@ -1676,7 +1684,9 @@ void Window::_notification(int p_what) { if (window_id != DisplayServerEnums::MAIN_WINDOW_ID && get_tree() && get_tree()->is_accessibility_supported()) { get_tree()->_accessibility_force_update(); _accessibility_notify_enter(this); - AccessibilityServer::get_singleton()->window_activation_completed(get_window_id()); + if (!embedder) { + AccessibilityServer::get_singleton()->window_activation_completed(get_window_id()); + } } notification(NOTIFICATION_VISIBILITY_CHANGED); emit_signal(SceneStringName(visibility_changed)); @@ -1731,7 +1741,9 @@ void Window::_notification(int p_what) { if (visible && window_id != DisplayServerEnums::MAIN_WINDOW_ID) { if (get_tree() && get_tree()->is_accessibility_supported()) { _accessibility_notify_exit(this); - AccessibilityServer::get_singleton()->window_deactivation_completed(get_window_id()); + if (!embedder) { + AccessibilityServer::get_singleton()->window_deactivation_completed(get_window_id()); + } if (get_parent()) { get_parent()->queue_accessibility_update(); }