From 920b83b513fe2a1987d453c9b240dce6e941c928 Mon Sep 17 00:00:00 2001 From: Andrea Bogazzi Date: Sat, 7 Jan 2017 14:38:57 +0100 Subject: [PATCH] Handle wheel event as a normal event with target. (#3612) * wheel event with target * fix target detection --- src/canvas.class.js | 2 -- src/mixins/canvas_events.mixin.js | 11 ++++------- src/shapes/object.class.js | 1 + 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/canvas.class.js b/src/canvas.class.js index 863cd500..a35b63c8 100644 --- a/src/canvas.class.js +++ b/src/canvas.class.js @@ -1087,7 +1087,6 @@ activeGroup = this.getActiveGroup(), activeObject = this.getActiveObject(), activeTarget; - // first check current group (if one exists) // active group does not check sub targets like normal groups. // if active group just exits. @@ -1111,7 +1110,6 @@ } this.targets = []; - var target = this._searchPossibleTargets(this._objects, pointer); if (e[this.altSelectionKey] && target && activeTarget && target !== activeTarget) { target = activeTarget; diff --git a/src/mixins/canvas_events.mixin.js b/src/mixins/canvas_events.mixin.js index e8b639e0..7aa7fe35 100644 --- a/src/mixins/canvas_events.mixin.js +++ b/src/mixins/canvas_events.mixin.js @@ -351,10 +351,9 @@ * @param {fabric.Object} targetObj receiving event */ _handleEvent: function(e, eventType, targetObj) { - var target = typeof targetObj === undefined ? this.findTarget(e) : targetObj, + var target = typeof targetObj === 'undefined' ? this.findTarget(e) : targetObj, targets = this.targets || [], options = { e: e, target: target, subTargets: targets }; - this.fire('mouse:' + eventType, options); target && target.fire('mouse' + eventType, options); for (var i = 0; i < targets.length; i++) { @@ -457,8 +456,7 @@ */ __onMouseDown: function (e) { - var target = this.findTarget(e), - pointer = this.getPointer(e, true); + var target = this.findTarget(e); // if right click just fire events var isRightClick = 'which' in e ? e.which === 3 : e.button === 2; @@ -480,6 +478,7 @@ } // save pointer for check in __onMouseUp event + var pointer = this.getPointer(e, true); this._previousPointer = pointer; var shouldRender = this._shouldRender(target, pointer), @@ -628,9 +627,7 @@ * @param {Event} e Event object fired on mouseup */ __onMouseWheel: function(e) { - this.fire('mouse:wheel', { - e: e - }); + this._handleEvent(e, 'wheel'); }, /** diff --git a/src/shapes/object.class.js b/src/shapes/object.class.js index f229c053..d8141fe4 100644 --- a/src/shapes/object.class.js +++ b/src/shapes/object.class.js @@ -36,6 +36,7 @@ * @fires mouseup * @fires mouseover * @fires mouseout + * @fires mousewheel */ fabric.Object = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.Object.prototype */ {