diff --git a/macos/Runner/MainFlutterWindow.swift b/macos/Runner/MainFlutterWindow.swift index cc3974e..2af11c4 100644 --- a/macos/Runner/MainFlutterWindow.swift +++ b/macos/Runner/MainFlutterWindow.swift @@ -13,4 +13,14 @@ class MainFlutterWindow: NSWindow { super.awakeFromNib() } + + /// 关窗不退出(双保险):红点按钮与 Cmd+W 的 target 都是 performClose:, + /// 这里直接 orderOut 隐藏窗口,进程/服务/托盘保持运行; + /// 真正退出只走托盘菜单 → window_manager.destroy() → NSApp.terminate(不经过此处)。 + /// window_manager 的 setPreventClose/delegate 拦截在 xib 窗口上挂载时机不可靠, + /// 不能作为关窗拦截的唯一依赖(实测会被绕过导致整窗关闭)。 + override func performClose(_ sender: Any?) { + print("MainFlutterWindow: performClose 拦截,窗口隐藏到托盘(服务继续运行)") + orderOut(sender) + } }