Reuse the node information (not the nodes themselves) for generated hierarchical nodes so that search indications show everywhere the node appears.

This commit is contained in:
Charles Haley 2015-11-21 15:10:24 +01:00
parent 3fe3e66880
commit 09c43ac86d

View File

@ -560,8 +560,11 @@ class TagsModel(QAbstractItemModel): # {{{
'5state' if tag.category != 'search' else '3state'
else:
if i < len(components)-1:
original_name = '.'.join(components[:i+1])
t = self.intermediate_nodes.get((original_name, tag.category), None)
if t is None:
t = copy.copy(tag)
t.original_name = '.'.join(components[:i+1])
t.original_name = original_name
t.count = 0
if key != 'search':
# This 'manufactured' intermediate node can
@ -569,10 +572,12 @@ class TagsModel(QAbstractItemModel): # {{{
t.is_editable = False
else:
t.is_searchable = t.is_editable = False
self.intermediate_nodes[(original_name, tag.category)] = t
else:
t = tag
if not in_uc:
t.original_name = t.name
self.intermediate_nodes[(t.original_name, tag.category)] = t
t.is_hierarchical = \
'5state' if t.category != 'search' else '3state'
t.name = comp
@ -587,6 +592,7 @@ class TagsModel(QAbstractItemModel): # {{{
# Build the entire node tree. Note that category_nodes is in field
# metadata order so the user categories will be at the end
self.intermediate_nodes = {}
for category in self.category_nodes:
process_one_node(category, collapse_model,
state_map.get(category.category_key, {}))