feat(编辑能力): 修复组合复制与编辑状态异常
build.yaml / build (push) Successful in 39s

This commit is contained in:
xiaoqidun committed 2026-09-17 22:29:24 +08:00
1 parent 4826496e98
commit 9f2ef7e212
18 files changed
+674 -79

No files matched your search

+23 -2
View File
@@ -250,7 +250,13 @@ func (e *Editor) sourcePageXML(index int, source *editorSourcePage) ([]byte, err
for _, object := range current.Objects {
id := editorObjectID(object)
after[id] = object
if node := source.nodes[id]; node != nil {
node := source.nodes[id]
if node == nil {
if origin := e.objectOrigin(id); origin != nil {
node = origin.node
}
}
if node != nil {
ordered[node.parent] = append(ordered[node.parent], object)
}
}
@@ -279,7 +285,7 @@ func (e *Editor) sourcePageXML(index int, source *editorSourcePage) ([]byte, err
if exists {
nextID := editorObjectID(next)
origin := source.nodes[nextID]
if reflect.DeepEqual(before[nextID], next) {
if origin != nil && reflect.DeepEqual(before[nextID], next) {
encoded = data[origin.start:origin.end]
} else {
var err error
@@ -294,6 +300,21 @@ func (e *Editor) sourcePageXML(index int, source *editorSourcePage) ([]byte, err
patches = append(patches, editorXMLPatch{node.start, node.end, encoded})
}
}
for parent, members := range ordered {
if !orderable[parent] || positions[parent] >= len(members) {
continue
}
var added []byte
for _, object := range members[positions[parent]:] {
origin := e.objectOrigin(editorObjectID(object))
encoded, err := editorXMLObject(origin.data, origin.node, origin.object, object)
if err != nil {
return nil, err
}
added = append(added, encoded...)
}
patches = append(patches, editorXMLPatch{parent.close, parent.close, added})
}
}
var added []byte
for _, layer := range page.Content.Layer[len(source.original.Content.Layer):] {