fix: erase all elements which are hit with single point click (#4934)

This commit is contained in:
Aakansha Doshi 2022-03-17 21:03:59 +05:30 committed by GitHub
parent 8c0a0415de
commit ceb43ed8fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4441,12 +4441,15 @@ class App extends React.Component<AppProps, AppState> {
}, },
this.state, this.state,
); );
const hitElement = this.getElementAtPosition( const hitElements = this.getElementsAtPosition(
scenePointer.x, scenePointer.x,
scenePointer.y, scenePointer.y,
); );
pointerDownState.hit.element = hitElement; hitElements.forEach(
(hitElement) =>
(pointerDownState.elementIdsToErase[hitElement.id] = true),
);
} }
this.eraseElements(pointerDownState); this.eraseElements(pointerDownState);
return; return;
@ -4592,16 +4595,12 @@ class App extends React.Component<AppProps, AppState> {
} }
private eraseElements = (pointerDownState: PointerDownState) => { private eraseElements = (pointerDownState: PointerDownState) => {
const hitElement = pointerDownState.hit.element;
const elements = this.scene.getElements().map((ele) => { const elements = this.scene.getElements().map((ele) => {
if (pointerDownState.elementIdsToErase[ele.id]) { if (pointerDownState.elementIdsToErase[ele.id]) {
return newElementWith(ele, { isDeleted: true }); return newElementWith(ele, { isDeleted: true });
} else if (hitElement && ele.id === hitElement.id) {
return newElementWith(ele, { isDeleted: true });
} else if ( } else if (
isBoundToContainer(ele) && isBoundToContainer(ele) &&
(pointerDownState.elementIdsToErase[ele.containerId] || pointerDownState.elementIdsToErase[ele.containerId]
(hitElement && ele.containerId === hitElement.id))
) { ) {
return newElementWith(ele, { isDeleted: true }); return newElementWith(ele, { isDeleted: true });
} }