For the virtual library column stuff: avoid using refresh when invalidating libraries.

This commit is contained in:
Charles Haley 2013-07-13 11:09:14 +02:00
parent b3dbda5492
commit 090eed4153
2 changed files with 15 additions and 5 deletions

View File

@ -332,7 +332,7 @@ class SearchRestrictionMixin(object):
virt_libs = db.prefs.get('virtual_libraries', {}) virt_libs = db.prefs.get('virtual_libraries', {})
virt_libs[name] = search virt_libs[name] = search
db.prefs.set('virtual_libraries', virt_libs) db.prefs.set('virtual_libraries', virt_libs)
db.data.invalidate_virtual_libraries_caches(db) db.data.invalidate_virtual_libraries_caches()
def do_create_edit(self, name=None): def do_create_edit(self, name=None):
db = self.library_view.model().db db = self.library_view.model().db
@ -342,7 +342,7 @@ class SearchRestrictionMixin(object):
if name: if name:
self._remove_vl(name, reapply=False) self._remove_vl(name, reapply=False)
self.add_virtual_library(db, cd.library_name, cd.library_search) self.add_virtual_library(db, cd.library_name, cd.library_search)
db.data.invalidate_virtual_libraries_caches(db) db.data.invalidate_virtual_libraries_caches()
if not name or name == db.data.get_base_restriction_name(): if not name or name == db.data.get_base_restriction_name():
self.apply_virtual_library(cd.library_name) self.apply_virtual_library(cd.library_name)
else: else:
@ -467,7 +467,7 @@ class SearchRestrictionMixin(object):
return return
self._remove_vl(name, reapply=True) self._remove_vl(name, reapply=True)
db = self.library_view.model().db db = self.library_view.model().db
db.data.invalidate_virtual_libraries_caches(db) db.data.invalidate_virtual_libraries_caches()
self.tags_view.recount() self.tags_view.recount()
def _remove_vl(self, name, reapply=True): def _remove_vl(self, name, reapply=True):

View File

@ -212,6 +212,8 @@ class CacheRow(list): # {{{
self[c] = None self[c] = None
self._must_do = True self._must_do = True
def refresh_virtual_libraries(self):
self._virt_libs = None
# }}} # }}}
class ResultCache(SearchQueryParser): # {{{ class ResultCache(SearchQueryParser): # {{{
@ -247,6 +249,8 @@ class ResultCache(SearchQueryParser): # {{{
pref_use_primary_find_in_search = prefs['use_primary_find_in_search'] pref_use_primary_find_in_search = prefs['use_primary_find_in_search']
self._uuid_column_index = self.FIELD_MAP['uuid'] self._uuid_column_index = self.FIELD_MAP['uuid']
self._uuid_map = {} self._uuid_map = {}
self._virt_libs_computed = False
self._ids_in_virt_libs = {}
def break_cycles(self): def break_cycles(self):
self._data = self.field_metadata = self.FIELD_MAP = \ self._data = self.field_metadata = self.FIELD_MAP = \
@ -840,8 +844,14 @@ class ResultCache(SearchQueryParser): # {{{
current_candidates -= matches current_candidates -= matches
return matches return matches
def invalidate_virtual_libraries_caches(self, db): def invalidate_virtual_libraries_caches(self):
self.refresh(db) self._virt_libs_computed = False
self._ids_in_virt_libs = {}
for row in self._data:
if row is not None:
row.refresh_virtual_libraries()
row.refresh_composites()
def search_raw(self, query): def search_raw(self, query):
matches = self.parse(query) matches = self.parse(query)