edrlab / thorium-reader

A cross platform desktop reading app, based on the Readium Desktop toolkit
https://www.edrlab.org/software/thorium-reader/
BSD 3-Clause "New" or "Revised" License
1.78k stars 153 forks source link

Search feature: screen reader UX is clunky #1439

Open GeorgeKerscher opened 3 years ago

GeorgeKerscher commented 3 years ago

When I go to the navigation, I arrow down and on the search button it says unavailable. I can press enter or spacebar on the button, and nothing happens. If I am in the body of a chaapter and press ctrl + F, I can get to the search box, but this does not always work as expected. It would also be wonderful if there was an easy to get to the next search result.

danielweck commented 3 years ago

Hello George, CTRL-F opens the search box from anywhere in the UI (except when inside the navigation menus which are like a dialog modal overlay that disables some shortcuts).

The usual F3 or SHIFT + F3 can be used to navigate (previous/next) the list of search results. The alternative shortcut is (SHIFT) + CTRL + G.

From the search bar, you can also click on the result summary to activate the search panel which displays a paginated list of search results.

Wiki page: https://github.com/edrlab/thorium-reader/wiki/Keyboard-shortcuts

danielweck commented 3 years ago

Hello George, I re-ran tests on MacOS with VoiceOver, and I am able to reproduce a visual bug (search highlights in the HTML documents are not re-rendered when using previous/next commands to navigate the linear list of search results), and I observe that the screen reader doesn't automatically announce the target search destination when navigating using previous/next commands (the underscore "special" hyperlink at the top of the HTML document works as usual, but of course this level of indirection makes the user experience clunky with a screen reader). Same with the full paginated list of search results. So, I renamed this issue and we will need to figure out how to improve how we communicate UI state with screen readers (for example, currently the total number of search results is announced via a live region on first search hits, but not subsequent ones).