diff --git a/frontend/app/block/blockframe.tsx b/frontend/app/block/blockframe.tsx index 9b0010c50..dbb6035ed 100644 --- a/frontend/app/block/blockframe.tsx +++ b/frontend/app/block/blockframe.tsx @@ -8,7 +8,7 @@ import { atoms, globalStore, useBlockAtom, WOS } from "@/app/store/global"; import * as services from "@/app/store/services"; import { MagnifyIcon } from "@/element/magnify"; import { useLayoutModel } from "@/layout/index"; -import { adaptFromReactOrNativeKeyEvent, checkKeyPressed } from "@/util/keyutil"; +import { checkKeyPressed, keydownWrapper } from "@/util/keyutil"; import * as util from "@/util/util"; import clsx from "clsx"; import * as jotai from "jotai"; @@ -258,13 +258,15 @@ const BlockFrame_Default_Component = (props: BlockFrameProps) => { const viewIconElem = getViewIconElem(viewIconUnion, blockData); - function handleKeyDown(e: React.KeyboardEvent) { - const waveEvent = adaptFromReactOrNativeKeyEvent(e); + function handleKeyDown(waveEvent: WaveKeyboardEvent): boolean { if (checkKeyPressed(waveEvent, "Cmd:m")) { - e.preventDefault(); layoutModel?.onMagnifyToggle(); - return; + return true; } + if (viewModel?.keyDownHandler) { + return viewModel.keyDownHandler(waveEvent); + } + return false; } const innerStyle: React.CSSProperties = {}; if (!preview && customBg?.bg != null) { @@ -290,7 +292,7 @@ const BlockFrame_Default_Component = (props: BlockFrameProps) => { onClick={blockModel?.onClick} onFocusCapture={blockModel?.onFocusCapture} ref={blockModel?.blockRef} - onKeyDown={handleKeyDown} + onKeyDown={keydownWrapper(handleKeyDown)} >
diff --git a/frontend/types/custom.d.ts b/frontend/types/custom.d.ts index 309289ca2..877685dbe 100644 --- a/frontend/types/custom.d.ts +++ b/frontend/types/custom.d.ts @@ -202,6 +202,7 @@ declare global { onSearch?: (text: string) => void; getSettingsMenuItems?: () => ContextMenuItem[]; giveFocus?: () => boolean; + keyDownHandler?: (e: WaveKeyboardEvent) => boolean; } type UpdaterStatus = "up-to-date" | "checking" | "downloading" | "ready" | "error" | "installing";