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 {