The Palettes Tree should have AT-SPI2 (Linux) role "tree" and its children "tree item"; also better names
If you look in the attached screen shot of using the Accerciser accessibility inspector to examine MuseScore, you'll see the following:
- The tree of Palettes has the "filler" role
- The children have the "list item" role
- The tree has both its role ("tree") and a verbose child count ("contains 14 palettes") in its name
- An expanded palette (in this screen shot, Articulations) has "expanded" in its name
This is problematic for the following reasons:
- Filler is the role typically given to alignments and other containers whose purpose is to impact spacing. The Orca screen reader deliberately ignores them.
- List items which live outside of a list or listbox make no sense and suggest broken accessibility.
- When the roles are fixed (along with another bug I'll file), screen readers may start double-presenting information (role, state, child count) as a consequence of that information being in the name.
What seems like the right thing to do is:
Change the role of the Palettes tree from "filler" to "tree"
Change the role of the specific palettes from "list item" to "tree item" (list items live in lists/listboxes; tree items live in trees)
Remove "Tree" from the accessible name. Roles do not belong in the accessible name. And when you fix the role (item 1 above), screen readers like Orca will announce the role. And we don't want to hear "The Palettes Tree tree."
Remove "contains x palettes" from the accessible name. Child counts do not belong in the accessible name either. Screen readers, including Orca, already do this presentation optionally (e.g. via setting) and/or on demand (e.g. a "where am I?" command).
Remove "expanded" (and "collapsed" and anything else state-like) from the accessible name. States do not belong in the accessible name either. When expandable items have the right accessible states and those states change resulting in the emission of a state-changed signal, screen readers usually announce the changed state. (Aside: The right states and events are missing. I'll file that as a separate bug.)