Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
5.15.5, 6.5.1
-
None
Description
If a checkable control is checked it can result in a lot of recursive function calls in unignoredChildren, when the control is created or deleted.
Depending on the size of the UI and the amount of controls with accessible support it can take up to seconds to create or destroy the control (for the function windowForAccessible to finish).
Attached an example qml file with a few different scenarios that can recreate the problem.
This could possible have been introduced with the fix for QTBUG-70199.
Callstack example from Qt 6.5.1:
1 unignoredChildren qaccessiblequickitem.cpp 392 2 accessibleUnignoredChildren qaccessiblequickitem.cpp 407 3 QAccessibleQuickWindow::rootItems qaccessiblequickview.cpp 25 4 QAccessibleQuickWindow::child qaccessiblequickview.cpp 42 5 QWindowsUiAutomation::windowForAccessible qwindowsuiautils.cpp 38 6 QWindowsUiaMainProvider::get_FragmentRoot qwindowsuiamainprovider.cpp 675 7 UiaGetReservedMixedAttributeValue UIAutomationCore 8 UiaGetReservedMixedAttributeValue UIAutomationCore 9 UiaRaiseAutomationPropertyChangedEvent UIAutomationCore 10 QWindowsUiaWrapper::raiseAutomationPropertyChangedEvent qwindowsuiawrapper.cpp 72 11 QWindowsUiaMainProvider::notifyStateChange qwindowsuiamainprovider.cpp 101 12 QWindowsUiaAccessibility::notifyAccessibilityUpdate qwindowsuiaaccessibility.cpp 137 13 QAccessible::updateAccessibility qaccessible.cpp 863 14 QQuickAccessibleAttached::set_checked qquickaccessibleattached_p.h 64 15 QQuickAccessibleAttached::qt_static_metacall moc_qquickaccessibleattached_p.cpp 921 16 QQuickAccessibleAttached::qt_metacall moc_qquickaccessibleattached_p.cpp 972 17 QMetaObject::metacall qmetaobject.cpp 330 18 QMetaProperty::write qmetaobject.cpp 3673 19 QObject::setProperty qobject.cpp 4174 20 QQuickAccessibleAttached::setProperty qquickaccessibleattached_p.h 137 21 QQuickControl::setAccessibleProperty qquickcontrol.cpp 2233 22 QQuickAbstractButton::setChecked qquickabstractbutton.cpp 639 23 QQuickAbstractButton::qt_static_metacall moc_qquickabstractbutton_p.cpp 773 24 QQmlPropertyData::writeProperty qqmlpropertydata_p.h 339 25 QQmlObjectCreator::setPropertyValue qqmlobjectcreator.cpp 520 26 QQmlObjectCreator::setPropertyBinding qqmlobjectcreator.cpp 1168 27 QQmlObjectCreator::setupBindings qqmlobjectcreator.cpp 767 28 QQmlObjectCreator::populateInstance qqmlobjectcreator.cpp 1705 29 QQmlObjectCreator::createInstance qqmlobjectcreator.cpp 1379 30 QQmlObjectCreator::create qqmlobjectcreator.cpp 199