aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@qt.io>2017-02-05 10:33:43 +0100
committerFrederik Gladhorn <frederik.gladhorn@qt.io>2017-02-06 11:14:12 +0000
commitbe96a21a3706d46f00a1f8609fcd19ee5760c121 (patch)
treea3c94b988a146bcdcda65a20f43c99e4c2190818
parent04c98022d934b5ba0a6492e3556416386ce5d70e (diff)
Implement QAccessibleQuickWindow::focusChild
When we post a focus change notification, VoiceOver verifies what the application thinks is focused. Without this function, when moving the keyboard focus (e.g. by pressing tab) the VO focus will not follow. [ChangeLog][QtQuick][Accessibility] Fixed focus handling so that keyboard and VoiceOver's virtual focus are in sync (QTBUG-58340). Task-number: QTBUG-58340 Change-Id: I7d4871c13b36c3ab9241614ca8a06452461e3cd1 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
-rw-r--r--src/quick/accessible/qaccessiblequickview.cpp8
-rw-r--r--src/quick/accessible/qaccessiblequickview_p.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/src/quick/accessible/qaccessiblequickview.cpp b/src/quick/accessible/qaccessiblequickview.cpp
index 222690e4f2..b3d1b6fc0f 100644
--- a/src/quick/accessible/qaccessiblequickview.cpp
+++ b/src/quick/accessible/qaccessiblequickview.cpp
@@ -81,6 +81,14 @@ QAccessibleInterface *QAccessibleQuickWindow::child(int index) const
return 0;
}
+QAccessibleInterface *QAccessibleQuickWindow::focusChild() const
+{
+ QObject *focusObject = window()->focusObject();
+ if (focusObject)
+ return QAccessible::queryAccessibleInterface(focusObject);
+ return nullptr;
+}
+
QAccessible::Role QAccessibleQuickWindow::role() const
{
return QAccessible::Window; // FIXME
diff --git a/src/quick/accessible/qaccessiblequickview_p.h b/src/quick/accessible/qaccessiblequickview_p.h
index 007a6fd990..fcd0bec85e 100644
--- a/src/quick/accessible/qaccessiblequickview_p.h
+++ b/src/quick/accessible/qaccessiblequickview_p.h
@@ -65,6 +65,7 @@ public:
QAccessibleInterface *parent() const;
QAccessibleInterface *child(int index) const;
+ QAccessibleInterface *focusChild() const override;
QAccessible::Role role() const;
QAccessible::State state() const;