From 24dd58166de07a3657486fceaf93d64ea6824467 Mon Sep 17 00:00:00 2001 From: Harald Sitter Date: Mon, 28 Nov 2022 14:59:33 +0100 Subject: [PATCH 11/25] a11y: track item enabled state MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit disabled items are neither enabled nor focusable Change-Id: I4f286c7b85605d5ad6fa787d1f5cfcce1297d268 Reviewed-by: Volker Hilsheimer Reviewed-by: Jan Arve Sæther (cherry picked from commit 20fd2902a6d7bdb4a3306005d2718ca5a8fef96d) --- src/quick/accessible/qaccessiblequickitem.cpp | 4 ++++ src/quick/items/qquickitem.cpp | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/src/quick/accessible/qaccessiblequickitem.cpp b/src/quick/accessible/qaccessiblequickitem.cpp index 0692ce634d..a8df58d450 100644 --- a/src/quick/accessible/qaccessiblequickitem.cpp +++ b/src/quick/accessible/qaccessiblequickitem.cpp @@ -215,6 +215,10 @@ QAccessible::State QAccessibleQuickItem::state() const if (role() == QAccessible::EditableText) if (auto ti = qobject_cast(item())) state.passwordEdit = ti->echoMode() != QQuickTextInput::Normal; + if (!item()->isEnabled()) { + state.focusable = false; + state.disabled = true; + } return state; } diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 867bfc8172..708dc5fe5e 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -6175,6 +6175,15 @@ void QQuickItemPrivate::setEffectiveEnableRecur(QQuickItem *scope, bool newEffec } itemChange(QQuickItem::ItemEnabledHasChanged, effectiveEnable); +#if QT_CONFIG(accessibility) + if (isAccessible) { + QAccessible::State changedState; + changedState.disabled = true; + changedState.focusable = true; + QAccessibleStateChangeEvent ev(q, changedState); + QAccessible::updateAccessibility(&ev); + } +#endif emit q->enabledChanged(); } -- 2.46.0