attr change events are now triggered for any root attr so long as the attr is set with the setAttrs method

This commit is contained in:
Eric Rowell
2012-06-09 01:47:41 -07:00
parent 2cd24309ac
commit 12b61b3621
4 changed files with 37 additions and 18 deletions

20
dist/kinetic-core.js vendored
View File

@@ -3,7 +3,7 @@
* http://www.kineticjs.com/
* Copyright 2012, Eric Rowell
* Licensed under the MIT or GPL Version 2 licenses.
* Date: Jun 08 2012
* Date: Jun 09 2012
*
* Copyright (C) 2011 - 2012 by Eric Rowell
*
@@ -535,12 +535,15 @@ Kinetic.Node.prototype = {
*/
case 'draggable':
that.draggable(c[key]);
that._fireChangeEvent(key);
break;
case 'listening':
that.listen(c[key]);
that._fireChangeEvent(key);
break;
case 'rotationDeg':
that._setAttr(obj, 'rotation', c[key] * Math.PI / 180);
that._fireChangeEvent('rotation');
break;
/*
* config objects
@@ -549,6 +552,7 @@ Kinetic.Node.prototype = {
var pos = go._getXY(val);
that._setAttr(obj[key], 'x', pos.x);
that._setAttr(obj[key], 'y', pos.y);
that._fireChangeEvent(key);
break;
/*
* includes:
@@ -559,26 +563,30 @@ Kinetic.Node.prototype = {
var pos = go._getXY(val);
that._setAttr(obj[key], 'x', pos.x);
that._setAttr(obj[key], 'y', pos.y);
that._fireChangeEvent(key);
break;
case 'scale':
var pos = go._getXY(val);
that._setAttr(obj[key], 'x', pos.x);
that._setAttr(obj[key], 'y', pos.y);
that._fireChangeEvent(key);
break;
case 'points':
that._setAttr(obj, key, go._getPoints(val));
that._fireChangeEvent(key);
break;
case 'crop':
var pos = go._getXY(val);
var size = go._getSize(val);
that._setAttr(obj[key], 'x', pos.x);
that._setAttr(obj[key], 'y', pos.y);
that._setAttr(obj[key], 'width', size.width);
that._setAttr(obj[key], 'height', size.height);
that._fireChangeEvent(key);
break;
default:
that._setAttr(obj, key, c[key]);
that._fireChangeEvent(key);
break;
}
}
@@ -1167,12 +1175,14 @@ Kinetic.Node.prototype = {
return m;
},
_fireChangeEvent: function(attr) {
if(this.getStage() !== undefined) {
this._handleEvent(attr + 'Change', {});
}
},
_setAttr: function(obj, attr, val) {
if(val !== undefined) {
obj[attr] = val;
if(this.getStage() !== undefined) {
this._handleEvent(attr + 'Change', {});
}
}
},
_listenDrag: function() {

File diff suppressed because one or more lines are too long

View File

@@ -180,12 +180,15 @@ Kinetic.Node.prototype = {
*/
case 'draggable':
that.draggable(c[key]);
that._fireChangeEvent(key);
break;
case 'listening':
that.listen(c[key]);
that._fireChangeEvent(key);
break;
case 'rotationDeg':
that._setAttr(obj, 'rotation', c[key] * Math.PI / 180);
that._fireChangeEvent('rotation');
break;
/*
* config objects
@@ -194,6 +197,7 @@ Kinetic.Node.prototype = {
var pos = go._getXY(val);
that._setAttr(obj[key], 'x', pos.x);
that._setAttr(obj[key], 'y', pos.y);
that._fireChangeEvent(key);
break;
/*
* includes:
@@ -204,26 +208,30 @@ Kinetic.Node.prototype = {
var pos = go._getXY(val);
that._setAttr(obj[key], 'x', pos.x);
that._setAttr(obj[key], 'y', pos.y);
that._fireChangeEvent(key);
break;
case 'scale':
var pos = go._getXY(val);
that._setAttr(obj[key], 'x', pos.x);
that._setAttr(obj[key], 'y', pos.y);
that._fireChangeEvent(key);
break;
case 'points':
that._setAttr(obj, key, go._getPoints(val));
that._fireChangeEvent(key);
break;
case 'crop':
var pos = go._getXY(val);
var size = go._getSize(val);
that._setAttr(obj[key], 'x', pos.x);
that._setAttr(obj[key], 'y', pos.y);
that._setAttr(obj[key], 'width', size.width);
that._setAttr(obj[key], 'height', size.height);
that._fireChangeEvent(key);
break;
default:
that._setAttr(obj, key, c[key]);
that._fireChangeEvent(key);
break;
}
}
@@ -812,12 +820,14 @@ Kinetic.Node.prototype = {
return m;
},
_fireChangeEvent: function(attr) {
if(this.getStage() !== undefined) {
this._handleEvent(attr + 'Change', {});
}
},
_setAttr: function(obj, attr, val) {
if(val !== undefined) {
obj[attr] = val;
if(this.getStage() !== undefined) {
this._handleEvent(attr + 'Change', {});
}
}
},
_listenDrag: function() {

View File

@@ -1800,7 +1800,6 @@ Test.prototype.tests = {
/*
* test cropping setter
*/
darth.setCrop(0, 1, 2, 3);
crop = darth.getCrop();
test(crop.x === 0, 'crop x should be 0');
@@ -2923,15 +2922,15 @@ Test.prototype.tests = {
layer.add(rect);
stage.add(layer);
var widthChangeTriggered = false;
var triggered = false;
rect.on('widthChange', function() {
widthChangeTriggered = true;
triggered = true;
});
rect.setSize(200);
test(widthChangeTriggered, 'changing rect size should have triggered on attr change');
rect.setSize(210);
test(triggered, 'width change event not triggered');
},
'NODE - test setting shadow offset': function(containerId) {
var stage = new Kinetic.Stage({