Make the rich message editor accessible to screen readers - #2168
Open
mehranlatifi83 wants to merge 1 commit into
Open
mehranlatifi83 wants to merge 1 commit into
mehranlatifi83 wants to merge 1 commit into
Conversation
A rich message is written as a column of blocks: paragraphs, headings, quotes, code, lists and checklists, toggles, tables, formulas, dividers, photos and videos, music, files and maps. Much of it was closed to a screen reader. The blocks are put in order by holding one and dragging it, and thrown away by dragging it onto a bin, by a finger alone. A list in order by dragging was given moves for a screen reader elsewhere, but here they would have skipped what the editor does after a drop, such as taking a block into a quote it was dropped in. Every text read the same, so a heading, a quote, a line of code and a list item could not be told apart. A checklist box was a button with no name and no state, and the arrow that opens and closes a toggle was a button with no name. A divider, a formula, a file, a piece of music, and the photos and videos of a block are drawn by hand, so they were nothing at all: they could not be found, let alone moved or thrown away. The button that plays the music, the one that opens or downloads a file, the formula that opens its editor when pressed, and a photo that opens the picker when it is empty or stops its upload while it goes up, all answered a finger alone. The pages of a slideshow turn by a swipe alone, and the button that turns a group of photos into a slideshow and back was called More options. In a table, the handles along the edges that open the options of a row or a column are drawn and pressed by a finger alone, so rows and columns could not be added, removed or merged, and a cell did not say where in the table it stood. Now each block carries actions that move it up or down and, for the ones that are not text, throw it away, through the very calls a drag and a drop on the bin make, with the editor's own care after them. A text says the kind of block it is in, a checklist box is a checkbox that says if it is checked, and the toggle arrow says what it does and whether it is open. The blocks drawn by hand are read with what they are and what they hold, and press as a finger does. The music can be played, paused and moved through. The photos of a block are read one by one with their state, and a slideshow turns by the scroll gestures. The slideshow button says what it will do. A table cell says its row and column, and has actions that open the options of its row, its column or itself, as the handles do. The six alignment buttons of that menu, icons alone, say the way each one aligns.
mehranlatifi83
force-pushed
the
fix/talkback-rich-editor-blocks-unreachable
branch
from
October 1, 2026 23:22
d8b6446 to
980df77
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
In the rich message editor (
ui/iv):Fix
RichEditorListView: each block has "Move up", "Move down" and, for non-text blocks, "Delete" actions, using the same code as drag and the trash bin (including moving into quotes and undo history).RichEditText: text blocks report their type (heading level, quote, code, footer, list) as state description; table cells report "Row X, column Y" and have actions to open the row, column or cell options menu.RichAudioCell) is a virtual node that plays, pauses and seeks. Photos of a block (RichMediaCell) are virtual nodes with their upload state; double tap picks media or cancels the upload, and slideshows change pages with scroll actions. The slideshow toggle says "Show as slideshow" or "Show as collage".Testing
With TalkBack on, write a rich message with a heading, a quote, a divider, a photo, a table and a toggle.
Before: blocks could not be moved or deleted, and many parts were unreachable or unlabeled. After: each block has Move up, Move down and Delete, text blocks say their type, and table cells open their options.