Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
6.2.4
-
None
Description
When a QML component is loading on Android while the TalkBack screen reader is running, the Qt framework fires too many TYPE_WINDOW_CONTENT_CHANGED accessibility events. This makes TalkBack slow to starting reading a QML component, because the flood of events need to be processed before TalkBack can start reading.
A lot of QQuickItem::geometryChange calls happen during the component loading. This leads to QQuickItem::geometryChange calling QAccessible::updateAccessibility(QAccessible::LocationChanged), which triggers QtAccessibilityDelegate.notifyLocationChange. Eventually, this leads to as many sendEventForVirtualViewId(TYPE_WINDOW_CONTENT_CHANGED) calls on Android.
This delay in screen reading can be 10 seconds or more for a medium or large QML component.
A possible fix could be for Qt to collapse these TYPE_WINDOW_CONTENT_CHANGED events into one when a QML component is loading.
See a similar problem in the Flutter framework here: https://github.com/flutter/flutter/issues/14534
Please consider fixing this issue because it has a big effect on Accessibility on Android.