Feature request: search in settings
Is your feature request related to a problem? Please describe.
NVDA has a lot of options nowadays, in many sections. Even with shortcuts, finding the wanted setting could be slow, if it's not frequently used (e.g.: Bookmarks checkbox in Document formatting)..
Describe the solution you'd like
NVDA should provide a search field, like in Symbols dialog, to rapidly find the desired option. When found, the option should be auto-focused. There should be also a shortcut to find another results.
I'll provide an experimental PR around this idea.
Describe alternatives you've considered
An alternative could be what happens in Windows settings, where typing in search field popups a list with some results, and pressing enter over one of them brings to the option in correct section.
Additional context
None.
@ABuffEr I will comment here as well, summarizing points from #872 as well as my thoughts.
Some UX points to consider:
- How do you present the matching settings?
- Consider visual, speech, braille.
- Consider multiple matches in multiple settings categories
Approach ideas on the table sofar in addition to what you described:
- All panels / options remain available to receive focus / be changed
- Panels with matching options are visually highlighted, options that match are visually highlighted. it might be challenging to visually highlight options with WX python. Is it possible?
- Pressing f6 or shift+f6 jumps between the currently visible category and the search field
- I propose when using f3 or shift+f3 to jump focus to the matching options, the profile, the group and the pannel name the control is located in, is reported in speech and Braille, along with the control label and its state / value. e.g. a. searching for "UIA" and pressing f3, NVDA would report something like "Profile: Firefox, Advanced settings, Microsoft UIA grouping / Register for UIA events combo box colapsed automatic (prefer selective)." This verbose reporting should happen only when entering the settings category, the grouping name should be reported only when entering a new grouping. b. Pressing again f3 reports only the next matching setting name and its value / state and if needed the grouping name, until the setting category changes. c. When the setting category changes upon pressing f3, NVDA reports the whole stuff again as proposed in a.
Drawbacks:
- F3 and shift+f3 navigation might lead to much verbosity when entering and leaving categories on the fly
- Visually highlighting the settings and categories directly when changing focus will definitely be challenging and might have negative performance impact
Second alternative approach, more consistent with what other software do:
- Use the searchCtrl in wx, fill the dropdown menu with control name and its state / value something like
- Search for "br"
- A dropdown menu appears, open it with alt+down arrow
- First setting is reported "Braille mode combo box colapsed: follow cursors. Press enter to move to the setting"
- Other related settings to the keyword "br" are in this dropdown menu, you can navigate by arrow keys
- Pressing enter on a setting in the dropdown menu will move the focus to the control in the coresponding category, NVDA reports the whole stuff proposed in a. above when entering the category.
- F6 can be used to return focus to the searchCtrl to select another item in the dropdown menu.
Seems most promising in my view, maybe even in combination with the first alternative. The only drawback I see is that the dropdown menu might be a bit confusing. Advantages:
- Matches can be isolated as text strings and highlighted in the dropdown menu visually, no need for highlighting matches when the focus changes through the settings categories
- Less verbosity, the dropdown menu can be less detailed because pressing enter on the desired result will trigger the detailed reporting anyway.
Third alternative approach
- Show a new settings panel, with just the matching controls (these could be in groups to identify the settings panel and group) Drawback: Doesn't allow for changing nearby located settings, higher complexity in the implementation. Advantages: people could focus only on the matching results.