From 78a94771671e3acd30dd2fda1bc757c266013996 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 8 Jun 2017 19:57:31 +0530 Subject: [PATCH] Add a clear button at the end of all search boxes. Fixes #1696737 [[Opinion] Move the Reset button inside the search field](https://bugs.launchpad.net/calibre/+bug/1696737) --- src/calibre/gui2/dialogs/scheduler.py | 5 +---- src/calibre/gui2/layout.py | 6 ------ src/calibre/gui2/search_box.py | 10 ++++++---- src/calibre/gui2/ui.py | 2 +- 4 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/calibre/gui2/dialogs/scheduler.py b/src/calibre/gui2/dialogs/scheduler.py index af99801f89..5d5b8c44ee 100644 --- a/src/calibre/gui2/dialogs/scheduler.py +++ b/src/calibre/gui2/dialogs/scheduler.py @@ -234,10 +234,7 @@ class SchedulerDialog(QDialog): self.go_button = b = QToolButton(self) b.setText(_("Go")) b.clicked.connect(self.search.do_search) - self.clear_search_button = cb = QToolButton(self) - self.clear_search_button.clicked.connect(self.search.clear_clicked) - cb.setIcon(QIcon(I('clear_left.png'))) - h.addWidget(s), h.addWidget(b), h.addWidget(cb) + h.addWidget(s), h.addWidget(b) self.recipes = RecipesView(self) l.addWidget(self.recipes, 1, 0, 1, 1) self.recipe_model = recipe_model diff --git a/src/calibre/gui2/layout.py b/src/calibre/gui2/layout.py index a97a22bc51..3ec29c023c 100644 --- a/src/calibre/gui2/layout.py +++ b/src/calibre/gui2/layout.py @@ -229,12 +229,6 @@ class SearchBar(QWidget): # {{{ self.search_button.setToolTip( _('Do Quick Search (you can also press the Enter key)')) - x = parent.clear_button = QToolButton(self) - x.setIcon(QIcon(I('clear_left.png'))) - x.setObjectName("clear_button") - l.addWidget(x) - x.setToolTip(_("Reset Quick Search")) - x = parent.highlight_only_button = QToolButton(self) x.setIcon(QIcon(I('arrow-down.png'))) l.addWidget(x) diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index d561eac63e..9817c4bee6 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -102,11 +102,14 @@ class SearchBox2(QComboBox): # {{{ changed = pyqtSignal() focus_to_library = pyqtSignal() - def __init__(self, parent=None): + def __init__(self, parent=None, add_clear_action=True): QComboBox.__init__(self, parent) self.normal_background = 'rgb(255, 255, 255, 0%)' self.line_edit = SearchLineEdit(self) self.setLineEdit(self.line_edit) + if add_clear_action: + self.clear_action = self.lineEdit().addAction(QIcon(I('clear_left.png')), self.lineEdit().TrailingPosition) + self.clear_action.triggered.connect(self.clear_clicked) c = self.line_edit.completer() c.setCompletionMode(c.PopupCompletion) @@ -166,6 +169,7 @@ class SearchBox2(QComboBox): # {{{ def clear_clicked(self, *args): self.clear() + self.setFocus(Qt.OtherFocusReason) def search_done(self, ok): if isinstance(ok, basestring): @@ -443,7 +447,6 @@ class SearchBoxMixin(object): # {{{ self.search.changed.connect(self.search_box_changed, type=Qt.QueuedConnection) self.search.focus_to_library.connect(self.focus_to_library) - self.clear_button.clicked.connect(self.search.clear_clicked) self.advanced_search_button.clicked[bool].connect(self.do_advanced_search) self.search.clear() @@ -460,7 +463,6 @@ class SearchBoxMixin(object): # {{{ self.search.setStatusTip(re.sub(r'<\w+>', ' ', unicode(self.search.toolTip()))) self.advanced_search_button.setStatusTip(self.advanced_search_button.toolTip()) - self.clear_button.setStatusTip(self.clear_button.toolTip()) self.set_highlight_only_button_icon() self.highlight_only_button.clicked.connect(self.highlight_only_clicked) tt = _('Enable or disable search highlighting.') + '

' @@ -525,7 +527,7 @@ class SavedSearchBoxMixin(object): # {{{ def init_saved_seach_box_mixin(self): self.saved_search.changed.connect(self.saved_searches_changed) - self.clear_button.clicked.connect(self.saved_search.clear) + self.search.clear_action.triggered.connect(self.saved_search.clear) self.save_search_button.clicked.connect( self.saved_search.save_search_button_clicked) self.copy_search_button.clicked.connect( diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 18b03099de..f5ded1a069 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -447,7 +447,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ 'log will be displayed automatically.')%self.gui_debug, show=True) def esc(self, *args): - self.clear_button.click() + self.search.clear() def shift_esc(self): self.current_view().setFocus(Qt.OtherFocusReason)