summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/windows/uiautomation
diff options
context:
space:
mode:
authorAndré de la Rocha <andre.rocha@qt.io>2022-08-30 17:49:32 +0200
committerAndré de la Rocha <andre.rocha@qt.io>2022-09-02 18:31:35 +0200
commit3e95884081727b84df265e2fa3456f2393e61f7b (patch)
tree7dc465fe1b82ee95d45cffa4c3705f0f484984ae /src/plugins/platforms/windows/uiautomation
parent3eb2918f2ec95d1efd198106e78a109b1accfd86 (diff)
Windows QPA: send UIA focus notification after window activation
After a Qt application window was opened, and focus was moved to another window, and then back to the Qt application window, NVDA would only announce the window name, but not the widget focused within the window. This patch makes Qt send a notification focus for the focused widget after a window activation notification. Fixes: QTBUG-105735 Pick-to: 6.4 6.3 6.2 Change-Id: I3426b3613ae546de0ce363f9acc5d6776c99a8aa Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src/plugins/platforms/windows/uiautomation')
-rw-r--r--src/plugins/platforms/windows/uiautomation/qwindowsuiamainprovider.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/plugins/platforms/windows/uiautomation/qwindowsuiamainprovider.cpp b/src/plugins/platforms/windows/uiautomation/qwindowsuiamainprovider.cpp
index e75f9a3839..03cac60e08 100644
--- a/src/plugins/platforms/windows/uiautomation/qwindowsuiamainprovider.cpp
+++ b/src/plugins/platforms/windows/uiautomation/qwindowsuiamainprovider.cpp
@@ -103,6 +103,10 @@ void QWindowsUiaMainProvider::notifyStateChange(QAccessibleStateChangeEvent *eve
if (QWindowsUiaMainProvider *provider = providerForAccessible(accessible)) {
if (accessible->state().active) {
QWindowsUiaWrapper::instance()->raiseAutomationEvent(provider, UIA_Window_WindowOpenedEventId);
+ if (QAccessibleInterface *focused = accessible->focusChild()) {
+ if (QWindowsUiaMainProvider *focusedProvider = providerForAccessible(focused))
+ QWindowsUiaWrapper::instance()->raiseAutomationEvent(focusedProvider, UIA_AutomationFocusChangedEventId);
+ }
} else {
QWindowsUiaWrapper::instance()->raiseAutomationEvent(provider, UIA_Window_WindowClosedEventId);
}