11use log:: info;
22use tauri:: {
3- AppHandle , Emitter ,
3+ AppHandle , Emitter , Manager ,
44 menu:: { MenuItemBuilder , Submenu , SubmenuBuilder } ,
55} ;
66
@@ -16,11 +16,18 @@ pub fn create_app_submenu(app: &AppHandle) -> tauri::Result<Submenu<tauri::Wry>>
1616 . accelerator ( "CmdOrCtrl+," )
1717 . build ( app) ?;
1818
19+ #[ cfg( target_os = "macos" ) ]
1920 let hide_item = MenuItemBuilder :: new ( "隐藏 CodeForge" )
2021 . id ( "hide" )
2122 . accelerator ( "CmdOrCtrl+H" )
2223 . build ( app) ?;
2324
25+ #[ cfg( not( target_os = "macos" ) ) ]
26+ let hide_item = MenuItemBuilder :: new ( "最小化 CodeForge" )
27+ . id ( "hide" )
28+ . accelerator ( "CmdOrCtrl+M" )
29+ . build ( app) ?;
30+
2431 let restart_item = MenuItemBuilder :: new ( "重启 CodeForge" )
2532 . id ( "restart" )
2633 . accelerator ( "CmdOrCtrl+R" )
@@ -59,8 +66,26 @@ pub fn handle_app_menu_event(app: &AppHandle, event_id: &str) {
5966 let _event = app. emit ( "show-settings" , ( ) ) ;
6067 }
6168 "hide" => {
62- info ! ( "隐藏应用 CodeForge" ) ;
63- let _ = app. hide ( ) ;
69+ #[ cfg( target_os = "macos" ) ]
70+ {
71+ info ! ( "隐藏应用 CodeForge" ) ;
72+ let _ = app. hide ( ) ;
73+ }
74+
75+ #[ cfg( not( target_os = "macos" ) ) ]
76+ {
77+ info ! ( "最小化应用 CodeForge" ) ;
78+ // 获取主窗口并最小化
79+ if let Some ( window) = app. get_webview_window ( "main" ) {
80+ let _ = window. minimize ( ) ;
81+ } else {
82+ // 如果找不到 main 窗口,尝试获取第一个可用窗口
83+ let windows = app. webview_windows ( ) ;
84+ if let Some ( ( _, window) ) = windows. iter ( ) . next ( ) {
85+ let _ = window. minimize ( ) ;
86+ }
87+ }
88+ }
6489 }
6590 "restart" => {
6691 info ! ( "CodeForge 应用重启" ) ;
0 commit comments