diff --git a/src/calibre/gui2/preferences/search.py b/src/calibre/gui2/preferences/search.py
index 81bc603df4..749a7c8de0 100644
--- a/src/calibre/gui2/preferences/search.py
+++ b/src/calibre/gui2/preferences/search.py
@@ -26,12 +26,19 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
r('limit_search_columns_to', prefs, setting=CommaSeparatedList)
fl = gui.library_view.model().db.field_metadata.get_search_terms()
self.opt_limit_search_columns_to.update_items_cache(fl)
+ self.clear_history_button.clicked.connect(self.clear_histories)
def refresh_gui(self, gui):
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):
+ for key, val in config.defaults.iteritems():
+ if key.endswith('_search_history') and isinstance(val, list):
+ config[key] = []
+ self.gui.search.clear_history()
+
if __name__ == '__main__':
app = QApplication([])
test_widget('Interface', 'Search')
diff --git a/src/calibre/gui2/preferences/search.ui b/src/calibre/gui2/preferences/search.ui
index 360059ce56..4a6e799641 100644
--- a/src/calibre/gui2/preferences/search.ui
+++ b/src/calibre/gui2/preferences/search.ui
@@ -90,6 +90,16 @@
+ -
+
+
+ Clear search histories from all over calibre. Including the book list, e-book viewer, fetch news dialog, etc.
+
+
+ Clear search &histories
+
+
+
diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py
index 900c882adc..34be6cd276 100644
--- a/src/calibre/gui2/search_box.py
+++ b/src/calibre/gui2/search_box.py
@@ -114,6 +114,9 @@ class SearchBox2(QComboBox): # {{{
def text(self):
return self.currentText()
+ def clear_history(self, *args):
+ QComboBox.clear(self)
+
def clear(self, emit_search=True):
self.normalize_state()
self.setEditText('')