From 44de3516e87f5d8d6cabeca1e446e02d2ccae1cf Mon Sep 17 00:00:00 2001 From: Maeght Loan <37497007+loan-mgt@users.noreply.github.com> Date: Thu, 6 Mar 2025 20:13:25 +0000 Subject: [PATCH] fix: laptop pinch-zoom --- src/client/InputHandler.ts | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/client/InputHandler.ts b/src/client/InputHandler.ts index 302f7e49c..281b751a7 100644 --- a/src/client/InputHandler.ts +++ b/src/client/InputHandler.ts @@ -110,12 +110,17 @@ export class InputHandler { initialize() { this.canvas.addEventListener("pointerdown", (e) => this.onPointerDown(e)); window.addEventListener("pointerup", (e) => this.onPointerUp(e)); - this.canvas.addEventListener("wheel", (e) => this.onScroll(e), { - passive: false, - }); - this.canvas.addEventListener("wheel", (e) => this.onShiftScroll(e), { - passive: false, - }); + this.canvas.addEventListener( + "wheel", + (e) => { + this.onScroll(e); + this.onShiftScroll(e); + e.preventDefault(); + }, + { + passive: false, + }, + ); window.addEventListener("pointermove", this.onPointerMove.bind(this)); this.canvas.addEventListener("contextmenu", (e: MouseEvent) => { this.onContextMenu(e); @@ -305,7 +310,8 @@ export class InputHandler { private onScroll(event: WheelEvent) { if (!event.shiftKey) { - this.eventBus.emit(new ZoomEvent(event.x, event.y, event.deltaY)); + const ratio = event.ctrlKey ? 10 : 1; // Compensate pinch-zoom low sensitivity + this.eventBus.emit(new ZoomEvent(event.x, event.y, event.deltaY * ratio)); } }