Some settings were being reset when tab changed and a key was pressed, e.g. control.
Radio buttons were still announced even with sound only set.
Controls for AI assistant tab were vanishing after being set.
When an element has aria-roledescription (e.g. Discord messages use
'Message'), _generateRoleName was adding both the roledescription AND
the standard localized role name (e.g. 'article'). This resulted in
the role being announced twice.
The aria-roledescription attribute is intended to replace the standard
role name, not supplement it. Return early after adding the
roledescription to match Orca's behavior.
Bug 1: Content editable entry label not announced on caret-nav focus
- When navigating into a content editable via caret navigation (e.g. down
arrow from message list to message entry in Discord), the label and role
were suppressed because the code treated entering the field the same as
navigating within it.
- Fixed locus_of_focus_changed in web/script.py to detect when focus enters
a content editable from outside and generate full object speech.
- Fixed _generateLabelOrName in web/speech_generator.py to preserve the
label when the prior object was outside the content editable.
Bug 2: Adjacent button included in line contents on first line
- When reading line contents inside a content editable, the layout-mode
expansion could walk outside the content editable boundary and include
adjacent UI elements (e.g. a 'More options' button) that happened to
share the same visual line.
- Fixed _getLineContentsAtOffset in web/script_utilities.py to stop
expanding at content editable boundaries in both directions.
Bug 3: Punctuation stripped from live regions and AT-SPI announcements
- presentMessage uses resetStyles=True by default, which sets punctuation
to NONE for system voice messages. This is correct for generated text
but wrong for user content in live regions and AT-SPI announcements.
- Fixed liveregions.py pumpMessages and default.py onAnnouncement to pass
resetStyles=False, preserving the user's punctuation settings.