diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 0ba8d8fd0..f768c045d 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -1528,12 +1528,12 @@ func (tx *Transaction) doUpdate(operation *Operation) (ret *TxErr) { // 将不属于折叠标题的块移动到折叠标题下方,需要展开折叠标题 needUnfoldParentHeading := 0 < oldNode.HeadingLevel && (0 == updatedNode.HeadingLevel || oldNode.HeadingLevel < updatedNode.HeadingLevel) - parentFoldedHeading := treenode.GetParentFoldedHeading(oldNode) + oldParentFoldedHeading := treenode.GetParentFoldedHeading(oldNode) // 将原先折叠标题下的块提升为与折叠标题同级或更高一级的标题时,需要在折叠标题后插入该提升后的标题块(只需要推送界面插入) - if needInsertAfterParentHeading := nil != parentFoldedHeading && 0 != updatedNode.HeadingLevel && updatedNode.HeadingLevel <= parentFoldedHeading.HeadingLevel; needInsertAfterParentHeading { + if needInsertAfterParentHeading := nil != oldParentFoldedHeading && 0 != updatedNode.HeadingLevel && updatedNode.HeadingLevel <= oldParentFoldedHeading.HeadingLevel; needInsertAfterParentHeading { evt := util.NewCmdResult("transactions", 0, util.PushModeBroadcast) evt.Data = []*Transaction{{ - DoOperations: []*Operation{{Action: "insert", ID: updatedNode.ID, PreviousID: parentFoldedHeading.ID, Data: data}}, + DoOperations: []*Operation{{Action: "insert", ID: updatedNode.ID, PreviousID: oldParentFoldedHeading.ID, Data: data}}, UndoOperations: []*Operation{{Action: "delete", ID: updatedNode.ID}}, }} util.PushEvent(evt) @@ -1543,8 +1543,10 @@ func (tx *Transaction) doUpdate(operation *Operation) (ret *TxErr) { oldNode.Unlink() if needUnfoldParentHeading { - parentFoldedHeading = treenode.GetParentFoldedHeading(updatedNode) - unfoldHeading(parentFoldedHeading) + newParentFoldedHeading := treenode.GetParentFoldedHeading(updatedNode) + if nil == oldParentFoldedHeading || (nil != newParentFoldedHeading && oldParentFoldedHeading.ID != newParentFoldedHeading.ID) { + unfoldHeading(newParentFoldedHeading) + } } createdUpdated(updatedNode)