diff --git a/src/controls.actions.js b/src/controls.actions.js index 7c61a484b97..b04e089018d 100644 --- a/src/controls.actions.js +++ b/src/controls.actions.js @@ -16,8 +16,9 @@ function fireEvent(eventName, options) { var target = options.transform.target, - canvas = target.canvas; - canvas && canvas.fire('object:' + eventName, options); + canvas = target.canvas, + canasOptions = Object.assign({}, options, { target: target }); + canvas && canvas.fire('object:' + eventName, canasOptions); target.fire(eventName, options); } diff --git a/test/unit/controls_handlers.js b/test/unit/controls_handlers.js index 6e645d832b5..8aefa43ebd0 100644 --- a/test/unit/controls_handlers.js +++ b/test/unit/controls_handlers.js @@ -46,5 +46,39 @@ fabric.controlHandlers.changeWidth(eventData, transform, 200, 300); assert.equal(Math.floor(transform.target.width), 51); }); + QUnit.test('scalingXOrSkewingY changes scaleX', function(assert) { + transform.target.scaleX = 1; + transform.target.strokeWidth = 0; + fabric.controlHandlers.scalingXOrSkewingY(eventData, transform, 200, 300); + assert.equal(Math.round(transform.target.scaleX), 2); + }); + QUnit.test('scalingXOrSkewingY changes skewY if shift pressed', function(assert) { + transform.target.scaleX = 1; + transform.target.skewY = 0; + transform.target.strokeWidth = 0; + eventData.shiftKey = true; + fabric.controlHandlers.scalingXOrSkewingY(eventData, transform, 200, 300); + assert.equal(Math.round(transform.target.skewY), 79); + assert.equal(Math.round(transform.target.scaleX), 1); + }); + QUnit.test('scalingXOrSkewingY will fire events on canvas and target', function(assert) { + var done = assert.async(); + transform.target.scaleX = 1; + transform.target.canvas.on('object:scaling', function(options) { + assert.equal(options.target, transform.target); + }); + transform.target.on('scaling', function(options) { + assert.deepEqual(options, { + e: eventData, + transform: transform, + pointer: { + x: 200, + y: 300, + }, + }); + done(); + }); + fabric.controlHandlers.scalingXOrSkewingY(eventData, transform, 200, 300); + }); }); })();