diff --git a/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java index 24098de241c..bf9a7d59610 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java @@ -949,11 +949,11 @@ public class QtActivityDelegate m_splashScreen.startAnimation(fadeOut); } - public void notifyAccessibilityLocationChange() + public void notifyAccessibilityLocationChange(int viewId) { if (m_accessibilityDelegate == null) return; - m_accessibilityDelegate.notifyLocationChange(); + m_accessibilityDelegate.notifyLocationChange(viewId); } public void notifyObjectHide(int viewId, int parentId) diff --git a/src/android/jar/src/org/qtproject/qt/android/QtNative.java b/src/android/jar/src/org/qtproject/qt/android/QtNative.java index e750159d8ce..bc090db25d3 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtNative.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtNative.java @@ -973,13 +973,13 @@ public class QtNative return m_activityDelegate.isKeyboardVisible() && !m_isKeyboardHiding; } - private static void notifyAccessibilityLocationChange() + private static void notifyAccessibilityLocationChange(final int viewId) { runAction(new Runnable() { @Override public void run() { if (m_activityDelegate != null) { - m_activityDelegate.notifyAccessibilityLocationChange(); + m_activityDelegate.notifyAccessibilityLocationChange(viewId); } } }); diff --git a/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java b/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java index c5f5fb92e65..c8503b42dad 100644 --- a/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java @@ -193,9 +193,10 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate return true; } - public void notifyLocationChange() + public void notifyLocationChange(int viewId) { - invalidateVirtualViewId(m_focusedVirtualViewId); + if (m_focusedVirtualViewId == viewId) + invalidateVirtualViewId(m_focusedVirtualViewId); } public void notifyObjectHide(int viewId, int parentId) diff --git a/src/android/java/src/org/qtproject/qt/android/bindings/QtActivity.java b/src/android/java/src/org/qtproject/qt/android/bindings/QtActivity.java index 0242f05693e..47b500fbf37 100644 --- a/src/android/java/src/org/qtproject/qt/android/bindings/QtActivity.java +++ b/src/android/java/src/org/qtproject/qt/android/bindings/QtActivity.java @@ -1133,9 +1133,9 @@ public class QtActivity extends Activity QtNative.activityDelegate().updateSelection(selStart, selEnd, candidatesStart, candidatesEnd); } - public void notifyAccessibilityLocationChange() + public void notifyAccessibilityLocationChange(int viewId) { - QtNative.activityDelegate().notifyAccessibilityLocationChange(); + QtNative.activityDelegate().notifyAccessibilityLocationChange(viewId); } public void notifyObjectHide(int viewId, int parentId) diff --git a/src/plugins/platforms/android/androidjniaccessibility.cpp b/src/plugins/platforms/android/androidjniaccessibility.cpp index db40aaa54c9..5ed428e2631 100644 --- a/src/plugins/platforms/android/androidjniaccessibility.cpp +++ b/src/plugins/platforms/android/androidjniaccessibility.cpp @@ -135,9 +135,9 @@ namespace QtAndroidAccessibility return iface; } - void notifyLocationChange() + void notifyLocationChange(uint accessibilityObjectId) { - QtAndroid::notifyAccessibilityLocationChange(); + QtAndroid::notifyAccessibilityLocationChange(accessibilityObjectId); } static int parentId_helper(int objectId); // forward declaration diff --git a/src/plugins/platforms/android/androidjniaccessibility.h b/src/plugins/platforms/android/androidjniaccessibility.h index a6e2edee5e2..99d151bc3f5 100644 --- a/src/plugins/platforms/android/androidjniaccessibility.h +++ b/src/plugins/platforms/android/androidjniaccessibility.h @@ -51,7 +51,7 @@ namespace QtAndroidAccessibility void initialize(); bool isActive(); bool registerNatives(JNIEnv *env); - void notifyLocationChange(); + void notifyLocationChange(uint accessibilityObjectId); void notifyObjectHide(uint accessibilityObjectId); void notifyObjectFocus(uint accessibilityObjectId); void notifyValueChanged(uint accessibilityObjectId); diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp index ff27f770905..c755d4c7aa5 100644 --- a/src/plugins/platforms/android/androidjnimain.cpp +++ b/src/plugins/platforms/android/androidjnimain.cpp @@ -210,9 +210,10 @@ namespace QtAndroid QJniObject::callStaticMethod(m_applicationClass, "setSystemUiVisibility", "(I)V", jint(uiVisibility)); } - void notifyAccessibilityLocationChange() + void notifyAccessibilityLocationChange(uint accessibilityObjectId) { - QJniObject::callStaticMethod(m_applicationClass, "notifyAccessibilityLocationChange"); + QJniObject::callStaticMethod(m_applicationClass, "notifyAccessibilityLocationChange", + "(I)V", accessibilityObjectId); } void notifyObjectHide(uint accessibilityObjectId, uint parentObjectId) diff --git a/src/plugins/platforms/android/androidjnimain.h b/src/plugins/platforms/android/androidjnimain.h index d8e40f8b7fc..288d2b95b2c 100644 --- a/src/plugins/platforms/android/androidjnimain.h +++ b/src/plugins/platforms/android/androidjnimain.h @@ -100,7 +100,7 @@ namespace QtAndroid jobject createBitmap(int width, int height, QImage::Format format, JNIEnv *env); jobject createBitmapDrawable(jobject bitmap, JNIEnv *env = nullptr); - void notifyAccessibilityLocationChange(); + void notifyAccessibilityLocationChange(uint accessibilityObjectId); void notifyObjectHide(uint accessibilityObjectId, uint parentObjectId); void notifyObjectFocus(uint accessibilityObjectId); void notifyValueChanged(uint accessibilityObjectId, jstring value); diff --git a/src/plugins/platforms/android/qandroidplatformaccessibility.cpp b/src/plugins/platforms/android/qandroidplatformaccessibility.cpp index 706d1bb4fac..bdbf709b3d4 100644 --- a/src/plugins/platforms/android/qandroidplatformaccessibility.cpp +++ b/src/plugins/platforms/android/qandroidplatformaccessibility.cpp @@ -61,7 +61,7 @@ void QAndroidPlatformAccessibility::notifyAccessibilityUpdate(QAccessibleEvent * // so that the element can be moved on the screen if it's focused. if (event->type() == QAccessible::LocationChanged) { - QtAndroidAccessibility::notifyLocationChange(); + QtAndroidAccessibility::notifyLocationChange(event->uniqueId()); } else if (event->type() == QAccessible::ObjectHide) { QtAndroidAccessibility::notifyObjectHide(event->uniqueId()); } else if (event->type() == QAccessible::Focus) {