diff --git a/ts/editor-toolbar/ColorPicker.svelte b/ts/editor-toolbar/ColorPicker.svelte index c722ba232..277b74eae 100644 --- a/ts/editor-toolbar/ColorPicker.svelte +++ b/ts/editor-toolbar/ColorPicker.svelte @@ -74,5 +74,5 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html {title} on:click={delegateToInput} on:mousedown|preventDefault> - + diff --git a/ts/editor/inputHandlers.ts b/ts/editor/inputHandlers.ts index 6d938f86c..9d3961058 100644 --- a/ts/editor/inputHandlers.ts +++ b/ts/editor/inputHandlers.ts @@ -5,6 +5,7 @@ import { updateActiveButtons } from "editor-toolbar"; import { EditingArea } from "./editingArea"; import { caretToEnd, nodeIsElement, getBlockElement } from "./helpers"; import { triggerChangeTimer } from "./changeTimer"; +import { registerShortcut } from "anki/shortcuts"; export function onInput(event: Event): void { // make sure IME changes get saved @@ -51,21 +52,22 @@ export function onKey(evt: KeyboardEvent): void { triggerChangeTimer(currentField); } -globalThis.addEventListener("keydown", (evt: KeyboardEvent) => { - if (evt.code === "Tab") { - globalThis.addEventListener( - "focusin", - (evt: FocusEvent) => { - const newFocusTarget = evt.target; - if (newFocusTarget instanceof EditingArea) { - caretToEnd(newFocusTarget); - updateActiveButtons(); - } - }, - { once: true } - ); +function updateFocus(evt: FocusEvent) { + const newFocusTarget = evt.target; + if (newFocusTarget instanceof EditingArea) { + caretToEnd(newFocusTarget); + updateActiveButtons(); } -}); +} + +registerShortcut( + () => document.addEventListener("focusin", updateFocus, { once: true }), + "Tab" +); +registerShortcut( + () => document.addEventListener("focusin", updateFocus, { once: true }), + "Shift+Tab" +); export function onKeyUp(evt: KeyboardEvent): void { const currentField = evt.currentTarget as EditingArea;