From 60e5a855ea304bc8f45d2a46d6afa6109e3660f3 Mon Sep 17 00:00:00 2001 From: Jason Reed Date: Sun, 5 Nov 2023 10:15:00 -0500 Subject: [PATCH] Fix wrong tile zoom when dragging tile over toolbar (fix #50) --- src/ui/view-helpers.ts | 2 +- src/ui/widget-helpers.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ui/view-helpers.ts b/src/ui/view-helpers.ts index 8b00eee..60fceb2 100644 --- a/src/ui/view-helpers.ts +++ b/src/ui/view-helpers.ts @@ -44,7 +44,7 @@ export function canvas_from_drag_tile(state: GameState, ms: MouseState): SE2 { switch (ms.t) { case 'drag_tile': const wp0 = getWidgetPoint(state, ms.orig_p_in_canvas); - const wp1 = getWidgetPoint(state, ms.p_in_canvas); + const wp1 = getWidgetPoint(state, ms.p_in_canvas, true); const local1_from_canvas = wp1.local_from_canvas; const local0_from_tile0 = translate(vm(wp0.p_in_local, Math.floor)); const tile0_from_canvas = compose(inverse(local0_from_tile0), wp0.local_from_canvas); diff --git a/src/ui/widget-helpers.ts b/src/ui/widget-helpers.ts index d9468bc..714f992 100644 --- a/src/ui/widget-helpers.ts +++ b/src/ui/widget-helpers.ts @@ -46,8 +46,8 @@ export type WidgetPoint = | { t: 'toolbar', p_in_local: Point, p_in_canvas: Point, local_from_canvas: SE2, toolIndex: number } ; -export function getWidgetPoint(state: GameState, p_in_canvas: Point): WidgetPoint { - if (pointInRect(p_in_canvas, toolbar_bds_in_canvas)) { +export function getWidgetPoint(state: GameState, p_in_canvas: Point, dragging?: boolean): WidgetPoint { + if (pointInRect(p_in_canvas, toolbar_bds_in_canvas) && !dragging) { const toolbar_from_canvas = inverse(canvas_from_toolbar()); const p_in_local = apply(toolbar_from_canvas, p_in_canvas); return {