diff --git a/src/lib/ToolBox.svelte b/src/lib/ToolBox.svelte index a9ebeba..7703dce 100644 --- a/src/lib/ToolBox.svelte +++ b/src/lib/ToolBox.svelte @@ -56,7 +56,7 @@ let customSnappingDialogOpened: boolean = false let customSnappingDialogValue: number = 0 $: customSnappingDialogValue = snapTo - let snappingSelect: HTMLSelectElement + export let snappingSelect: HTMLSelectElement
diff --git a/src/lib/control/ControlHandler.svelte b/src/lib/control/ControlHandler.svelte index bbc1c3d..4c1c5ae 100644 --- a/src/lib/control/ControlHandler.svelte +++ b/src/lib/control/ControlHandler.svelte @@ -5,6 +5,7 @@ MODES, MODE_SHORTCUTS, MODE_SHORTCUTS_NUMERAL, + SnapTo, } from '$lib/editing/modes' import { KEYBOARD_SHORTCUTS } from '$lib/control/keyboard' @@ -13,6 +14,7 @@ // Stores import { inside } from '$lib/position' import { preferences } from '$lib/preferences' + import { resizingLastWidth } from '$lib/editing/resizing' type KeyboardEvents = { [K in KeyboardAction]: void @@ -26,12 +28,25 @@ export let zoom: number export let scrollTick: number + export let snappingSelect: HTMLSelectElement + export let snapTo: SnapTo function mousewheel(event: WheelEvent) { if (!$inside) return event.preventDefault() if (event.ctrlKey) { zoom -= (event.deltaY > 0 ? 0.1 : -0.1) * (event.shiftKey ? 10 : 1) + } else if (event.altKey && event.shiftKey) { + snappingSelect.selectedIndex = Math.min( + Math.max(snappingSelect.selectedIndex + (event.deltaY > 0 ? 1 : -1), 0), + snappingSelect.options.length - 2 + ) + snapTo = parseInt(snappingSelect.options[snappingSelect.selectedIndex].value) + } else if (event.altKey) { + $resizingLastWidth = Math.min( + Math.max($resizingLastWidth + (event.deltaY > 0 ? -1 : 1), 1), + 12 + ) } else { scrollTick -= (event.deltaY * diff --git a/src/routes/edit.svelte b/src/routes/edit.svelte index 92ee0de..318b8be 100644 --- a/src/routes/edit.svelte +++ b/src/routes/edit.svelte @@ -354,6 +354,7 @@ let currentMode: Mode = 'select' let snapTo: SnapTo = SNAPTO_DEFAULT + let snappingSelect: HTMLSelectElement $: dbg('scrollTick', scrollTick) @@ -1277,6 +1278,7 @@ bind:currentMode bind:snapTo bind:openMainMenu + bind:snappingSelect on:about={() => { aboutDialogOpened = true }} @@ -1687,6 +1689,8 @@