fix(menu): make View → Zoom In accept the unshifted Ctrl+= key (#55)

The app relied on Electron's default application menu, whose View → Zoom In
binds only `CommandOrControl+Plus`. On US / most keyboard layouts "+" is the
shifted form of `=`, so pressing Ctrl with the unshifted +/= key sends Ctrl+=
and nothing happened — while Zoom Out (`Ctrl+-`, no Shift) worked, making zoom
feel half-broken.

Install an explicit application menu that mirrors Electron's default via
role-based submenus and hand-builds only View, where Zoom In also accepts
`Ctrl+=` and numpad `+` (hidden sibling items keep `Ctrl+Shift+=` and numpad
working). Strictly additive — no other menu behaviour changes.


Claude-Session: https://claude.ai/code/session_01QbexxfTt8q2tAn436MqGWF

Co-authored-by: ChrisBeWithYou <chris@rifflarr.local>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ChrisBeWithYou
2026-07-02 20:58:10 +02:00
committed by GitHub
co-authored by ChrisBeWithYou Claude Opus 4.8
parent c8415113c8
commit dcfa6be19d
2 changed files with 56 additions and 0 deletions
+5
View File
@@ -124,6 +124,7 @@ import { initPluginManager } from './plugin-manager';
import { initSoundfontManager, getDesktopConfig, setDesktopConfig } from './soundfont-manager';
import * as updateManager from './update-manager';
import type { UpdateChannel } from './update-manager';
import { installAppMenu } from './app-menu';
// Linux: enable Chromium's PipeWire capturer feature so getUserMedia can see
// audio devices on PipeWire-only distros (Fedora 36+, recent Ubuntu, Arch).
@@ -1026,6 +1027,10 @@ async function startup(): Promise<void> {
// Create the main window
createWindow(port);
// Install our application menu (replaces Electron's default so View →
// Zoom In also accepts the unshifted Ctrl+= key — see app-menu.ts).
installAppMenu();
// Register file picker IPC
ipcMain.handle('dialog:pickFile', async (_event, filters?: { name: string; extensions: string[] }[]) => {
if (!mainWindow) return null;