diff --git a/src/DragAndDrop.js b/src/DragAndDrop.js index e1000b04..81dc9175 100644 --- a/src/DragAndDrop.js +++ b/src/DragAndDrop.js @@ -145,6 +145,7 @@ this.off('mousedown.kinetic'); this.off('touchstart.kinetic'); }; + /** * get draggable. Alias of getDraggable() * @name isDraggable diff --git a/src/Node.js b/src/Node.js index bb35844a..7b5acfb3 100644 --- a/src/Node.js +++ b/src/Node.js @@ -167,6 +167,12 @@ parent.children.splice(this.index, 1); parent._setChildrenIndices(); + // remove from DD + var dd = Kinetic.DD; + if(dd && dd.node && dd.node._id === this._id) { + delete Kinetic.DD.node; + } + // remove children while(this.children && this.children.length > 0) { this.children[0].remove(); diff --git a/tests/js/functionalTests.js b/tests/js/functionalTests.js index c555749f..5d45e765 100644 --- a/tests/js/functionalTests.js +++ b/tests/js/functionalTests.js @@ -1,4 +1,44 @@ Test.Modules.DD = { + 'remove shape from onclick': function(containerId) { + var stage = new Kinetic.Stage({ + container: containerId, + width: 578, + height: 200 + }); + + var top = stage.content.getBoundingClientRect().top; + + var layer = new Kinetic.Layer(); + + var circle = new Kinetic.Circle({ + x: stage.getWidth() / 2, + y: stage.getHeight() / 2, + radius: 70, + fill: 'green', + stroke: 'black', + strokeWidth: 4, + name: 'myCircle', + draggable: true + }); + + layer.add(circle); + stage.add(layer); + + circle.on('click', function() { + this.remove(); + layer.draw(); + }); + + stage._mousedown({ + clientX: 291, + clientY: 112 + top + }); + stage._mouseup({ + clientX: 291, + clientY: 112 + top + }); + + }, 'test dragstart, dragmove, dragend': function(containerId) { var stage = new Kinetic.Stage({ container: containerId,