🐛 折叠标题移动到下方后触发状态异常并导致数据丢失 Fix https://github.com/siyuan-note/siyuan/issues/7163

This commit is contained in:
Liang Ding 2023-01-26 01:16:01 +08:00
parent 2dec9f2434
commit b3edfec60e
No known key found for this signature in database
GPG key ID: 136F30F901A2231D

View file

@ -311,11 +311,8 @@ func (tx *Transaction) doMove(operation *Operation) (ret *TxErr) {
}
}
for _, headingChild := range headingChildren {
if headingChild.ID == targetNode.ID {
// 不能将折叠标题移动到自己下方节点的前或后 https://github.com/siyuan-note/siyuan/issues/7163
return
}
if isMovingFoldHeadingIntoSelf(targetNode, headingChildren) {
return
}
for i := len(headingChildren) - 1; -1 < i; i-- {
@ -360,11 +357,8 @@ func (tx *Transaction) doMove(operation *Operation) (ret *TxErr) {
return &TxErr{code: TxErrCodeBlockNotFound, id: targetParentID}
}
for _, headingChild := range headingChildren {
if headingChild.ID == targetNode.ID {
// 不能将折叠标题移动到自己下方节点的前或后 https://github.com/siyuan-note/siyuan/issues/7163
return
}
if isMovingFoldHeadingIntoSelf(targetNode, headingChildren) {
return
}
processed := false
@ -421,6 +415,16 @@ func (tx *Transaction) doMove(operation *Operation) (ret *TxErr) {
return
}
func isMovingFoldHeadingIntoSelf(targetNode *ast.Node, headingChildren []*ast.Node) bool {
for _, headingChild := range headingChildren {
if headingChild.ID == targetNode.ID {
// 不能将折叠标题移动到自己下方节点的前或后 https://github.com/siyuan-note/siyuan/issues/7163
return true
}
}
return false
}
func (tx *Transaction) doPrependInsert(operation *Operation) (ret *TxErr) {
var err error
block := treenode.GetBlockTree(operation.ParentID)