|
@@ -577,7 +577,24 @@ func (tx *Transaction) doAppendInsert(operation *Operation) (ret *TxErr) {
|
|
|
for i := 0; i < len(toInserts); i++ {
|
|
|
toInsert := toInserts[i]
|
|
|
if isContainer {
|
|
|
- if ast.NodeSuperBlock == node.Type {
|
|
|
+ if ast.NodeList == node.Type {
|
|
|
+ // 列表下只能挂列表项,所以这里需要分情况处理 https://github.com/siyuan-note/siyuan/issues/9955
|
|
|
+ if ast.NodeList == toInsert.Type {
|
|
|
+ var childLis []*ast.Node
|
|
|
+ for childLi := toInsert.FirstChild; nil != childLi; childLi = childLi.Next {
|
|
|
+ childLis = append(childLis, childLi)
|
|
|
+ }
|
|
|
+ for _, childLi := range childLis {
|
|
|
+ node.AppendChild(childLi)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ newLiID := ast.NewNodeID()
|
|
|
+ newLi := &ast.Node{ID: newLiID, Type: ast.NodeListItem, ListData: &ast.ListData{Typ: node.ListData.Typ}}
|
|
|
+ newLi.SetIALAttr("id", newLiID)
|
|
|
+ node.AppendChild(newLi)
|
|
|
+ newLi.AppendChild(toInsert)
|
|
|
+ }
|
|
|
+ } else if ast.NodeSuperBlock == node.Type {
|
|
|
node.LastChild.InsertBefore(toInsert)
|
|
|
} else {
|
|
|
node.AppendChild(toInsert)
|