diff options
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/items/qquickaccessibleattached_p.h | 12 | ||||
-rw-r--r-- | src/quick/items/qquickitem.cpp | 10 | ||||
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 17 |
3 files changed, 31 insertions, 8 deletions
diff --git a/src/quick/items/qquickaccessibleattached_p.h b/src/quick/items/qquickaccessibleattached_p.h index 74f486ae7d..a11f40c535 100644 --- a/src/quick/items/qquickaccessibleattached_p.h +++ b/src/quick/items/qquickaccessibleattached_p.h @@ -127,6 +127,18 @@ public: return obj->setProperty(propertyName, value); } + static QObject *findAccessible(QObject *object, QAccessible::Role role = QAccessible::NoRole) + { + while (object) { + QObject *att = QQuickAccessibleAttached::attachedProperties(object); + if (att && (role == QAccessible::NoRole || att->property("role").toInt() == role)) { + break; + } + object = object->parent(); + } + return object; + } + Q_SIGNALS: void roleChanged(); diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 2340da9b9f..b23ff68abd 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -3129,8 +3129,12 @@ void QQuickItem::inputMethodEvent(QInputMethodEvent *event) void QQuickItem::focusInEvent(QFocusEvent * /*event*/) { #ifndef QT_NO_ACCESSIBILITY - QAccessibleEvent ev(this, QAccessible::Focus); - QAccessible::updateAccessibility(&ev); + if (QAccessible::isActive()) { + if (QObject *acc = QQuickAccessibleAttached::findAccessible(this)) { + QAccessibleEvent ev(acc, QAccessible::Focus); + QAccessible::updateAccessibility(&ev); + } + } #endif } @@ -5274,7 +5278,7 @@ void QQuickItem::setFlags(Flags flags) } } - if ((flags & ItemClipsChildrenToShape ) != (d->flags & ItemClipsChildrenToShape)) + if ((flags & ItemClipsChildrenToShape) != (d->flags & ItemClipsChildrenToShape)) d->dirty(QQuickItemPrivate::Clip); d->flags = flags; diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index fee49593ee..6dd8fb157d 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -59,6 +59,7 @@ #ifndef QT_NO_ACCESSIBILITY #include "qaccessible.h" +#include "qquickaccessibleattached_p.h" #endif QT_BEGIN_NAMESPACE @@ -3374,9 +3375,11 @@ void QQuickTextInputPrivate::internalSetText(const QString &txt, int pos, bool e #ifdef QT_NO_ACCESSIBILITY Q_UNUSED(changed) #else - if (changed) { - QAccessibleTextUpdateEvent ev(q, 0, oldText, m_text); - QAccessible::updateAccessibility(&ev); + if (changed && QAccessible::isActive()) { + if (QObject *acc = QQuickAccessibleAttached::findAccessible(q, QAccessible::EditableText)) { + QAccessibleTextUpdateEvent ev(acc, 0, oldText, m_text); + QAccessible::updateAccessibility(&ev); + } } #endif } @@ -4025,8 +4028,12 @@ bool QQuickTextInputPrivate::emitCursorPositionChanged() } #ifndef QT_NO_ACCESSIBILITY - QAccessibleTextCursorEvent ev(q, m_cursor); - QAccessible::updateAccessibility(&ev); + if (QAccessible::isActive()) { + if (QObject *acc = QQuickAccessibleAttached::findAccessible(q, QAccessible::EditableText)) { + QAccessibleTextCursorEvent ev(acc, m_cursor); + QAccessible::updateAccessibility(&ev); + } + } #endif return true; |