diff --git a/src/core/PaperScopeItem.js b/src/core/PaperScopeItem.js index ae6bc03e..6ce8c852 100644 --- a/src/core/PaperScopeItem.js +++ b/src/core/PaperScopeItem.js @@ -23,7 +23,7 @@ * * @private */ -var PaperScopeItem = Base.extend(/** @lends PaperScopeItem# */{ +var PaperScopeItem = Base.extend(Callback, /** @lends PaperScopeItem# */{ /** * Creates a PaperScopeItem object. @@ -41,7 +41,11 @@ var PaperScopeItem = Base.extend(/** @lends PaperScopeItem# */{ activate: function() { if (!this._scope) return false; + var prev = this._scope[this._reference]; + if (prev && prev != this) + prev.fire('deactivate'); this._scope[this._reference] = this; + this.fire('activate', prev); return true; }, diff --git a/src/core/PaperScript.js b/src/core/PaperScript.js index 8eb3377f..3f1b512f 100644 --- a/src/core/PaperScript.js +++ b/src/core/PaperScript.js @@ -165,7 +165,7 @@ var PaperScript = this.PaperScript = new function() { // Within this, use a function scope, so local variables to not try // and set themselves on the scope object. (function() { - var onEditOptions, onSelect, onDeselect, onReselect, + var onActivate, onDeactivate, onEditOptions, onMouseDown, onMouseUp, onMouseDrag, onMouseMove, onKeyDown, onKeyUp, onFrame, onResize; res = eval(compile(code)); diff --git a/src/paper.js b/src/paper.js index 8ee5e96a..cccc226d 100644 --- a/src/paper.js +++ b/src/paper.js @@ -56,9 +56,9 @@ var paper = new function() { /*#*/ } // options.stats /*#*/ include('core/Base.js'); +/*#*/ include('core/Callback.js'); /*#*/ include('core/PaperScope.js'); /*#*/ include('core/PaperScopeItem.js'); -/*#*/ include('core/Callback.js'); // Include Paper classes, which are later injected into PaperScope by setting // them on the 'this' object, e.g.: diff --git a/src/tool/Tool.js b/src/tool/Tool.js index 8ae47af3..087ed863 100644 --- a/src/tool/Tool.js +++ b/src/tool/Tool.js @@ -46,10 +46,10 @@ * path.add(event.point); * } */ -var Tool = this.Tool = PaperScopeItem.extend(Callback, /** @lends Tool# */{ +var Tool = this.Tool = PaperScopeItem.extend(/** @lends Tool# */{ _list: 'tools', _reference: '_tool', // PaperScope has accessor for #tool - _events: [ 'onEditOptions', 'onSelect', 'onDeselect', 'onReselect', + _events: [ 'onActivate', 'onDeactivate', 'onEditOptions', 'onMouseDown', 'onMouseUp', 'onMouseDrag', 'onMouseMove', 'onKeyDown', 'onKeyUp' ], @@ -272,9 +272,9 @@ var Tool = this.Tool = PaperScopeItem.extend(Callback, /** @lends Tool# */{ needsChange, matchMaxDistance) { if (!start) { if (minDistance != null || maxDistance != null) { - var minDist = minDistance != null ? minDistance : 0; - var vector = pt.subtract(this._point); - var distance = vector.getLength(); + var minDist = minDistance != null ? minDistance : 0, + vector = pt.subtract(this._point), + distance = vector.getLength(); if (distance < minDist) return false; // Produce a new point on the way to pt if pt is further away