diff --git a/src/calibre/gui2/viewer/search.py b/src/calibre/gui2/viewer/search.py index 7aa1d13653..8d645d26ea 100644 --- a/src/calibre/gui2/viewer/search.py +++ b/src/calibre/gui2/viewer/search.py @@ -640,6 +640,7 @@ class SearchPanel(QWidget): # {{{ search_requested = pyqtSignal(object) results_found = pyqtSignal(object) show_search_result = pyqtSignal(object) + hide_search_panel = pyqtSignal() def __init__(self, parent=None): QWidget.__init__(self, parent) @@ -767,4 +768,11 @@ class SearchPanel(QWidget): # {{{ def show_no_results_found(self): msg = _('No matches were found for:') warning_dialog(self, _('No matches found'), msg + ' {}'.format(self.current_search.text), show=True) + + def keyPressEvent(self, ev): + if ev.key() == Qt.Key_Escape: + self.hide_search_panel.emit() + ev.accept() + return + return QWidget.keyPressEvent(self, ev) # }}} diff --git a/src/calibre/gui2/viewer/ui.py b/src/calibre/gui2/viewer/ui.py index 8b4d300f98..d7d9ee94f8 100644 --- a/src/calibre/gui2/viewer/ui.py +++ b/src/calibre/gui2/viewer/ui.py @@ -139,6 +139,7 @@ class EbookViewer(MainWindow): self.search_widget = w = SearchPanel(self) w.search_requested.connect(self.start_search) + w.hide_search_panel.connect(self.search_dock.close) self.search_dock.setWidget(w) self.search_dock.visibilityChanged.connect(self.search_widget.visibility_changed)