From 30d73c354d77f571203fbe118b99b1f861864f5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B0=D0=B2=D1=80=D1=91=D0=BD=D0=BE=D0=B2=20=D0=90?= =?UTF-8?q?=D0=BD=D1=82=D0=BE=D0=BD?= Date: Sat, 15 Mar 2014 16:58:26 +0800 Subject: [PATCH 1/3] disable cache function for stage --- src/Stage.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Stage.js b/src/Stage.js index 143d8458..5417083d 100644 --- a/src/Stage.js +++ b/src/Stage.js @@ -682,6 +682,13 @@ baseEvent = types[n]; this.content.addEventListener(baseEvent, handler, false); } + }, + // currently cache function is now working for stage, because stage has no its own canvas element + cache: function() { + Kinetic.Util.warn('Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.'); + return; + }, + clearCache : function() { } }); Kinetic.Util.extend(Kinetic.Stage, Kinetic.Container); From 6e1c75ceb7b5f2793c309ee77f5d29a9e382b8a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B0=D0=B2=D1=80=D1=91=D0=BD=D0=BE=D0=B2=20=D0=90?= =?UTF-8?q?=D0=BD=D1=82=D0=BE=D0=BD?= Date: Sat, 15 Mar 2014 18:27:37 +0800 Subject: [PATCH 2/3] cache before adding to layer test --- test/unit/Shape-test.js | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/test/unit/Shape-test.js b/test/unit/Shape-test.js index 47cfa4fe..d31bded0 100644 --- a/test/unit/Shape-test.js +++ b/test/unit/Shape-test.js @@ -624,5 +624,46 @@ suite('Shape', function() { assert.equal(shape.fillRadialGradientEndPointY(), 0); assert.equal(shape.fillPatternRotation(), 0); }); + + // ====================================================== + test.skip('hit graph when shape cached before adding to Layer', function() { + var stage = addStage(); + var layer = new Kinetic.Layer(); + var rect = new Kinetic.Rect({ + x: 290, + y: 111, + width : 50, + height : 50, + fill : 'black' + }); + rect.cache(); + var click = false; + + rect.on('click', function() { + click = true; + }); + + layer.add(rect); + stage.add(layer); + + var top = stage.content.getBoundingClientRect().top; + + showHit(layer); + + stage._mousedown({ + clientX: 300, + clientY: 120 + top + }); + + Kinetic.DD._endDragBefore(); + stage._mouseup({ + clientX: 300, + clientY: 120 + top + }); + Kinetic.DD._endDragAfter({dragEndNode:rect}); + + //TODO: can't get this to pass + assert.equal(click, true, 'click event should have been fired when mousing down and then up on rect'); + }); }); \ No newline at end of file From a737baad628be27ef5944b5b1a51f8293986e040 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B0=D0=B2=D1=80=D1=91=D0=BD=D0=BE=D0=B2=20=D0=90?= =?UTF-8?q?=D0=BD=D1=82=D0=BE=D0=BD?= Date: Fri, 21 Mar 2014 14:45:38 +0800 Subject: [PATCH 3/3] update dispatchEvent and addEventListener for new API --- src/Node.js | 18 ++++++++++++------ src/Stage.js | 1 + 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Node.js b/src/Node.js index 09c58324..d05692ae 100644 --- a/src/Node.js +++ b/src/Node.js @@ -398,14 +398,20 @@ } return this; }, - // some event aliases for third party integration like HammerJS + // some event aliases for third party integration like HammerJS dispatchEvent: function(evt) { - evt.target = this; - evt.type = evt.evt.type; - this.fire(evt.type, evt); + var e = { + target: this, + type: evt.type, + evt: evt + }; + this.fire(evt.type, e); }, - addEventListener: function() { - this.on.apply(this, arguments); + addEventListener: function(type, handler) { + // we to pass native event to handler + this.on(type, function(evt){ + handler.call(this, evt.evt); + }); }, /** * remove self from parent, but don't destroy diff --git a/src/Stage.js b/src/Stage.js index 63e42270..beb6b18a 100644 --- a/src/Stage.js +++ b/src/Stage.js @@ -684,6 +684,7 @@ } }, // currently cache function is now working for stage, because stage has no its own canvas element + // TODO: may be it is better to cache all children layers? cache: function() { Kinetic.Util.warn('Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.'); return;