Initial focus went to the unnamed Dialogs::Widget container, so NVDA
announced the raw Qt class chain. Focus the accessible chat list instead
so the list and its selected chat are announced.
The invisible hit-area stacked under the main menu toggle duplicates the
toggle's action but has no label, so in screen reader mode it became a
second, unnamed Tab stop that read out the raw Qt class chain. Give it no
accessible role so it is skipped by keyboard/screen-reader navigation,
while mouse clicks still open the menu.
- Add rich message editor with media, tables and math formulas.
- Show rich message drafts with full formatting in chat compose area.
- Add text recognition with selection and copying
to media viewer images.
- Add swipe navigation and pinch zoom gestures to media viewer.
- Support zoom and dragging files out in shared media photos.
- Allow adapting existing stickers into custom emoji.
- Add media viewer video playback to system media controls.
- Add alphabetical fast-scroll index to contacts box.
- Improve screen reader accessibility for chats list and folders.
Factor the floating cloud bubble's painting and scroll-mount wiring into shared helpers so the bubble content can be mounted standalone over any scrollable surface.
Regression from f362c16106: moving the key event filter from the
InputField to its raw QTextEdit made the Escape branch consume the key
before InputField::keyPressEventInner could fire cancelled(), so
sections like scheduled messages no longer went back on Escape with a
focused field. Keep the Cmd+Up/Down handling on the raw text edit and
suppress the propagated Escape in a separate filter on the field.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>