This commit establishes a comprehensive native menu system for the Tauri application, bringing it to parity with the Electron implementation and enabling full keyboard shortcut support. ## Key Features Added **Native Menu System:** - Complete menu bar with File, Edit, View, and Window menus - Platform-specific adaptations (macOS app menu, Windows/Linux quit behavior) - Full menu event handling system with proper window management **Keyboard Accelerators:** - CmdOrCtrl+N for New Instance creation - Standard Edit menu shortcuts (Undo, Redo, Cut, Copy, Paste, Select All) - View menu shortcuts (Reload, Force Reload, Toggle DevTools, Fullscreen) - Built-in zoom hotkeys enabled via zoomHotkeysEnabled **Enhanced Capabilities:** - Added core:menu:default permission for menu management - Added core:webview:allow-set-webview-zoom for zoom functionality - Proper event communication between Tauri backend and frontend **Frontend Integration:** - Tauri event listener for menu:newInstance events - Proper cleanup and error handling for event subscriptions - Runtime environment detection for Tauri-specific behavior ## Technical Changes **Backend (Rust):** - Replaced empty menu stub with full SubmenuBuilder implementation - Added comprehensive menu event handling with window operations - Implemented MenuItem::with_id for accelerator support - Added platform-specific menu construction logic **Frontend (TypeScript):** - Added Tauri event listener integration in main App component - Proper lifecycle management with onMount/onCleanup - Runtime environment detection for conditional Tauri behavior **Configuration:** - Enabled zoomHotkeysEnabled in tauri.conf.json for built-in zoom support - Updated capabilities to include necessary menu and webview permissions This implementation provides a native, platform-consistent user experience with full keyboard shortcut support, matching the functionality users expect from desktop applications.
17 lines
479 B
JSON
17 lines
479 B
JSON
{
|
|
"$schema": "https://schema.tauri.app/capabilities.json",
|
|
"identifier": "main-window-native-dialogs",
|
|
"description": "Grant the main window access to required core features and native dialog commands.",
|
|
"remote": {
|
|
"urls": ["http://127.0.0.1:*", "http://localhost:*"]
|
|
},
|
|
"windows": ["main"],
|
|
"permissions": [
|
|
"core:default",
|
|
"core:menu:default",
|
|
"dialog:allow-open",
|
|
"opener:allow-default-urls",
|
|
"core:webview:allow-set-webview-zoom"
|
|
]
|
|
}
|