diff options
Diffstat (limited to 'src/plugins/platforms/android/qandroidplatformaccessibility.cpp')
-rw-r--r-- | src/plugins/platforms/android/qandroidplatformaccessibility.cpp | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformaccessibility.cpp b/src/plugins/platforms/android/qandroidplatformaccessibility.cpp index fdff9c3eba..b29190d3e9 100644 --- a/src/plugins/platforms/android/qandroidplatformaccessibility.cpp +++ b/src/plugins/platforms/android/qandroidplatformaccessibility.cpp @@ -42,7 +42,6 @@ #include "androidjniaccessibility.h" QT_BEGIN_NAMESPACE - QAndroidPlatformAccessibility::QAndroidPlatformAccessibility() { QtAndroidAccessibility::initialize(); @@ -51,9 +50,33 @@ QAndroidPlatformAccessibility::QAndroidPlatformAccessibility() QAndroidPlatformAccessibility::~QAndroidPlatformAccessibility() {} -void QAndroidPlatformAccessibility::notifyAccessibilityUpdate(QAccessibleEvent */*event*/) +void QAndroidPlatformAccessibility::notifyAccessibilityUpdate(QAccessibleEvent *event) +{ + if (!isActive() || event == nullptr || !event->accessibleInterface()) + return; + + // We do not need implementation of all events, as current statues are polled + // by QtAccessibilityDelegate.java on every accessibility interaction. + // Currently we only send notification about the element's position change, + // so that the element can be moved on the screen if it's focused. + + if (event->type() == QAccessible::LocationChanged) { + QtAndroidAccessibility::notifyLocationChange(event->uniqueId()); + } else if (event->type() == QAccessible::ObjectHide) { + QtAndroidAccessibility::notifyObjectHide(event->uniqueId()); + } else if (event->type() == QAccessible::Focus) { + QtAndroidAccessibility::notifyObjectFocus(event->uniqueId()); + } else if (event->type() == QAccessible::ValueChanged) { + QtAndroidAccessibility::notifyValueChanged(event->uniqueId()); + } else if (event->type() == QAccessible::ScrollingEnd) { + QtAndroidAccessibility::notifyScrolledEvent(event->uniqueId()); + } +} + +void QAndroidPlatformAccessibility::setRootObject(QObject *obj) { - // FIXME send events + QPlatformAccessibility::setRootObject(obj); + QtAndroidAccessibility::createAccessibilityContextObject(obj); } QT_END_NAMESPACE |