mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
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:
parent
3fe3e66880
commit
09c43ac86d
@ -560,19 +560,24 @@ class TagsModel(QAbstractItemModel): # {{{
|
||||
'5state' if tag.category != 'search' else '3state'
|
||||
else:
|
||||
if i < len(components)-1:
|
||||
t = copy.copy(tag)
|
||||
t.original_name = '.'.join(components[:i+1])
|
||||
t.count = 0
|
||||
if key != 'search':
|
||||
# This 'manufactured' intermediate node can
|
||||
# be searched, but cannot be edited.
|
||||
t.is_editable = False
|
||||
else:
|
||||
t.is_searchable = t.is_editable = False
|
||||
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 = original_name
|
||||
t.count = 0
|
||||
if key != 'search':
|
||||
# This 'manufactured' intermediate node can
|
||||
# be searched, but cannot be edited.
|
||||
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, {}))
|
||||
|
Loading…
x
Reference in New Issue
Block a user