From 1fb12800a8907680b821a8e8e29c5b428cbb64b6 Mon Sep 17 00:00:00 2001 From: Harald Sitter Date: Mon, 28 Nov 2022 14:59:33 +0100 Subject: [PATCH 20/21] 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 eb3df4d4cd..78e2ab302c 100644 --- a/src/quick/accessible/qaccessiblequickitem.cpp +++ b/src/quick/accessible/qaccessiblequickitem.cpp @@ -210,6 +210,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 4cf73ff73d..dec0ae19ae 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -6174,6 +6174,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.39.0