diff options
Diffstat (limited to 'src/plugins')
3 files changed, 17 insertions, 1 deletions
diff --git a/src/plugins/platforms/android/androidjniaccessibility.cpp b/src/plugins/platforms/android/androidjniaccessibility.cpp index 4012129b9f..a27c200362 100644 --- a/src/plugins/platforms/android/androidjniaccessibility.cpp +++ b/src/plugins/platforms/android/androidjniaccessibility.cpp @@ -72,20 +72,28 @@ namespace QtAndroidAccessibility static jmethodID m_setTextSelectionMethodID = 0; static jmethodID m_setVisibleToUserMethodID = 0; + static bool m_accessibilityActivated = false; + void initialize() { QJNIObjectPrivate::callStaticMethod<void>(QtAndroid::applicationClass(), "initializeAccessibility"); } + bool isActive() + { + return m_accessibilityActivated; + } + static void setActive(JNIEnv */*env*/, jobject /*thiz*/, jboolean active) { QMutexLocker lock(QtAndroid::platformInterfaceMutex()); QAndroidPlatformIntegration *platformIntegration = QtAndroid::androidPlatformIntegration(); + m_accessibilityActivated = active; if (platformIntegration) platformIntegration->accessibility()->setActive(active); else - __android_log_print(ANDROID_LOG_WARN, m_qtTag, "Could not activate platform accessibility."); + __android_log_print(ANDROID_LOG_WARN, m_qtTag, "Could not (yet) activate platform accessibility."); } QAccessibleInterface *interfaceFromId(jint objectId) diff --git a/src/plugins/platforms/android/androidjniaccessibility.h b/src/plugins/platforms/android/androidjniaccessibility.h index f393ce0b08..508ed4462b 100644 --- a/src/plugins/platforms/android/androidjniaccessibility.h +++ b/src/plugins/platforms/android/androidjniaccessibility.h @@ -47,6 +47,7 @@ QT_BEGIN_NAMESPACE namespace QtAndroidAccessibility { void initialize(); + bool isActive(); bool registerNatives(JNIEnv *env); } diff --git a/src/plugins/platforms/android/qandroidplatformintegration.cpp b/src/plugins/platforms/android/qandroidplatformintegration.cpp index d059096dbc..3d495724c6 100644 --- a/src/plugins/platforms/android/qandroidplatformintegration.cpp +++ b/src/plugins/platforms/android/qandroidplatformintegration.cpp @@ -55,6 +55,7 @@ #include <qpa/qplatformoffscreensurface.h> #include "androidjnimain.h" +#include "androidjniaccessibility.h" #include "qabstracteventdispatcher.h" #include "qandroideventdispatcher.h" #include "qandroidplatformbackingstore.h" @@ -151,6 +152,12 @@ void QAndroidPlatformNativeInterface::customEvent(QEvent *event) QMutexLocker lock(QtAndroid::platformInterfaceMutex()); QAndroidPlatformIntegration *api = static_cast<QAndroidPlatformIntegration *>(QGuiApplicationPrivate::platformIntegration()); QtAndroid::setAndroidPlatformIntegration(api); + +#ifndef QT_NO_ACCESSIBILITY + // Android accessibility activation event might have been already received + api->accessibility()->setActive(QtAndroidAccessibility::isActive()); +#endif // QT_NO_ACCESSIBILITY + api->flushPendingUpdates(); } |