From 9357917baba14618ea62875edb756bd32c12cf2e Mon Sep 17 00:00:00 2001 From: Axel Bocciarelli Date: Wed, 26 Jul 2023 16:31:10 +0200 Subject: [PATCH] Allow canceling select-to-zoom interaction with right click --- .../lib/src/interactions/SelectionTool.tsx | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/lib/src/interactions/SelectionTool.tsx b/packages/lib/src/interactions/SelectionTool.tsx index 9fef719e9..86d97518d 100644 --- a/packages/lib/src/interactions/SelectionTool.tsx +++ b/packages/lib/src/interactions/SelectionTool.tsx @@ -1,5 +1,6 @@ import { assertDefined } from '@h5web/shared'; import { + useEventListener, useKeyboardEvent, usePrevious, useRafState, @@ -138,15 +139,16 @@ function SelectionTool(props: Props) { useCanvasEvents({ onPointerDown, onPointerMove, onPointerUp }); - useKeyboardEvent( - 'Escape', - () => { - startEvtRef.current = undefined; - setRawSelection(undefined); - }, - [], - { event: 'keydown' }, - ); + function cancelSelection() { + startEvtRef.current = undefined; + setRawSelection(undefined); + } + + useKeyboardEvent('Escape', cancelSelection, [], { event: 'keydown' }); + useEventListener(window, 'contextmenu', (evt: MouseEvent) => { + evt.preventDefault(); + cancelSelection(); + }); // Compute effective selection const selection = useMemo(