Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-113860

UI can hang for seconds in certain scenarios when a checked control is created or deleted.

    XMLWordPrintable

Details

    • Windows

    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 
      

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            qt.team.quick.subscriptions Qt Quick and Widgets Team
            buggex buggex
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes