From 07fbc7e34ad858cb7d96b48af8af44b5e222d6aa Mon Sep 17 00:00:00 2001 From: peterkogo Date: Thu, 30 Oct 2025 12:53:40 +0100 Subject: [PATCH] also postpone starting selection when clicking on a node --- .../src/routes/examples/figma/+page.svelte | 1 + .../svelte/src/lib/container/Pane/Pane.svelte | 17 +++-------------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/examples/svelte/src/routes/examples/figma/+page.svelte b/examples/svelte/src/routes/examples/figma/+page.svelte index 9c448353..33de11ea 100644 --- a/examples/svelte/src/routes/examples/figma/+page.svelte +++ b/examples/svelte/src/routes/examples/figma/+page.svelte @@ -39,6 +39,7 @@ bind:edges fitView selectionMode={SelectionMode.Partial} + multiSelectionKey={['Meta', 'Shift']} selectionOnDrag panOnScroll paneClickDistance={100} diff --git a/packages/svelte/src/lib/container/Pane/Pane.svelte b/packages/svelte/src/lib/container/Pane/Pane.svelte index d2fdec9d..b7de8cfa 100644 --- a/packages/svelte/src/lib/container/Pane/Pane.svelte +++ b/packages/svelte/src/lib/container/Pane/Pane.svelte @@ -120,13 +120,6 @@ event.stopPropagation(); event.preventDefault(); } - - if (paneClickDistance === 0 || store.selectionKeyPressed) { - store.unselectNodesAndEdges(); - - onselectionstart?.(event); - selectionInProgress = true; - } } function onPointerMove(event: PointerEvent) { @@ -137,14 +130,10 @@ const mousePos = getEventPosition(event, containerBounds); const { startX = 0, startY = 0 } = store.selectionRect; - if ( - !selectionInProgress && - event.target === container && - !store.selectionKeyPressed && - paneClickDistance > 0 - ) { + if (!selectionInProgress) { + const requiredDistance = store.selectionKeyPressed ? 0 : paneClickDistance; const distance = Math.hypot(mousePos.x - startX, mousePos.y - startY); - if (distance <= paneClickDistance) { + if (distance <= requiredDistance) { return; } store.unselectNodesAndEdges();