summaryrefslogtreecommitdiffstats
path: root/src/android
diff options
context:
space:
mode:
authorJens Trillmann <jens.trillmann@governikus.de>2022-06-28 14:10:30 +0200
committerJens Trillmann <jens.trillmann@governikus.de>2022-08-29 12:26:43 +0200
commit3c709198838866d5122c69a30cacdc806605d0cf (patch)
tree44b77ba5f27bfbf0e83365b8d6fc01ddb6b5016f /src/android
parentf5be5c6b14acb84ba1dac954c0284ded467f1542 (diff)
Android A11Y: Notify android about scroll events
QtQuick Flickable has an issue that after a scroll the previously hidden items are not added to the A11Y hierarchy. That happens because Android has no ways to detect that something has changed. This patch uses the ScrollingEnd event to notify Android A11Y backend that the Flickable was scrolled, so that it could update the A11Y hierarchy and add the previously hidden nodes. The ScrollingEnd event generation is added to QQuickFlickable in a separate commit. Task-number: QTBUG-103513 Pick-to: 6.4 6.3 6.2 5.15 Change-Id: Ie6cd688d56343bcfe7ce9580c0b9244dd6d6c068 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Samuel Mira <samuel.mira@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src/android')
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java8
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtNative.java12
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java5
3 files changed, 25 insertions, 0 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 c36459ad3a..b7415f2244 100644
--- a/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java
@@ -941,6 +941,14 @@ public class QtActivityDelegate
m_accessibilityDelegate.notifyValueChanged(viewId, value);
}
+ public void notifyScrolledEvent(int viewId)
+ {
+ if (m_accessibilityDelegate == null)
+ return;
+ m_accessibilityDelegate.notifyScrolledEvent(viewId);
+ }
+
+
public void notifyQtAndroidPluginRunning(boolean running)
{
m_isPluginRunning = running;
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 8140a46f11..e67990becc 100644
--- a/src/android/jar/src/org/qtproject/qt/android/QtNative.java
+++ b/src/android/jar/src/org/qtproject/qt/android/QtNative.java
@@ -985,6 +985,18 @@ public class QtNative
});
}
+ private static void notifyScrolledEvent(final int viewId)
+ {
+ runAction(new Runnable() {
+ @Override
+ public void run() {
+ if (m_activityDelegate != null) {
+ m_activityDelegate.notifyScrolledEvent(viewId);
+ }
+ }
+ });
+ }
+
public static void notifyQtAndroidPluginRunning(final boolean running)
{
m_activityDelegate.notifyQtAndroidPluginRunning(running);
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 84cbc0b456..1c0711d237 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
@@ -157,6 +157,11 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate
return true;
}
+ public void notifyScrolledEvent(int viewId)
+ {
+ sendEventForVirtualViewId(viewId, AccessibilityEvent.TYPE_VIEW_SCROLLED);
+ }
+
public void notifyLocationChange(int viewId)
{
if (m_focusedVirtualViewId == viewId)