Skip to content

Commit

Permalink
squash _beforeTransform => _setupCurrentTransform
Browse files Browse the repository at this point in the history
backward compat
  • Loading branch information
ShaMan123 committed Nov 28, 2023
1 parent d644de7 commit 9594e0b
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 32 deletions.
27 changes: 6 additions & 21 deletions src/canvas/Canvas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1093,20 +1093,16 @@ export class Canvas extends SelectableCanvas implements CanvasOptions {
isTouchEvent(e)
);
if (target === this._activeObject && (corner || !grouped)) {
this._setupCurrentTransform(e, target, alreadySelected);
const transform =
this._setupCurrentTransform(e, target, alreadySelected) ||
// TODO: remove `_setupCurrentTransform(...args): void` backward compatibility
this._currentTransform;
const control = target.controls[corner],
pointer = this.getScenePoint(e),
mouseDownHandler =
control && control.getMouseDownHandler(e, target, control);
if (mouseDownHandler) {
mouseDownHandler.call(
control,
e,
this._currentTransform!,
pointer.x,
pointer.y
);
}
mouseDownHandler &&
mouseDownHandler.call(control, e, transform, pointer.x, pointer.y);
}
}
// we clear `_objectsToRender` in case of a change in order to repopulate it at rendering
Expand Down Expand Up @@ -1146,17 +1142,6 @@ export class Canvas extends SelectableCanvas implements CanvasOptions {
: this.findTarget(e);
}

/**
* @private
*/
_beforeTransform(e: TPointerEvent) {
const t = this._currentTransform!;
this.fire('before:transform', {
e,
transform: t,
});
}

/**
* Method that defines the actions when mouse is hovering the canvas.
* The currentTransform parameter will define whether the user is rotating/scaling/translating
Expand Down
16 changes: 9 additions & 7 deletions src/canvas/SelectableCanvas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -582,16 +582,14 @@ export class SelectableCanvas<EventSpec extends CanvasEvents = CanvasEvents>
/**
* @private
* @param {Event} e Event object
* @param {FaricObject} target
* @param {FabricObject} target
* @param {boolean} [alreadySelected] pass true to setup the active control
*/
_setupCurrentTransform(
e: TPointerEvent,
target: FabricObject,
alreadySelected: boolean
): void {
if (!target) {
return;
}
): Transform {
const pointer = target.group
? // transform pointer to target's containing coordinate plane
sendPointToPlane(
Expand Down Expand Up @@ -647,8 +645,12 @@ export class SelectableCanvas<EventSpec extends CanvasEvents = CanvasEvents>
transform.originY = CENTER;
}
this._currentTransform = transform;
// @ts-expect-error this method exists in the subclass - should be moved or declared as abstract
this._beforeTransform(e);
this.fire('before:transform', {
e,
transform,
});

return transform;
}

/**
Expand Down
6 changes: 2 additions & 4 deletions test/unit/canvas_events.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,7 @@
}
});

QUnit.test('_beforeTransform', function (assert) {
assert.ok(typeof canvas._beforeTransform === 'function');

QUnit.test('before:transform', function (assert) {
var canvasOffset = canvas.calcOffset();
var rect = new fabric.Rect({ left: 50, top: 50, width: 50, height: 50 });
canvas.add(rect);
Expand Down Expand Up @@ -67,7 +65,7 @@
which: 1,
target: canvas.upperCanvasEl
};
canvas._beforeTransform(e, rect);
canvas._setupCurrentTransform(e, rect);
}
assert.equal(counter, corners.length, 'before:transform should trigger onBeforeScaleRotate when canvas is zoomed');
assert.equal(t, rect, 'before:transform should receive correct target when canvas is zoomed');
Expand Down

0 comments on commit 9594e0b

Please sign in to comment.