diff --git a/src/calibre/gui2/viewer/search.py b/src/calibre/gui2/viewer/search.py index e82ef6d015..dd523f68b4 100644 --- a/src/calibre/gui2/viewer/search.py +++ b/src/calibre/gui2/viewer/search.py @@ -333,7 +333,9 @@ class SearchInput(QWidget): # {{{ def find_previous(self): self.emit_search(backwards=True) - def focus_input(self): + def focus_input(self, text=None): + if text and hasattr(text, 'rstrip'): + self.search_box.setText(text) self.search_box.setFocus(Qt.OtherFocusReason) le = self.search_box.lineEdit() le.end(False) @@ -454,8 +456,8 @@ class SearchPanel(QWidget): # {{{ def update_hidden_message(self): self.hidden_message.setVisible(self.results.current_result_is_hidden) - def focus_input(self): - self.search_input.focus_input() + def focus_input(self, text=None): + self.search_input.focus_input(text) def start_search(self, search_query, current_name): if self.current_search is not None and search_query == self.current_search: diff --git a/src/calibre/gui2/viewer/ui.py b/src/calibre/gui2/viewer/ui.py index 7840658adf..cf016fc6d9 100644 --- a/src/calibre/gui2/viewer/ui.py +++ b/src/calibre/gui2/viewer/ui.py @@ -288,10 +288,13 @@ class EbookViewer(MainWindow): self.toc_dock.setVisible(not self.toc_dock.isVisible()) def show_search(self): + self.web_view.get_current_cfi(self.show_search_with_current_selection) + + def show_search_with_current_selection(self, pos_data): self.search_dock.setVisible(True) self.search_dock.activateWindow() self.search_dock.raise_() - self.search_widget.focus_input() + self.search_widget.focus_input(pos_data.get('selected_text')) def start_search(self, search_query): name = self.web_view.current_content_file