diff --git a/packages/react-canvas-core/src/core-models/BaseModel.ts b/packages/react-canvas-core/src/core-models/BaseModel.ts index cc44cfd..b68d47a 100644 --- a/packages/react-canvas-core/src/core-models/BaseModel.ts +++ b/packages/react-canvas-core/src/core-models/BaseModel.ts @@ -98,14 +98,16 @@ export class BaseModel extends } setSelected(selected: boolean = true) { - this.options.selected = selected; + if (this.options.selected !== selected) { + this.options.selected = selected; - this.fireEvent( - { - isSelected: selected - }, - 'selectionChanged' - ); + this.fireEvent( + { + isSelected: selected + }, + 'selectionChanged' + ); + } } remove() { diff --git a/packages/react-canvas-core/src/states/SelectionBoxState.ts b/packages/react-canvas-core/src/states/SelectionBoxState.ts index 50467b6..6484334 100644 --- a/packages/react-canvas-core/src/states/SelectionBoxState.ts +++ b/packages/react-canvas-core/src/states/SelectionBoxState.ts @@ -58,6 +58,8 @@ export class SelectionBoxState extends AbstractDisplacementState { const bounds = ((model as unknown) as ModelGeometryInterface).getBoundingBox(); if (rect.containsPoint(bounds.getTopLeft()) && rect.containsPoint(bounds.getBottomRight())) { model.setSelected(true); + } else { + model.setSelected(false); } } }