From 8d86d10e5a8b401bff7bc69fb162ba3e66f53588 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 17 Feb 2019 10:13:42 +0530 Subject: [PATCH] Tag browser: Have pressing the Enter key find the next match. Fixes #1816276 [Find the first/next matching item with Enter](https://bugs.launchpad.net/calibre/+bug/1816276) --- src/calibre/gui2/tag_browser/ui.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/tag_browser/ui.py b/src/calibre/gui2/tag_browser/ui.py index 37fcd55923..e6db960949 100644 --- a/src/calibre/gui2/tag_browser/ui.py +++ b/src/calibre/gui2/tag_browser/ui.py @@ -457,6 +457,7 @@ class TagBrowserBar(QWidget): # {{{ self.toggle_search_button.setVisible(True) self.search_button.setVisible(False) self.item_search.setVisible(False) + # }}} @@ -477,7 +478,6 @@ class TagBrowserWidget(QFrame): # {{{ self.current_find_position = None self.search_button.clicked.connect(self.find) - self.item_search.lineEdit().returnPressed.connect(self.do_find) self.item_search.lineEdit().textEdited.connect(self.find_text_changed) self.item_search.activated[str].connect(self.do_find) @@ -587,10 +587,14 @@ class TagBrowserWidget(QFrame): # {{{ self.current_find_position = None self.find() + @property + def find_text(self): + return unicode(self.item_search.currentText()).strip() + def find(self): model = self.tags_view.model() model.clear_boxed() - txt = unicode(self.item_search.currentText()).strip() + txt = self.find_text if txt.startswith('*'): model.set_categories_filter(txt[1:]) @@ -636,4 +640,12 @@ class TagBrowserWidget(QFrame): # {{{ def not_found_label_timer_event(self): self.not_found_label.setVisible(False) + def keyPressEvent(self, ev): + if ev.key() in (Qt.Key_Enter, Qt.Key_Return) and self.find_text: + self.find() + ev.accept() + return + return QFrame.keyPressEvent(self, ev) + + # }}}