diff --git a/src/quick/items/qquickaccessibleattached.cpp b/src/quick/items/qquickaccessibleattached.cpp index 46f85417d2..27efebca0c 100644 --- a/src/quick/items/qquickaccessibleattached.cpp +++ b/src/quick/items/qquickaccessibleattached.cpp @@ -144,6 +144,10 @@ QQuickAccessibleAttached::QQuickAccessibleAttached(QObject *parent) // Enable accessibility for items with accessible content. This also // enables accessibility for the ancestors of souch items. item->d_func()->setAccessibleFlagAndListener(); +#ifndef QT_NO_ACCESSIBILITY + QAccessibleEvent ev(item, QAccessible::ObjectCreated); + QAccessible::updateAccessibility(&ev); +#endif } QQuickAccessibleAttached::~QQuickAccessibleAttached() diff --git a/src/quick/items/qquickaccessibleattached_p.h b/src/quick/items/qquickaccessibleattached_p.h index 129c3ef240..419f21a4b3 100644 --- a/src/quick/items/qquickaccessibleattached_p.h +++ b/src/quick/items/qquickaccessibleattached_p.h @@ -85,6 +85,10 @@ class Q_QUICK_PRIVATE_EXPORT QQuickAccessibleAttached : public QObject if (name != m_name) { m_name = name; emit nameChanged(); +#ifndef QT_NO_ACCESSIBILITY + QAccessibleEvent ev(parent(), QAccessible::NameChanged); + QAccessible::updateAccessibility(&ev); +#endif } } @@ -94,6 +98,10 @@ class Q_QUICK_PRIVATE_EXPORT QQuickAccessibleAttached : public QObject if (m_description != description) { m_description = description; emit descriptionChanged(); +#ifndef QT_NO_ACCESSIBILITY + QAccessibleEvent ev(parent(), QAccessible::DescriptionChanged); + QAccessible::updateAccessibility(&ev); +#endif } } diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index a5b70bb1f2..caf1195b6c 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -3122,6 +3122,10 @@ void QQuickItem::inputMethodEvent(QInputMethodEvent *event) void QQuickItem::focusInEvent(QFocusEvent *) { +#ifndef QT_NO_ACCESSIBILITY + QAccessibleEvent ev(this, QAccessible::Focus); + QAccessible::updateAccessibility(&ev); +#endif } void QQuickItem::focusOutEvent(QFocusEvent *) @@ -4085,7 +4089,12 @@ bool QQuickItemPrivate::setEffectiveVisibleRecur(bool newEffectiveVisible) childVisibilityChanged |= QQuickItemPrivate::get(childItems.at(ii))->setEffectiveVisibleRecur(newEffectiveVisible); itemChange(QQuickItem::ItemVisibleHasChanged, effectiveVisible); - +#ifndef QT_NO_ACCESSIBILITY + if (isAccessible) { + QAccessibleEvent ev(q, effectiveVisible ? QAccessible::ObjectShow : QAccessible::ObjectHide); + QAccessible::updateAccessibility(&ev); + } +#endif emit q->visibleChanged(); if (childVisibilityChanged) emit q->visibleChildrenChanged(); diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index 7d7fe851b3..94856b63ab 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -3302,6 +3302,7 @@ bool QQuickTextInputPrivate::finishChange(int validateFromState, bool update, bo */ void QQuickTextInputPrivate::internalSetText(const QString &txt, int pos, bool edited) { + Q_Q(QQuickTextInput); internalDeselect(); QString oldText = m_text; if (m_maskData) { @@ -3315,7 +3316,15 @@ void QQuickTextInputPrivate::internalSetText(const QString &txt, int pos, bool e m_cursor = (pos < 0 || pos > m_text.length()) ? m_text.length() : pos; m_textDirty = (oldText != m_text); - finishChange(-1, true, edited); + bool changed = finishChange(-1, true, edited); +#ifdef QT_NO_ACCESSIBILITY + Q_UNUSED(changed) +#else + if (changed) { + QAccessibleTextUpdateEvent ev(q, 0, oldText, m_text); + QAccessible::updateAccessibility(&ev); + } +#endif } @@ -3939,6 +3948,11 @@ bool QQuickTextInputPrivate::emitCursorPositionChanged() } } +#ifndef QT_NO_ACCESSIBILITY + QAccessibleTextCursorEvent ev(q, m_cursor); + QAccessible::updateAccessibility(&ev); +#endif + return true; } return false;