11use log:: info;
2+ #[ allow( unused_imports) ]
3+ use tauri:: Manager ;
24use tauri:: {
35 AppHandle , Emitter ,
46 menu:: { MenuItemBuilder , Submenu , SubmenuBuilder } ,
@@ -16,6 +18,18 @@ pub fn create_app_submenu(app: &AppHandle) -> tauri::Result<Submenu<tauri::Wry>>
1618 . accelerator ( "CmdOrCtrl+," )
1719 . build ( app) ?;
1820
21+ #[ cfg( target_os = "macos" ) ]
22+ let hide_item = MenuItemBuilder :: new ( "隐藏 CodeForge" )
23+ . id ( "hide" )
24+ . accelerator ( "CmdOrCtrl+H" )
25+ . build ( app) ?;
26+
27+ #[ cfg( not( target_os = "macos" ) ) ]
28+ let hide_item = MenuItemBuilder :: new ( "最小化 CodeForge" )
29+ . id ( "hide" )
30+ . accelerator ( "CmdOrCtrl+M" )
31+ . build ( app) ?;
32+
1933 let restart_item = MenuItemBuilder :: new ( "重启 CodeForge" )
2034 . id ( "restart" )
2135 . accelerator ( "CmdOrCtrl+R" )
@@ -33,6 +47,8 @@ pub fn create_app_submenu(app: &AppHandle) -> tauri::Result<Submenu<tauri::Wry>>
3347 . separator ( )
3448 . item ( & settings_item)
3549 . separator ( )
50+ . item ( & hide_item)
51+ . separator ( )
3652 . item ( & restart_item)
3753 . item ( & quit_item)
3854 . build ( ) ?;
@@ -51,6 +67,28 @@ pub fn handle_app_menu_event(app: &AppHandle, event_id: &str) {
5167 "settings" => {
5268 let _event = app. emit ( "show-settings" , ( ) ) ;
5369 }
70+ "hide" => {
71+ #[ cfg( target_os = "macos" ) ]
72+ {
73+ info ! ( "隐藏应用 CodeForge" ) ;
74+ let _ = app. hide ( ) ;
75+ }
76+
77+ #[ cfg( not( target_os = "macos" ) ) ]
78+ {
79+ info ! ( "最小化应用 CodeForge" ) ;
80+ // 获取主窗口并最小化
81+ if let Some ( window) = app. get_webview_window ( "main" ) {
82+ let _ = window. minimize ( ) ;
83+ } else {
84+ // 如果找不到 main 窗口,尝试获取第一个可用窗口
85+ let windows = app. webview_windows ( ) ;
86+ if let Some ( ( _, window) ) = windows. iter ( ) . next ( ) {
87+ let _ = window. minimize ( ) ;
88+ }
89+ }
90+ }
91+ }
5492 "restart" => {
5593 info ! ( "CodeForge 应用重启" ) ;
5694 app. restart ( ) ;
0 commit comments