diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte index ee139f9..5a2726e 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -109,6 +109,12 @@ + + swapTool(toolBrush)} /> + swapTool(toolFill)} /> + swapTool(toolPicker)} /> + swapTool(toolErase)} /> +
diff --git a/frontend/src/components/Shortcut.svelte b/frontend/src/components/Shortcut.svelte index 2398671..9f90585 100644 --- a/frontend/src/components/Shortcut.svelte +++ b/frontend/src/components/Shortcut.svelte @@ -8,9 +8,10 @@ export let group: string = 'default' export let cmd: string export let keys: string[] + export let global: boolean = false const { registerShortcut } = getContext(SHORTCUTS) as ShortcutsType - registerShortcut({cmd, group, keys, callback: () => { + registerShortcut({cmd, group, global, keys, callback: () => { dispatch('trigger', {}) }}) diff --git a/frontend/src/components/Shortcuts.svelte b/frontend/src/components/Shortcuts.svelte index b06f74d..6c06256 100644 --- a/frontend/src/components/Shortcuts.svelte +++ b/frontend/src/components/Shortcuts.svelte @@ -3,7 +3,7 @@ import { get, writable } from 'svelte/store' export const SHORTCUTS = {} export type ShortcutsType = { - registerShortcut: (opts: {cmd: string, group: string, keys: string[], callback: () => void}) => void, + registerShortcut: (opts: {cmd: string, group: string, global: boolean, keys: string[], callback: () => void}) => void, } let currentShortcuts = writable({id: {}, group: 'default'}) @@ -12,6 +12,7 @@ id: {}, cmd: string, keys: string[], + global: boolean, callback: () => void, group: string, } @@ -43,7 +44,7 @@ let cur = get(currentShortcuts) for (let shortcut of get(shortcuts)) { if (shortcut.group !== cur.group) continue - if (shortcut.id !== cur.id) continue + if (!shortcut.global && shortcut.id !== cur.id) continue if (shortcut.keys.includes(keystring)) { shortcut.callback() } @@ -86,12 +87,12 @@ })(id, group, active) setContext(SHORTCUTS, { - registerShortcut: (opts: {cmd: string, keys: string[], callback: () => void}) => { + registerShortcut: (opts: {cmd: string, keys: string[], global: boolean, callback: () => void}) => { shortcuts.update(shortcuts => { let keys = opts.keys.map(v => { return v.replaceAll('ctrl', 'control') }) - shortcuts.push({id, cmd: opts.cmd, group: group, keys: keys.map(v=>keysToString(v.split('+'))), callback: opts.callback}) + shortcuts.push({id, cmd: opts.cmd, group: group, global: opts.global, keys: keys.map(v=>keysToString(v.split('+'))), callback: opts.callback}) return shortcuts })