From b5c1bc633ae5a48bd044e87840c9f46695c481d6 Mon Sep 17 00:00:00 2001 From: Eric Rowell Date: Sat, 23 Mar 2013 21:47:15 -0700 Subject: [PATCH] removed dynamic drag and drop layer all together. In the end, the performance benefits (small) did not out weigh the complexity consequences --- src/DragAndDrop.js | 40 ++++++++----------------------------- src/Layer.js | 3 +-- src/Stage.js | 14 ------------- tests/js/unit/stageTests.js | 11 ---------- 4 files changed, 9 insertions(+), 59 deletions(-) diff --git a/src/DragAndDrop.js b/src/DragAndDrop.js index ec473350..754122e2 100644 --- a/src/DragAndDrop.js +++ b/src/DragAndDrop.js @@ -1,7 +1,9 @@ (function() { Kinetic.DD = { anim: new Kinetic.Animation(), - started: false, + // this flag is set to true the moment the user starts moving the mouse + // after they have mousedowned or touchstarted the node + moving: false, offset: { x: 0, y: 0 @@ -11,10 +13,6 @@ Kinetic.getNodeDragging = function() { return Kinetic.DD.node; }; - Kinetic.DD._initDragLayer = function(stage) { - stage.dragLayer = new Kinetic.Layer(); - stage.dragLayer.getCanvas().getElement().className = 'kinetic-drag-and-drop-layer'; - }; Kinetic.DD._drag = function(evt) { var dd = Kinetic.DD, node = dd.node; @@ -51,11 +49,6 @@ if(node) { nodeType = node.nodeType, layer = node.getLayer(); - - if((nodeType === 'Group' || nodeType === 'Shape') && node.getDragOnTop()) { - node.getStage().dragLayer.remove(); - } - dd.anim.stop(); // only fire dragend event if the drag and drop @@ -97,32 +90,15 @@ pos = stage.getPointerPosition(); if(pos) { - var m = this.getTransform().getTranslation(), ap = this.getAbsolutePosition(), nodeType = this.nodeType, container; + var m = this.getTransform().getTranslation(), + ap = this.getAbsolutePosition(), + layer = this.getLayer(); dd.node = this; dd.offset.x = pos.x - ap.x; dd.offset.y = pos.y - ap.y; - dd.anim.node = this; - - // Stage and Layer node types - if(nodeType === 'Stage' || nodeType === 'Layer') { - dd.anim.start(); - } - - // Group or Shape node types - else { - if(this.getDragOnTop()) { - // clear shape from layer canvas - that.setVisible(false); - layer.draw(); - that.setVisible(true); - stage.add(stage.dragLayer); - dd.anim.start(); - } - else { - dd.anim.start(); - } - } + dd.anim.node = layer; + dd.anim.start(); } }; /** diff --git a/src/Layer.js b/src/Layer.js index d8fdf922..25cc89bd 100644 --- a/src/Layer.js +++ b/src/Layer.js @@ -90,8 +90,7 @@ * @methodOf Kinetic.Layer.prototype */ getCanvas: function() { - var stage = this.getStage(); - return (stage && stage._isTempDDLayerActive()) ? stage.dragLayer.canvas : this.canvas; + return this.canvas; }, /** * get layer hit canvas diff --git a/src/Stage.js b/src/Stage.js index 2e44961d..2883504a 100644 --- a/src/Stage.js +++ b/src/Stage.js @@ -30,10 +30,6 @@ this._buildDOM(); this._bindContentEvents(); Kinetic.Global.stages.push(this); - - if(dd) { - dd._initDragLayer(this); - } }, /** * set container dom element which contains the stage wrapper div element @@ -309,22 +305,12 @@ // chainable return this; }, - /** - * get drag and drop layer - */ - getDragLayer: function() { - return this.dragLayer; - }, getParent: function() { return null; }, getLayer: function() { return null; }, - _isTempDDLayerActive: function() { - var dragLayer = this.dragLayer; - return dragLayer && dragLayer.getStage(); - }, _setPointerPosition: function(evt) { if(!evt) { evt = window.event; diff --git a/tests/js/unit/stageTests.js b/tests/js/unit/stageTests.js index 37b1a8fb..cb9283ac 100644 --- a/tests/js/unit/stageTests.js +++ b/tests/js/unit/stageTests.js @@ -228,16 +228,5 @@ Test.Modules.STAGE = { test(stage.getStage() !== undefined, 'stage is undefined'); //console.log(stage.getStage()); - }, - 'test stage.getDragLayer': function(containerId) { - var stage = new Kinetic.Stage({ - container: containerId, - width: 578, - height: 200 - }); - - test(stage.getDragLayer().getCanvas().getElement().className === 'kinetic-drag-and-drop-layer', 'problem with stage.getDragLayer'); - - } }; \ No newline at end of file