diff --git a/src/calibre/db/view.py b/src/calibre/db/view.py index 04f205f21f..e9d42c97a1 100644 --- a/src/calibre/db/view.py +++ b/src/calibre/db/view.py @@ -335,14 +335,14 @@ class View(object): # be shared by multiple views. This is not ideal, but... self.cache.clear_search_caches(old_marked_ids | set(self.marked_ids)) - def refresh(self, field=None, ascending=True, clear_caches=True): + def refresh(self, field=None, ascending=True, clear_caches=True, do_search=True): self._map = tuple(sorted(self.cache.all_book_ids())) self._map_filtered = tuple(self._map) if clear_caches: self.cache.clear_caches() if field is not None: self.sort(field, ascending) - if self.search_restriction or self.base_restriction: + if do_search and self.search_restriction or self.base_restriction: self.search('', return_matches=False) def refresh_ids(self, ids): diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index a5b73fc296..a7554f62f0 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -543,12 +543,12 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ self.raise_() self.activateWindow() elif msg.startswith('refreshdb:'): - db = self.library_view.model().db - db.new_api.reload_from_db() - self.library_view.model().resort() - self.library_view.model().research() + m = self.library_view.model() + m.db.new_api.reload_from_db() + m.db.data.refresh(clear_caches=False, do_search=False) + m.resort() + m.research() self.tags_view.recount() - self.library_view.model().db.refresh_format_cache() elif msg.startswith('shutdown:'): self.quit(confirm_quit=False) else: