diff --git a/resources/images/highlight_only_off.png b/resources/images/highlight_only_off.png
new file mode 100644
index 0000000000..603d60a686
Binary files /dev/null and b/resources/images/highlight_only_off.png differ
diff --git a/resources/images/highlight_only_on.png b/resources/images/highlight_only_on.png
new file mode 100644
index 0000000000..8d679e56e4
Binary files /dev/null and b/resources/images/highlight_only_on.png differ
diff --git a/src/calibre/gui2/layout.py b/src/calibre/gui2/layout.py
index c01e708933..ebd2acfe1d 100644
--- a/src/calibre/gui2/layout.py
+++ b/src/calibre/gui2/layout.py
@@ -196,6 +196,10 @@ class SearchBar(QWidget): # {{{
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)
+
x = parent.search_options_button = QToolButton(self)
x.setIcon(QIcon(I('config.png')))
x.setObjectName("search_option_button")
diff --git a/src/calibre/gui2/preferences/search.py b/src/calibre/gui2/preferences/search.py
index db93cbd525..7bdb12ec55 100644
--- a/src/calibre/gui2/preferences/search.py
+++ b/src/calibre/gui2/preferences/search.py
@@ -171,10 +171,10 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
return ConfigWidgetBase.commit(self)
def refresh_gui(self, gui):
+ gui.set_highlight_only_button_icon()
if self.muc_changed:
gui.tags_view.set_new_model()
gui.search.search_as_you_type(config['search_as_you_type'])
- gui.library_view.model().set_highlight_only(config['highlight_search_matches'])
gui.search.do_search()
def clear_histories(self, *args):
diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py
index 70324ffadc..359cb0b2f6 100644
--- a/src/calibre/gui2/search_box.py
+++ b/src/calibre/gui2/search_box.py
@@ -10,7 +10,7 @@ import re
from PyQt4.Qt import QComboBox, Qt, QLineEdit, QStringList, pyqtSlot, QDialog, \
pyqtSignal, QCompleter, QAction, QKeySequence, QTimer, \
- QString
+ QString, QIcon
from calibre.gui2 import config
from calibre.gui2.dialogs.confirm_delete import confirm
@@ -383,6 +383,22 @@ class SearchBoxMixin(object): # {{{
self.advanced_search_button.setStatusTip(self.advanced_search_button.toolTip())
self.clear_button.setStatusTip(self.clear_button.toolTip())
self.search_options_button.clicked.connect(self.search_options_button_clicked)
+ self.set_highlight_only_button_icon()
+ self.highlight_only_button.clicked.connect(self.highlight_only_clicked)
+ tt = _('Enable or disable search highlighting.') + '
'
+ tt += config.help('highlight_search_matches')
+ self.highlight_only_button.setToolTip(tt)
+
+ def highlight_only_clicked(self, state):
+ config['highlight_search_matches'] = not config['highlight_search_matches']
+ self.set_highlight_only_button_icon()
+
+ def set_highlight_only_button_icon(self):
+ if config['highlight_search_matches']:
+ self.highlight_only_button.setIcon(QIcon(I('highlight_only_on.png')))
+ else:
+ self.highlight_only_button.setIcon(QIcon(I('highlight_only_off.png')))
+ self.library_view.model().set_highlight_only(config['highlight_search_matches'])
def focus_search_box(self, *args):
self.search.setFocus(Qt.OtherFocusReason)