Skip to content

Add screen reader support for chat list#30305

Open
rezabakhshilaktasaraei wants to merge 1 commit intotelegramdesktop:devfrom
rezabakhshilaktasaraei:acc-chat-list
Open

Add screen reader support for chat list#30305
rezabakhshilaktasaraei wants to merge 1 commit intotelegramdesktop:devfrom
rezabakhshilaktasaraei:acc-chat-list

Conversation

@rezabakhshilaktasaraei
Copy link
Contributor

@rezabakhshilaktasaraei rezabakhshilaktasaraei commented Feb 18, 2026

Summary

Exposes painted dialog rows as virtual accessibility children, making the chat list fully navigable by screen readers.

Changes (dialogs_inner_widget.cpp/h, dialogs_widget.cpp)

  • Overrides accessibilityChildCount(), accessibilityChildName(), accessibilityChildRect(), accessibilityChildState(), accessibilityChildRole(), and column sub-item methods.
  • Each dialog row becomes a ListItem with a descriptive name built from:
    • Chat type prefix: Channel / Group / Bot / Topic / Folder
    • Badges: Verified, Scam, Fake
    • Status: Pinned, Online, Unread count, Mentions, Stories
    • Last message: Sender + preview text, delivery status (Sending/Sent/Failed/Received), draft indicator
    • Special rows: Saved Messages sublists, Sponsored, Auto-delete, Subscribed
  • 23 multi-column sub-items for structured screen reader navigation (type, name, warning, activity, muted, pinned, draft, unread, sender, message, delivery, reactions, time, etc.)
  • Fires accessibilityChildFocused() on keyboard navigation.
  • Arrow key / PageUp / PageDown / Space navigation is now guarded by hasFocus() to prevent unintended list movement when focus is elsewhere.

Dependencies

  • Requires lib_ui#278 for Accessible::Item infrastructure.

New lang keys

~55 new lng_sr_chat_* keys + lng_sr_from_me, lng_sr_message_seen, lng_sr_message_not_seen.

Test plan

  • Navigate chat list with arrow keys — screen reader announces each chat with type, name, badges, and last message
  • Verify topics, folders, saved message sublists are announced correctly
  • Verify hit-testing: clicking a row with screen reader cursor selects the correct chat
  • Verify arrow keys do not move chat list selection when focus is on another widget (e.g., search field)
Expose painted dialog rows as virtual accessibility children so
screen readers can navigate the chat list.

Each row reports: chat type, name, badges, status, last message
preview, delivery status, reactions, stories, and more.

Multi-column sub-items provide structured per-field access.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant