diff --git a/qt/aqt/webview.py b/qt/aqt/webview.py index ccfd86c88..a5be5e21c 100644 --- a/qt/aqt/webview.py +++ b/qt/aqt/webview.py @@ -210,7 +210,9 @@ class WebContent: class AnkiWebView(QWebEngineView): def __init__( - self, parent: Optional[QWidget] = None, title: str = "default" + self, + parent: Optional[QWidget] = None, + title: str = "default", ) -> None: QWebEngineView.__init__(self, parent=parent) self.set_title(title) @@ -238,22 +240,6 @@ class AnkiWebView(QWebEngineView): context=Qt.WidgetWithChildrenShortcut, activated=self.onEsc, ) - if isMac: - for key, fn in [ - (QKeySequence.Copy, self.onCopy), - (QKeySequence.Paste, self.onPaste), - (QKeySequence.Cut, self.onCut), - (QKeySequence.SelectAll, self.onSelectAll), - ]: - QShortcut( # type: ignore - key, self, context=Qt.WidgetWithChildrenShortcut, activated=fn - ) - QShortcut( # type: ignore - QKeySequence("ctrl+shift+v"), - self, - context=Qt.WidgetWithChildrenShortcut, - activated=self.onPaste, - ) def set_title(self, title: str) -> None: self.title = title # type: ignore[assignment] diff --git a/ts/editor/index.ts b/ts/editor/index.ts index 14ec2e16b..af7341f5f 100644 --- a/ts/editor/index.ts +++ b/ts/editor/index.ts @@ -8,6 +8,8 @@ import { filterHTML } from "html-filter"; import { updateActiveButtons, disableButtons } from "./toolbar"; import { setupI18n, ModuleName } from "lib/i18n"; +import { registerShortcut } from "lib/shortcuts"; +import { bridgeCommand } from "./lib"; import "./fields.css"; @@ -40,6 +42,11 @@ customElements.define("anki-editing-area", EditingArea, { extends: "div" }); customElements.define("anki-label-container", LabelContainer, { extends: "div" }); customElements.define("anki-editor-field", EditorField, { extends: "div" }); +registerShortcut(() => document.execCommand("copy"), "Control+C"); +registerShortcut(() => document.execCommand("cut"), "Control+X"); +registerShortcut(() => document.execCommand("selectAll"), "Control+A"); +registerShortcut(() => bridgeCommand("paste"), "Control+Shift+V"); + export function getCurrentField(): EditingArea | null { return document.activeElement instanceof EditingArea ? document.activeElement