diff --git a/editor/extensions/ext-connector.js b/editor/extensions/ext-connector.js index b29aae08..7bcf040c 100644 --- a/editor/extensions/ext-connector.js +++ b/editor/extensions/ext-connector.js @@ -406,7 +406,18 @@ svgEditor.addExtension("Connector", function(S) { if(svgCanvas.getMode() == "connector") { var fo = $(mouse_target).closest("foreignObject"); if(fo.length) mouse_target = fo[0]; - if(mouse_target.parentNode.parentNode != svgcontent) { + + var parents = $(mouse_target).parents(); + + if(mouse_target == start_elem) { + // Start line through click + started = true; + return { + keep: true, + element: null, + started: started + } + } else if($.inArray(svgcontent, parents) === -1) { // Not a valid target element, so remove line $(cur_line).remove(); started = false; @@ -415,14 +426,6 @@ svgEditor.addExtension("Connector", function(S) { element: null, started: started } - } else if(mouse_target == start_elem) { - // Start line through click - started = true; - return { - keep: true, - element: null, - started: started - } } else { // Valid end element end_elem = mouse_target; diff --git a/editor/svgcanvas.js b/editor/svgcanvas.js index ad472825..27a86242 100644 --- a/editor/svgcanvas.js +++ b/editor/svgcanvas.js @@ -279,6 +279,12 @@ function ChangeElementCommand(elem, attrs, text) { if (this.elem.tagName == "title" && this.elem.parentNode.parentNode == svgcontent) { identifyLayers(); } + + // Remove transformlist to prevent confusion that causes bugs like 575. + if (svgTransformLists[this.elem.id]) { + delete svgTransformLists[this.elem.id]; + } + return true; }; @@ -5663,6 +5669,7 @@ function BatchCommand(text) { batchCmd.addSubCommand(new ChangeElementCommand(elem, changes)); canvas.clearSelection(); this.resetOrientation(elem); + addCommandToHistory(batchCmd); // Set matrix to null