musescore / musescore/MuseScore
Dropdowns, menus and lists should highlight items in reaction to key presses ("Initial Letter Navigation")
@bkunda is already working on this.
Since Dec 9, 2025.
- Dominant language
- C++
- Stars
- 15.1k
- Forks
- 3.3k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 91
Description
Task description
When a dropdown, menu or list is focused, you should be able to type text on the keyboard, to quickly jump to the corresponding item.
For example, in the dropdown shown below,
-
when you press
S, it should highlight thefirstnext item that comes lexicographically after "S", so in this case "Sans Serif Collection". -
when you press
SEin quick succession, it should highlight thefirstnext item that comes lexicographically after "Se", so in this case "Segoe Fluent Icons". -
when you press
SGin quick succession, it should highlight thefirstnext item that comes lexicographically after "Sg", so in this case "Showcard Gothic".
Edits by @shoogle:
-
Changed 'first' to 'next'.
-
The delay for "in quick succession" is one second (see WM_CHAR), but could be made configurable in Preferences > Advanced. Within this period, letters are added to a string buffer and a search is performed for the entire string. If the current item starts with the string then selection remains on this item, otherwise it goes to the next item that starts with the string. After the period expires, the string buffer is emptied. A subsequent key press starts a fresh search with a new string buffer, and will move to the next matching item even if the current item is a match.
-
If the first letter is pressed repeatedly (e.g.
SSS) then the selection cycles through items that begin with that letter (e.g. "Sans", "Sergeo", "Showcard"). However, the buffer is still saved asSSS, and if a different character is pressed before it empties (e.g.SSSQ) then the selection jumps to the next item starting with this entire string (e.g. "Sssquash"). -
See PR #5829 for previous implementation in MuseScore 3. If in doubt, check the behaviour of Windows File Explorer.
Technical note
This will need to be implemented for all QML dropdowns/menus/lists/treeViews.
In Qt Widgets, this already works out of the box (and for those few cases where it doesn't, we shouldn't invest time to fix it since Qt Widgets is going to be replaced eventually anyway).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.