diff options
Diffstat (limited to 'src/widgets/accessible/qaccessiblewidget.cpp')
| -rw-r--r-- | src/widgets/accessible/qaccessiblewidget.cpp | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/src/widgets/accessible/qaccessiblewidget.cpp b/src/widgets/accessible/qaccessiblewidget.cpp index 3d18117dd78..b4adae2e6e6 100644 --- a/src/widgets/accessible/qaccessiblewidget.cpp +++ b/src/widgets/accessible/qaccessiblewidget.cpp @@ -224,29 +224,20 @@ QAccessibleWidget::relations(QAccessible::Relation match /*= QAccessible::AllRel QList<std::pair<QAccessibleInterface *, QAccessible::Relation>> rels; if (match & QAccessible::Label) { const QAccessible::Relation rel = QAccessible::Label; - if (QWidget *parent = widget()->parentWidget()) { #if QT_CONFIG(shortcut) && QT_CONFIG(label) - // first check for all siblings that are labels to us - // ideally we would go through all objects and check, but that - // will be too expensive - const QList<QWidget*> kids = _q_ac_childWidgets(parent); - for (QWidget *kid : kids) { - if (QLabel *labelSibling = qobject_cast<QLabel*>(kid)) { - if (labelSibling->buddy() == widget()) { - QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(labelSibling); - rels.emplace_back(iface, rel); - } - } - } + for (QLabel *label : std::as_const(widget()->d_func()->labels)) { + Q_ASSERT(label); + QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(label); + rels.emplace_back(iface, rel); + } #endif #if QT_CONFIG(groupbox) - QGroupBox *groupbox = qobject_cast<QGroupBox*>(parent); - if (groupbox && !groupbox->title().isEmpty()) { - QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(groupbox); - rels.emplace_back(iface, rel); - } -#endif + QGroupBox *groupbox = qobject_cast<QGroupBox *>(widget()->parentWidget()); + if (groupbox && !groupbox->title().isEmpty()) { + QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(groupbox); + rels.emplace_back(iface, rel); } +#endif } if (match & QAccessible::Controlled) { |
