From 5ae5075b6b27501ef65b36a50a350caed515442a Mon Sep 17 00:00:00 2001 From: Reza Bakhshi Laktasaraei Date: Mon, 31 Aug 2026 05:05:57 +0330 Subject: [PATCH] Let one list child report its own accessibility role --- ui/accessible/ui_accessible_item.cpp | 5 ++++- ui/rp_widget.cpp | 4 ++++ ui/rp_widget.h | 7 +++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ui/accessible/ui_accessible_item.cpp b/ui/accessible/ui_accessible_item.cpp index 32fa54d9..8ad1bf32 100644 --- a/ui/accessible/ui_accessible_item.cpp +++ b/ui/accessible/ui_accessible_item.cpp @@ -91,7 +91,10 @@ QWindow *Item::window() const { QAccessible::Role Item::role() const { const auto parent = _parent.get(); - return parent + const auto index = parent ? currentIndex() : -1; + return (index >= 0) + ? parent->accessibilityChildRoleAt(index) + : parent ? parent->accessibilityChildRole() : QAccessible::Role(); } diff --git a/ui/rp_widget.cpp b/ui/rp_widget.cpp index 3fec5525..2b21e3b3 100644 --- a/ui/rp_widget.cpp +++ b/ui/rp_widget.cpp @@ -402,6 +402,10 @@ QAccessible::Role RpWidget::accessibilityChildRole() const { return QAccessible::Role::NoRole; } +QAccessible::Role RpWidget::accessibilityChildRoleAt(int index) const { + return accessibilityChildRole(); +} + QString RpWidget::accessibilityChildName(int index) const { return QString(); } diff --git a/ui/rp_widget.h b/ui/rp_widget.h index 1d10351e..172b565f 100644 --- a/ui/rp_widget.h +++ b/ui/rp_widget.h @@ -458,6 +458,13 @@ class RpWidget : public RpWidgetBase { [[nodiscard]] virtual QAccessible::State accessibilityChildState(int index) const; void accessibilityChildStateChanged(int index, AccessibilityState changes); [[nodiscard]] virtual QAccessible::Role accessibilityChildRole() const; + + // The role of one child where it differs from the list-wide one above: + // a divider row between the items of a list is a Separator, not one + // more item. Defaults to accessibilityChildRole(). + [[nodiscard]] virtual QAccessible::Role accessibilityChildRoleAt( + int index) const; + [[nodiscard]] virtual QRect accessibilityChildRect(int index) const; [[nodiscard]] virtual int accessibilityChildColumnCount(int row) const; [[nodiscard]] virtual QAccessible::Role accessibilityChildSubItemRole() const;