From e7b5da53cd18382222a7ec5203ba703fcb64ef0f Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 17 Jul 2023 16:22:09 +0530 Subject: [PATCH 1/3] chore(): expose `__corner` => `getActiveControl()` --- src/canvas/Canvas.ts | 2 +- src/canvas/SelectableCanvas.ts | 2 +- src/shapes/IText/DraggableTextDelegate.ts | 6 +++++- src/shapes/IText/ITextBehavior.ts | 2 +- src/shapes/IText/ITextClickBehavior.ts | 4 ++-- src/shapes/Object/InteractiveObject.ts | 4 ++++ 6 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/canvas/Canvas.ts b/src/canvas/Canvas.ts index 8dc0989cf98..72511cd2ec4 100644 --- a/src/canvas/Canvas.ts +++ b/src/canvas/Canvas.ts @@ -1479,7 +1479,7 @@ export class Canvas extends SelectableCanvas { // target accepts selection !target.onSelect({ e }) && // make sure we are not on top of a control - !activeObject.__corner + !activeObject.getActiveControl() ) { if (isAS) { const prevActiveObjects = diff --git a/src/canvas/SelectableCanvas.ts b/src/canvas/SelectableCanvas.ts index 559ea112ad4..64e0bdbb0b6 100644 --- a/src/canvas/SelectableCanvas.ts +++ b/src/canvas/SelectableCanvas.ts @@ -817,7 +817,7 @@ export class SelectableCanvas< target.group.calcTransformMatrix() ) : this.getPointer(e); - const corner = target.__corner || '', + const corner = target.getActiveControl() || '', control = !!corner && target.controls[corner], actionHandler = alreadySelected && control diff --git a/src/shapes/IText/DraggableTextDelegate.ts b/src/shapes/IText/DraggableTextDelegate.ts index 39155cd6671..0999b050d74 100644 --- a/src/shapes/IText/DraggableTextDelegate.ts +++ b/src/shapes/IText/DraggableTextDelegate.ts @@ -206,7 +206,11 @@ export class DraggableTextDelegate { * @returns {boolean} determines whether {@link target} should/shouldn't become a drop target */ canDrop(e: DragEvent): boolean { - if (this.target.editable && !this.target.__corner && !e.defaultPrevented) { + if ( + this.target.editable && + !this.target.getActiveControl() && + !e.defaultPrevented + ) { if (this.isActive() && this.__dragStartSelection) { // drag source trying to drop over itself // allow dropping only outside of drag start selection diff --git a/src/shapes/IText/ITextBehavior.ts b/src/shapes/IText/ITextBehavior.ts index 5fe9c5977a9..ae685def422 100644 --- a/src/shapes/IText/ITextBehavior.ts +++ b/src/shapes/IText/ITextBehavior.ts @@ -407,7 +407,7 @@ export abstract class ITextBehavior< * called by {@link canvas#textEditingManager} */ updateSelectionOnMouseMove(e: TPointerEvent) { - if (this.__corner) { + if (this.getActiveControl()) { return; } diff --git a/src/shapes/IText/ITextClickBehavior.ts b/src/shapes/IText/ITextClickBehavior.ts index 8b5b9575b1a..f0fbbbf4ac3 100644 --- a/src/shapes/IText/ITextClickBehavior.ts +++ b/src/shapes/IText/ITextClickBehavior.ts @@ -135,7 +135,7 @@ export abstract class ITextClickBehavior< !this.canvas || !this.editable || notALeftClick(e as MouseEvent) || - this.__corner + this.getActiveControl() ) { return; } @@ -201,7 +201,7 @@ export abstract class ITextClickBehavior< return; } - if (this.__lastSelected && !this.__corner) { + if (this.__lastSelected && !this.getActiveControl()) { this.selected = false; this.__lastSelected = false; this.enterEditing(e); diff --git a/src/shapes/Object/InteractiveObject.ts b/src/shapes/Object/InteractiveObject.ts index af28ff8153e..6f489a1a70b 100644 --- a/src/shapes/Object/InteractiveObject.ts +++ b/src/shapes/Object/InteractiveObject.ts @@ -173,6 +173,10 @@ export class InteractiveFabricObject< return super._updateCacheCanvas(); } + getActiveControl() { + return this.__corner + } + /** * Determines which corner is under the mouse cursor, represented by `pointer`. * This function is return a corner only if the object is the active one. From 3f17e5b62d9b8464388b6b02cabf9337f4cb78da Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 17 Jul 2023 13:08:33 +0000 Subject: [PATCH 2/3] update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84b61cc3b10..293a0e0432b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## [next] +- chore(): expose `__corner` => `getActiveControl()` [#9102](https://github.com/fabricjs/fabric.js/pull/9102) - chore(TS) Add type-checking to files excluded with ts-nocheck ( Parser mostly ) [#9085](https://github.com/fabricjs/fabric.js/pull/9085) - test(Text): Add some tests for text in Jest [#9083](https://github.com/fabricjs/fabric.js/pull/9083) - ci(): Install system deps only when necessary [#9086](https://github.com/fabricjs/fabric.js/pull/9086) From 773049dac233adc5585291292f0ab4631f121179 Mon Sep 17 00:00:00 2001 From: Andrea Bogazzi Date: Tue, 18 Jul 2023 01:09:14 +0200 Subject: [PATCH 3/3] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3f475afa18..112bd60b110 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## [next] -- chore(): expose `__corner` => `getActiveControl()` [#9102](https://github.com/fabricjs/fabric.js/pull/9102) +- feat(InteractiveObject): add `getActiveControl()` to expose `__corner` [#9102](https://github.com/fabricjs/fabric.js/pull/9102) - ci(sandbox): bump next.js [#9100](https://github.com/fabricjs/fabric.js/pull/9100) - test(playwright): add snapshots, refactor utils, coverage [#9078](https://github.com/fabricjs/fabric.js/pull/9078) - chore(TS) Add type-checking to files excluded with ts-nocheck ( Parser mostly ) [#9085](https://github.com/fabricjs/fabric.js/pull/9085)