mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
E-book viewer: When searching the Table of Contents allow holding the Shift key to search backwards. Fixes #1925038 [[Enhancement] E-book viewer: keyboard shortcut and mouse action modifier for searching ToC backwards](https://bugs.launchpad.net/calibre/+bug/1925038)
This commit is contained in:
parent
8965b8a940
commit
281ff268f8
@ -148,7 +148,8 @@ class TOCSearch(QWidget):
|
|||||||
def do_search(self, text):
|
def do_search(self, text):
|
||||||
if not text or not text.strip():
|
if not text or not text.strip():
|
||||||
return
|
return
|
||||||
index = self.toc_view.model().search(text)
|
delta = -1 if QApplication.instance().keyboardModifiers() & Qt.KeyboardModifier.ShiftModifier else 1
|
||||||
|
index = self.toc_view.model().search(text, delta=delta)
|
||||||
if index.isValid():
|
if index.isValid():
|
||||||
self.toc_view.scrollTo(index)
|
self.toc_view.scrollTo(index)
|
||||||
self.toc_view.searched.emit(index)
|
self.toc_view.searched.emit(index)
|
||||||
@ -244,15 +245,16 @@ class TOC(QStandardItemModel):
|
|||||||
if (exact and query == href) or (not exact and query in href):
|
if (exact and query == href) or (not exact and query in href):
|
||||||
return item.node_id
|
return item.node_id
|
||||||
|
|
||||||
def search(self, query):
|
def search(self, query, delta=1):
|
||||||
cq = self.current_query
|
cq = self.current_query
|
||||||
if cq['items'] and -1 < cq['index'] < len(cq['items']):
|
if cq['items'] and -1 < cq['index'] < len(cq['items']):
|
||||||
cq['items'][cq['index']].set_current_search_result(False)
|
cq['items'][cq['index']].set_current_search_result(False)
|
||||||
if cq['text'] != query:
|
if cq['text'] != query:
|
||||||
items = tuple(self.find_items(query))
|
items = tuple(self.find_items(query))
|
||||||
cq.update({'text':query, 'items':items, 'index':-1})
|
cq.update({'text':query, 'items':items, 'index':-1})
|
||||||
if len(cq['items']) > 0:
|
num = len(cq['items'])
|
||||||
cq['index'] = (cq['index'] + 1) % len(cq['items'])
|
if num > 0:
|
||||||
|
cq['index'] = (cq['index'] + delta + num) % num
|
||||||
item = cq['items'][cq['index']]
|
item = cq['items'][cq['index']]
|
||||||
item.set_current_search_result(True)
|
item.set_current_search_result(True)
|
||||||
index = self.indexFromItem(item)
|
index = self.indexFromItem(item)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user