dzc
a7cc69bb92
fix(mac): 点红点直接退出——真凶是模板 AppDelegate 的关窗即退开关
三层排查实锤(lldb 运行时取证):
1. 红点按钮真实 action 是 AppKit 私有 selector `_close:`(并非文档所称
performClose:),内部直接关窗,绕过 performClose/close 重写与 delegate 拦截
2. flutter create 模板的 AppDelegate 自带
applicationShouldTerminateAfterLastWindowClosed 返回 true——最后一个窗口
关闭即 NSApp.terminate,这是"点红点进程退出、托盘随进程消失"的根因
3. 修复:改为返回 false。窗口即便被真关闭,进程/HTTP 服务/托盘也保持运行,
托盘点击 makeKeyAndOrderFront 恢复窗口(releasedWhenClosed=NO,窗口对象在)
验证(红点 action 原样重放 `_close:`):窗口关闭后进程存活、服务在线、
托盘状态栏窗口存在、makeKeyAndOrderFront 可恢复窗口。
保留 MainFlutterWindow 的 performClose/close 重写(Cmd+W 等正常路径只隐藏
不关闭,体验更好)。
2026-09-21 13:34:46 +08:00
..
2026-09-21 13:16:23 +08:00
2026-09-21 13:34:46 +08:00
2026-09-21 13:16:23 +08:00
2026-09-21 13:16:23 +08:00
2026-09-21 12:03:27 +08:00
2026-09-21 12:03:27 +08:00
2026-09-21 13:16:23 +08:00
2026-09-21 13:16:23 +08:00