fix issue with undo because this.elem was overwritten with node.remove()

This commit is contained in:
JFH
2020-06-28 21:52:27 +02:00
parent 18d73cfefa
commit 61591f6a2e
4 changed files with 33 additions and 6 deletions

View File

@@ -573,18 +573,19 @@ export default {
},
elementChanged (opts) {
let elem = opts.elems[0];
if (elem && elem.tagName === 'svg' && elem.id === 'svgcontent') {
if (!elem) return;
if (elem.tagName === 'svg' && elem.id === 'svgcontent') {
// Update svgcontent (can change on import)
svgcontent = elem;
init();
}
// Has marker, so change offset
if (elem && (
if (
elem.getAttribute('marker-start') ||
elem.getAttribute('marker-mid') ||
elem.getAttribute('marker-end')
)) {
) {
const start = elem.getAttribute('marker-start');
const mid = elem.getAttribute('marker-mid');
const end = elem.getAttribute('marker-end');

View File

@@ -223,7 +223,7 @@ export class InsertElementCommand extends Command {
}
this.parent = this.elem.parentNode;
this.elem = this.elem.remove();
this.elem.remove();
if (handler) {
handler.handleHistoryEvent(HistoryEventTypes.AFTER_UNAPPLY, this);
@@ -280,7 +280,7 @@ export class RemoveElementCommand extends Command {
removeElementFromListMap(this.elem);
this.parent = this.elem.parentNode;
this.elem = this.elem.remove();
this.elem.remove();
if (handler) {
handler.handleHistoryEvent(HistoryEventTypes.AFTER_APPLY, this);

View File

@@ -516,7 +516,7 @@ const undoMgr = canvas.undoMgr = new UndoManager({
} else if (!isApply) {
restoreRefElems(cmd.elem);
}
if (cmd.elem.tagName === 'use') {
if (cmd.elem && cmd.elem.tagName === 'use') {
setUseData(cmd.elem);
}
} else if (cmdType === ChangeElementCommand.type()) {