From 7a9df73e0b3bbb0598037e6b981e8347cb115724 Mon Sep 17 00:00:00 2001 From: Ryan Di Date: Thu, 3 Apr 2025 15:52:00 +1100 Subject: [PATCH] fix selecting text containers and containing frames together --- packages/excalidraw/lasso/index.ts | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/packages/excalidraw/lasso/index.ts b/packages/excalidraw/lasso/index.ts index d2434e73e..6d2e719b5 100644 --- a/packages/excalidraw/lasso/index.ts +++ b/packages/excalidraw/lasso/index.ts @@ -96,15 +96,6 @@ export class LassoTrail extends AnimatedTrail { for (const [id] of Object.entries(nextSelectedElementIds)) { const element = this.app.scene.getNonDeletedElement(id); - if (element && isFrameLikeElement(element)) { - const elementsInFrame = getFrameChildren( - this.app.scene.getNonDeletedElementsMap(), - element.id, - ); - for (const child of elementsInFrame) { - delete nextSelectedElementIds[child.id]; - } - } if (element && isTextElement(element)) { const container = getContainerElement( @@ -118,6 +109,21 @@ export class LassoTrail extends AnimatedTrail { } } + // remove all children of selected frames + for (const [id] of Object.entries(nextSelectedElementIds)) { + const element = this.app.scene.getNonDeletedElement(id); + + if (element && isFrameLikeElement(element)) { + const elementsInFrame = getFrameChildren( + this.app.scene.getNonDeletedElementsMap(), + element.id, + ); + for (const child of elementsInFrame) { + delete nextSelectedElementIds[child.id]; + } + } + } + const nextSelection = selectGroupsForSelectedElements( { editingGroupId: prevState.editingGroupId,