diff --git a/packages/app/src/shell/titlebar/titlebar.tsx b/packages/app/src/shell/titlebar/titlebar.tsx index 164208ddf91..84a273d88dc 100644 --- a/packages/app/src/shell/titlebar/titlebar.tsx +++ b/packages/app/src/shell/titlebar/titlebar.tsx @@ -298,7 +298,7 @@ export function Titlebar(props: { id: "home.toggle", title: language.t("home.title"), category: language.t("command.category.view"), - keybind: "mod+b", + keybind: windows() ? "alt+home" : "mod+b", hidden: true, onSelect: toggleHome, }, diff --git a/packages/app/src/shell/titlebar/windows-menu.test.ts b/packages/app/src/shell/titlebar/windows-menu.test.ts index d641657baf4..e0cbf025751 100644 --- a/packages/app/src/shell/titlebar/windows-menu.test.ts +++ b/packages/app/src/shell/titlebar/windows-menu.test.ts @@ -1,4 +1,5 @@ import { describe, expect, test } from "bun:test" +import { DESKTOP_MENU } from "@/shell/commands/desktop-menu" import { windowsMenuAccelerator } from "./windows-menu" describe("Windows app menu", () => { @@ -11,4 +12,16 @@ describe("Windows app menu", () => { test("ignores the accelerator without its modifiers", () => { expect(windowsMenuAccelerator(new KeyboardEvent("keydown", { key: "N" }))).toBeUndefined() }) + + test.each(["v", "c", "x", "a", "z", "y"])("leaves Ctrl+%s to the focused editor", (key) => { + expect(windowsMenuAccelerator(new KeyboardEvent("keydown", { key, ctrlKey: true }))).toBeUndefined() + }) + + test("preserves the paste menu action and shortcut label", () => { + expect( + DESKTOP_MENU.flatMap((menu) => menu.items ?? []).find( + (entry) => entry.type === "item" && entry.action === "edit.paste", + ), + ).toMatchObject({ action: "edit.paste", accelerator: { windows: "Ctrl+V" } }) + }) }) diff --git a/packages/app/src/shell/titlebar/windows-menu.tsx b/packages/app/src/shell/titlebar/windows-menu.tsx index 73ae13dd4fc..6e023880286 100644 --- a/packages/app/src/shell/titlebar/windows-menu.tsx +++ b/packages/app/src/shell/titlebar/windows-menu.tsx @@ -16,6 +16,8 @@ import { useLanguage } from "@/runtime/i18n/language" const accelerators = DESKTOP_MENU.flatMap((menu) => menu.items ?? []).flatMap((entry) => { if (entry.type === "separator" || !entry.action || !entry.accelerator?.windows) return [] + // Let the focused editor handle editing shortcuts without restoring stale menu focus. + if (entry.action.startsWith("edit.")) return [] return [{ action: entry.action, keybind: parseKeybind(entry.accelerator.windows) }] })