From 79fecd2c13369de69d5c29cd4113637406376071 Mon Sep 17 00:00:00 2001 From: Eric Rowell Date: Mon, 28 Jan 2013 21:27:08 -0800 Subject: [PATCH] dynamic drag layer setup now does deep copy of Groups and Layers when reconstructing ancestors --- src/DragAndDrop.js | 14 ++------------ src/Node.js | 4 +--- tests/js/manualTests.js | 17 +++++++++++------ 3 files changed, 14 insertions(+), 21 deletions(-) diff --git a/src/DragAndDrop.js b/src/DragAndDrop.js index a173d8b5..26c7c39f 100644 --- a/src/DragAndDrop.js +++ b/src/DragAndDrop.js @@ -18,22 +18,12 @@ // re-construct node tree no._eachAncestorReverse(function(node) { if(node.nodeType === 'Layer') { - stage.dragLayer.setAttrs({ - x: node.getX(), - y: node.getY(), - scale: node.getScale(), - rotation: node.getRotation() - }); + stage.dragLayer.setAttrs(node.getAttrs()); lastContainer = stage.dragLayer; stage.add(stage.dragLayer); } else if(node.nodeType === 'Group') { - group = new Kinetic.Group({ - x: node.getX(), - y: node.getY(), - scale: node.getScale(), - rotation: node.getRotation() - }); + group = new Kinetic.Group(node.getAttrs()); lastContainer.add(group); lastContainer = group; } diff --git a/src/Node.js b/src/Node.js index 6abc0b32..833471da 100644 --- a/src/Node.js +++ b/src/Node.js @@ -657,9 +657,7 @@ var classType = this.shapeType || this.nodeType; var node = new Kinetic[classType](this.attrs); - /* - * copy over user listeners - */ + // copy over user listeners for(var key in this.eventListeners) { var allListeners = this.eventListeners[key]; var len = allListeners.length; diff --git a/tests/js/manualTests.js b/tests/js/manualTests.js index 3dd65a3c..3298cd79 100644 --- a/tests/js/manualTests.js +++ b/tests/js/manualTests.js @@ -912,14 +912,16 @@ Test.Modules.DRAG_AND_DROP = { showHit(layer) }, - 'draggable true false': function(containerId) { + 'draggable true': function(containerId) { var stage = new Kinetic.Stage({ container: containerId, width: 578, height: 200 }); - var layer = new Kinetic.Layer(); - var Circle = new Kinetic.Circle({ + var layer = new Kinetic.Layer({ + id: 'myLayer' + }); + var circle = new Kinetic.Circle({ x: stage.getWidth() / 2, y: stage.getHeight() / 2, radius: 70, @@ -928,12 +930,15 @@ Test.Modules.DRAG_AND_DROP = { strokeWidth: 4 }); - Circle.setDraggable(true); + circle.setDraggable(true); - layer.add(Circle); + layer.add(circle); stage.add(layer); + + circle.on('dragmove', function() { + console.log(this.getLayer().getId()); + }); - Circle.setDraggable(false); }, 'scale and rotate stage after add layer then drag and drop shape': function(containerId) { var stage = new Kinetic.Stage({