diff options
author | André de la Rocha <andre.rocha@qt.io> | 2022-08-31 16:02:56 +0200 |
---|---|---|
committer | André de la Rocha <andre.rocha@qt.io> | 2022-08-31 22:58:24 +0200 |
commit | 0d3f09ac0231fca114aa58553144b78f8040a2e1 (patch) | |
tree | d97cebc59c8cf46f718465a2030d151a86c5765b /src/widgets/accessible | |
parent | f082458c4609dfa20fdfb8bfe3e625c311b145da (diff) |
Fix tree/table/list accessibility state
The accessibility class associated with trees, tables and lists was
reporting a default/empty state, causing issues with accessibility
tools.
Fixes: QTBUG-92964
Pick-to: 6.4 6.3 6.2
Change-Id: I9c8ee5e7e582fd6b6a59cd70437eeddad0f4eb8e
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/widgets/accessible')
-rw-r--r-- | src/widgets/accessible/itemviews.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/widgets/accessible/itemviews.cpp b/src/widgets/accessible/itemviews.cpp index 6da2461a6a..64204c2e59 100644 --- a/src/widgets/accessible/itemviews.cpp +++ b/src/widgets/accessible/itemviews.cpp @@ -373,7 +373,27 @@ QAccessible::Role QAccessibleTable::role() const QAccessible::State QAccessibleTable::state() const { - return QAccessible::State(); + QAccessible::State state; + const auto *w = view(); + + if (w->testAttribute(Qt::WA_WState_Visible) == false) + state.invisible = true; + if (w->focusPolicy() != Qt::NoFocus) + state.focusable = true; + if (w->hasFocus()) + state.focused = true; + if (!w->isEnabled()) + state.disabled = true; + if (w->isWindow()) { + if (w->windowFlags() & Qt::WindowSystemMenuHint) + state.movable = true; + if (w->minimumSize() != w->maximumSize()) + state.sizeable = true; + if (w->isActiveWindow()) + state.active = true; + } + + return state; } QAccessibleInterface *QAccessibleTable::childAt(int x, int y) const |