Skip to content

Introduce search history in NvDA Find dialog #8482

Description

@josephsl

Hi,

This is the "issueformation" (combination of the words "issue" and "transformation") of the PR #6484:

Rationale

Suppose one wishes to find multiple texts from different applications. Currently, in order to find new text in any application that supports cursor manager, users must enter the new text. In case users may wish to find something they've searched before, a search history in the form of a combo box should be provided.

Steps to reproduce:

  1. Open multiple document windows (web browsers, PDF documents, several Word documents and such), all with browse mode turned on.
  2. While using one of them, press Control+NVDA+F to open Find dialog.
  3. Search for some text and press Enter.
  4. Reopen Find dialog (instead of using find next/previous command) and search for another text.
  5. Repeat step 4.

Actual behavior:

Users must enter new text again.

Expected behavior:

Users can choose items from search history.

System configuration:

NVDA Installed/portable/running from source:

Installed

NVDA version:

Alpha/future version

Windows version:

Windows 10 Version 1803

Name and version of other software in use when reproducing the issue:

N/A

Other information about your system:

N/A

Other questions:

Does the issue still occur after restarting your PC?

Yes

Have you tried any other versions of NVDA?

Yes (perpetual as this is a new feature)

Technical details

One way to implement this is via wx.ComboBox and hosting search history (a list/priority queue) inside Cursor Manager class (the base class, that is). When Find dialog opens, present this combo box with entries coming from search history list, with find next (NvDA+F3)/previous (NVDA+Shift+F3) searching the topmost item.

Special corner case: what if users type something that NVDA knows is already part of search history (the whole text, that is)? If so, bump this text to the top if it isn't.

Another case: suppose there is already an entry in search history and the user types the same entry that only differs in case. If so, the best path might be to compare the texts regardless of case, or if case sensitivity is turned on, just prepend the new variant.

For a code example, see StationPlaylist Studio add-on.

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    featurefeature/browse-modep5https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#prioritytriagedHas been triaged, issue is waiting for implementation.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions