diff options
Diffstat (limited to 'src/quick/accessible/qaccessiblequickitem.cpp')
-rw-r--r-- | src/quick/accessible/qaccessiblequickitem.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/quick/accessible/qaccessiblequickitem.cpp b/src/quick/accessible/qaccessiblequickitem.cpp index 3234d3d85f..e13224f6fb 100644 --- a/src/quick/accessible/qaccessiblequickitem.cpp +++ b/src/quick/accessible/qaccessiblequickitem.cpp @@ -39,7 +39,6 @@ #include "QtQuick/private/qquicktext_p.h" #include "QtQuick/private/qquickaccessibleattached_p.h" #include "QtQuick/qquicktextdocument.h" - QT_BEGIN_NAMESPACE #ifndef QT_NO_ACCESSIBILITY @@ -217,16 +216,24 @@ QStringList QAccessibleQuickItem::actionNames() const QStringList actions = QQmlAccessible::actionNames(); if (state().focusable) actions.append(QAccessibleActionInterface::setFocusAction()); + + // ### The following can lead to duplicate action names. We'll fix that when we kill QQmlAccessible + if (QQuickAccessibleAttached *attached = QQuickAccessibleAttached::attachedProperties(item())) + attached->availableActions(&actions); return actions; } void QAccessibleQuickItem::doAction(const QString &actionName) { + bool accepted = false; if (actionName == QAccessibleActionInterface::setFocusAction()) { item()->forceActiveFocus(); - } else { - QQmlAccessible::doAction(actionName); + accepted = true; } + if (QQuickAccessibleAttached *attached = QQuickAccessibleAttached::attachedProperties(item())) + accepted = attached->doAction(actionName); + if (!accepted) + QQmlAccessible::doAction(actionName); } QStringList QAccessibleQuickItem::keyBindingsForAction(const QString &actionName) const |