Accessibility: Palette keyboard navigation is non-standard

• Nov 13, 2019 - 20:54
Reported version
Ergonomical (UX)
S5 - Suggestion

The palette tree is effectively an item view, so navigation should follow that of QAbstractItemView and QTreeView. In particular:

  • Navigating to an item (i.e. giving it focus) should cause it to be selected.
    • The user should not have to press the spacebar (or any other key) to select an item after navigating to it.
  • Home, End, Page Up and Page Down should change the selection as well as scrolling the view.

Also, as discussed in (see suggestion 5b), the arrangment of elements in a grid is a visual trick that has little meaning to blind users. The underlying structure of the model is simply a list of items, so it should be treated as such for the purposes of keyboard navigation. This means using:

  • Up and Down are used solely for changing items.
  • Left and Right are used solely for expanding and collapsing parent items.

Pressing Up or Down should actually take you left or right through the grid, until you each the end of a row at which point it puts you on the opposite column in the next row.

Workaround: use existing navigation (which is non-standard).


Status PR created fixed

Fixed in branch master, commit 2ed4a7e86c

_fix #297040: Palette keyboard navigation +collect_artifacts

Implements standard keyboard navigation for an item view / tree view as
demonstrated by QAbstractItemView and QTreeView classes. Also changes
how elements are displayed as necessary to indicate the different kinds
of selection (e.g. when current item is not selected).

  • Adds blue outline for current item (selected items have blue fill).
  • Changing item also selects it (unless Ctrl is held).
  • More button behaves like a normal item for navigation purposes

New keyboard shortcuts:

  • Asterisk (*) key expands or collapses all items
  • Menu key (or [Ctrl+]Shift+F10) opens context menus
  • Press any letter key to jump to palette starting with that letter

Various improvements to screen reader output:

  • Palette names end in "palette" to distinguish from elements
  • Says when palettes are expanded
  • Says how many elements in palette, and palettes in view
  • Says when palette elements are selected_
Fix version