🎨 Improve reference count update after moving container blocks https://github.com/siyuan-note/siyuan/issues/15289

This commit is contained in:
Daniel 2025-07-17 12:00:07 +08:00
parent d58829a855
commit d3357af944
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
2 changed files with 25 additions and 9 deletions

View file

@ -206,9 +206,9 @@ func refreshDynamicRefTexts0(updatedDefNodes map[string]*ast.Node, updatedTrees
// 1. 更新引用的动态锚文本
treeRefNodeIDs := map[string]*hashset.Set{}
var changedParentNodes []*ast.Node
var changedNodes []*ast.Node
for _, updateNode := range updatedDefNodes {
refs, parentNodes := getRefsCacheByDefNode(updateNode)
refs, parentNodes, childNodes := getRefsCacheByDefNode(updateNode)
for _, ref := range refs {
if refIDs, ok := treeRefNodeIDs[ref.RootID]; !ok {
refIDs = hashset.New()
@ -219,13 +219,14 @@ func refreshDynamicRefTexts0(updatedDefNodes map[string]*ast.Node, updatedTrees
}
}
if 0 < len(parentNodes) {
changedParentNodes = append(changedParentNodes, parentNodes...)
changedNodes = append(changedNodes, parentNodes...)
}
if 0 < len(childNodes) {
changedNodes = append(changedNodes, childNodes...)
}
}
if 0 < len(changedParentNodes) {
for _, parent := range changedParentNodes {
updatedDefNodes[parent.ID] = parent
}
for _, n := range changedNodes {
updatedDefNodes[n.ID] = n
}
changedRefTree := map[string]*parse.Tree{}