Restore the global find next/prev shortcuts as well

This commit is contained in:
Kovid Goyal 2021-05-20 15:56:19 +05:30
parent 0a44c0bccf
commit 34294a9c9e
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
3 changed files with 19 additions and 13 deletions

View File

@ -66,6 +66,7 @@ class SearchOverlay:
c.style.alignItems = 'stretch' c.style.alignItems = 'stretch'
c.style.overflow = 'hidden' c.style.overflow = 'hidden'
c.addEventListener('keydown', self.onkeydown) c.addEventListener('keydown', self.onkeydown)
c.addEventListener('keyup', self.onkeyup)
create_top_bar(c, title=_('Search in book'), action=self.hide, icon='close') create_top_bar(c, title=_('Search in book'), action=self.hide, icon='close')
@ -292,11 +293,14 @@ class SearchOverlay:
'This search result matches text that is hidden in the book and cannot be displayed')) 'This search result matches text that is hidden in the book and cannot be displayed'))
self.show() self.show()
def result_clicked(self, rnum): def select_search_result_in_book(self, result_num):
sr = Object.assign({}, self.result_map[rnum]) sr = Object.assign({}, self.result_map[result_num])
sr.on_discovery = 0 sr.on_discovery = 0
self.make_result_current(rnum)
self.view.show_search_result(sr) self.view.show_search_result(sr)
def result_clicked(self, rnum):
self.make_result_current(rnum)
self.select_search_result_in_book(rnum)
self.hide() self.hide()
def clear_caches(self, book): def clear_caches(self, book):
@ -323,12 +327,16 @@ class SearchOverlay:
rnum = 1 rnum = 1
self.make_result_current(rnum) self.make_result_current(rnum)
self.results_container.focus() self.results_container.focus()
cr = self.current_result_container
if cr:
self.select_search_result_in_book(cr.dataset.resultNum)
def onkeydown(self, event): def onkeyup(self, event):
if event.key is 'Escape' or event.key is 'Esc': if event.key is 'Escape' or event.key is 'Esc':
self.hide() self.hide()
event.stopPropagation(), event.preventDefault() event.stopPropagation(), event.preventDefault()
return
def onkeydown(self, event):
sc_name = shortcut_for_key_event(event, self.view.keyboard_shortcut_map) sc_name = shortcut_for_key_event(event, self.view.keyboard_shortcut_map)
if sc_name is 'next_match': if sc_name is 'next_match':
self.next_match(1) self.next_match(1)
@ -339,6 +347,9 @@ class SearchOverlay:
event.stopPropagation(), event.preventDefault() event.stopPropagation(), event.preventDefault()
return return
def find_next(self, backwards):
self.next_match(-1 if backwards else 1)
@property @property
def container(self): def container(self):
return document.getElementById(self.CONTAINER_ID) return document.getElementById(self.CONTAINER_ID)

View File

@ -89,6 +89,7 @@ class ReadUI:
ui_operations.tts = self.tts.bind(self) ui_operations.tts = self.tts.bind(self)
ui_operations.search_result_discovered = self.view.search_overlay.search_result_discovered ui_operations.search_result_discovered = self.view.search_overlay.search_result_discovered
ui_operations.search_result_not_found = self.view.search_overlay.search_result_not_found ui_operations.search_result_not_found = self.view.search_overlay.search_result_not_found
ui_operations.find_next = self.view.search_overlay.find_next
ui_operations.open_url = def(url): ui_operations.open_url = def(url):
window.open(url, '_blank') window.open(url, '_blank')
ui_operations.copy_selection = def(text, html): ui_operations.copy_selection = def(text, html):

View File

@ -517,15 +517,9 @@ class View:
elif data.name is 'start_search': elif data.name is 'start_search':
self.show_search() self.show_search()
elif data.name is 'next_match': elif data.name is 'next_match':
if ui_operations.find_next: ui_operations.find_next()
ui_operations.find_next()
else:
self.search_overlay.find_next()
elif data.name is 'previous_match': elif data.name is 'previous_match':
if ui_operations.find_next: ui_operations.find_next(True)
ui_operations.find_next(True)
else:
self.search_overlay.find_previous()
elif data.name is 'increase_font_size': elif data.name is 'increase_font_size':
self.bump_font_size({'increase': True}) self.bump_font_size({'increase': True})
elif data.name is 'decrease_font_size': elif data.name is 'decrease_font_size':