From 36a1453d03ca1a0cd9247da26bd220555dc3c1cc Mon Sep 17 00:00:00 2001 From: Ciftci <168324977+seabeeberry@users.noreply.github.com> Date: Tue, 19 Aug 2025 07:30:18 +0200 Subject: [PATCH] Add workaround for a Safari bug where our number input fields can't be released from click-and-drag (#3053) Added fallback for Safari to trigger a pointerLockChange in case it doesnt fire automatically Co-authored-by: seabeeberry --- frontend/src/components/widgets/inputs/NumberInput.svelte | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frontend/src/components/widgets/inputs/NumberInput.svelte b/frontend/src/components/widgets/inputs/NumberInput.svelte index 82a48a49..acbea4bb 100644 --- a/frontend/src/components/widgets/inputs/NumberInput.svelte +++ b/frontend/src/components/widgets/inputs/NumberInput.svelte @@ -365,6 +365,11 @@ cumulativeDragDelta = 0; document.exitPointerLock(); + + // Fallback for Safari in case pointerlockchange never fires + setTimeout(() => { + if (!document.pointerLockElement) pointerLockChange(); + }, 0); }; const pointerMove = (e: PointerEvent) => { // Abort the drag if right click is down. This works here because a "pointermove" event is fired when right clicking even if the cursor didn't move.