From 96b2795f48953fea22076b0ccffd3ebc2e15bf2d Mon Sep 17 00:00:00 2001 From: peterkogo Date: Tue, 30 Jul 2024 13:42:49 +0200 Subject: [PATCH 1/3] only capture pointer for when selection is starting --- packages/react/src/container/Pane/index.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react/src/container/Pane/index.tsx b/packages/react/src/container/Pane/index.tsx index 3fd1d079..9e35829c 100644 --- a/packages/react/src/container/Pane/index.tsx +++ b/packages/react/src/container/Pane/index.tsx @@ -120,7 +120,6 @@ export function Pane({ const onPointerDown = (event: ReactPointerEvent): void => { const { resetSelectedElements, domNode, edgeLookup } = store.getState(); containerBounds.current = domNode?.getBoundingClientRect(); - (event.target as Element)?.setPointerCapture?.(event.pointerId); if ( !elementsSelectable || @@ -132,6 +131,8 @@ export function Pane({ return; } + (event.target as Element)?.setPointerCapture?.(event.pointerId); + selectionStarted.current = true; selectionInProgress.current = false; edgeIdLookup.current = new Map(); From c457890a1fc38b58ba262dd850c0d0692246f191 Mon Sep 17 00:00:00 2001 From: peterkogo Date: Tue, 30 Jul 2024 13:56:27 +0200 Subject: [PATCH 2/3] fixed pointer capture for svelte as well --- packages/svelte/src/lib/container/Pane/Pane.svelte | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/svelte/src/lib/container/Pane/Pane.svelte b/packages/svelte/src/lib/container/Pane/Pane.svelte index 0856381a..8b413389 100644 --- a/packages/svelte/src/lib/container/Pane/Pane.svelte +++ b/packages/svelte/src/lib/container/Pane/Pane.svelte @@ -92,7 +92,6 @@ function onPointerDown(event: PointerEvent) { containerBounds = container.getBoundingClientRect(); - (event.target as Element)?.setPointerCapture?.(event.pointerId); if ( !elementsSelectable || @@ -104,6 +103,8 @@ return; } + (event.target as Element)?.setPointerCapture?.(event.pointerId); + const { x, y } = getEventPosition(event, containerBounds); unselectNodesAndEdges(); From 7a6e9e3091c8ee0aedbf8ae6e5c4ee08485417ab Mon Sep 17 00:00:00 2001 From: peterkogo Date: Tue, 30 Jul 2024 13:58:57 +0200 Subject: [PATCH 3/3] added changeset --- .changeset/perfect-spiders-bathe.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/perfect-spiders-bathe.md diff --git a/.changeset/perfect-spiders-bathe.md b/.changeset/perfect-spiders-bathe.md new file mode 100644 index 00000000..79db30b8 --- /dev/null +++ b/.changeset/perfect-spiders-bathe.md @@ -0,0 +1,6 @@ +--- +'@xyflow/react': patch +'@xyflow/svelte': patch +--- + +fix(pane) only capture pointer after a valid selection has started, fixes #4492