summaryrefslogtreecommitdiffstats
path: root/src/android
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2022-05-10 16:01:48 +0200
committerIvan Solovev <ivan.solovev@qt.io>2022-05-16 15:16:35 +0200
commit0613146d210e494bf98e0e4de97e03fc5021736e (patch)
treea0742b5462c4ae80b4b42677cba8cdcce3eb5a61 /src/android
parent53ee4c8b1f7ae72e7005166e1c0dbc4659f2ab32 (diff)
Android A11Y: handle LocationChanged event only for focused element
LocationChanged event unconditionally triggered invalidateVirtualViewId call. That call results in TYPE_WINDOW_CONTENT_CHANGED Android event, which causes a lot of background processing. That is not correct, because LocationChanged event is generated by every accessible element, not only the one that has A11Y focus. This patch checks event->uniqueId(), and processes only events that come from the focused accessible element. Done-with: Mike Achtelik <mike.achtelik@gmail.com> Task-number: QTBUG-102594 Pick-to: 6.3 6.2 5.15 Change-Id: I6b941733c9d215fed5ee5a7aeeb5be234add9ebe Reviewed-by: Mike Achtelik <mike.achtelik@gmail.com> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
Diffstat (limited to 'src/android')
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java4
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtNative.java4
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java5
-rw-r--r--src/android/java/src/org/qtproject/qt/android/bindings/QtActivity.java4
4 files changed, 9 insertions, 8 deletions
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 24098de241..bf9a7d5961 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 e750159d8c..bc090db25d 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 c5f5fb92e6..c8503b42da 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 0242f05693..47b500fbf3 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)