diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 54e182a8d..8bc11b866 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -904,6 +904,17 @@ func (tx *Transaction) doUpdate(operation *Operation) (ret *TxErr) { treenode.MoveFoldHeading(updatedNode, oldNode) } + // 挂件移动或设置大小后属性丢失 https://github.com/siyuan-note/siyuan/issues/4885 + // 这里需要把旧节点的属性复制到新节点上,避免属性丢失 + oldIAL := parse.IAL2Map(oldNode.KramdownIAL) + newIAL := parse.IAL2Map(updatedNode.KramdownIAL) + for oldIALKey, oldIALVal := range oldIAL { + if strings.HasPrefix(oldIALKey, "custom-") { + newIAL[oldIALKey] = oldIALVal + } + } + updatedNode.KramdownIAL = parse.Map2IAL(newIAL) + cache.PutBlockIAL(updatedNode.ID, parse.IAL2Map(updatedNode.KramdownIAL)) // 替换为新节点