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[name] = search
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):
db = self.library_view.model().db
@ -342,7 +342,7 @@ class SearchRestrictionMixin(object):
if name:
self._remove_vl(name, reapply=False)
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():
self.apply_virtual_library(cd.library_name)
else:
@ -467,7 +467,7 @@ class SearchRestrictionMixin(object):
return
self._remove_vl(name, reapply=True)
db = self.library_view.model().db
db.data.invalidate_virtual_libraries_caches(db)
db.data.invalidate_virtual_libraries_caches()
self.tags_view.recount()
def _remove_vl(self, name, reapply=True):

View File

@ -212,6 +212,8 @@ class CacheRow(list): # {{{
self[c] = None
self._must_do = True
def refresh_virtual_libraries(self):
self._virt_libs = None
# }}}
class ResultCache(SearchQueryParser): # {{{
@ -247,6 +249,8 @@ class ResultCache(SearchQueryParser): # {{{
pref_use_primary_find_in_search = prefs['use_primary_find_in_search']
self._uuid_column_index = self.FIELD_MAP['uuid']
self._uuid_map = {}
self._virt_libs_computed = False
self._ids_in_virt_libs = {}
def break_cycles(self):
self._data = self.field_metadata = self.FIELD_MAP = \
@ -840,8 +844,14 @@ class ResultCache(SearchQueryParser): # {{{
current_candidates -= matches
return matches
def invalidate_virtual_libraries_caches(self, db):
self.refresh(db)
def invalidate_virtual_libraries_caches(self):
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):
matches = self.parse(query)