Skip to content

fix(tray): 拆分 ExitRequested/Exit 退出路径并为 macOS 补图标注销延迟#16

Merged
maguowei merged 1 commit into
mainfrom
dev
Jul 5, 2026
Merged

fix(tray): 拆分 ExitRequested/Exit 退出路径并为 macOS 补图标注销延迟#16
maguowei merged 1 commit into
mainfrom
dev

Conversation

@maguowei

@maguowei maguowei commented Jul 5, 2026

Copy link
Copy Markdown
Owner

摘要

修复 macOS 上应用退出后系统托盘图标被 FrontBoard 判定为 after-life.interrupted、经 MenuBarAgent 复活,表现为「退出后自动重开」的问题。

原实现只在 RunEvent::Exit 统一移除托盘图标,无法可靠覆盖所有退出路径。本次将移除时机拆分为两处:

  • RunEvent::ExitRequested:覆盖托盘 Quit(app.exit)与自更新 relaunch(request_restart)两条路径。此刻事件循环仍会至少再跑一轮,足够让状态栏图标的跨进程注销真正落地。
  • RunEvent::Exit:Cmd+Q(原生 [NSApp terminate:],不触发 ExitRequested)唯一能拿到的收尾时机,作为兜底;对已移除的托盘重复调用为无副作用空操作。额外为 macOS 补充 TRAY_EXIT_GRACE_MS(150ms)延迟,换取跨进程注销生效的经验窗口(数值来自实测,非文档承诺)。

改动文件

  • src-tauri/src/lib.rs:拆分 ExitRequested / Exit 处理,新增 macOS 退出延迟常量 TRAY_EXIT_GRACE_MS
  • src-tauri/src/tray.rs:同步更新 remove_trays 文档注释,说明双路径调用约定

验证

  • macOS 真机分别通过 托盘 QuitCmd+Q自更新 relaunch 三条路径退出,确认状态栏图标不再「退出后自动重开」

该改动为 macOS 平台特定的托盘退出行为修复,需在 macOS 真机手动验证上述三条退出路径;本次未包含自动化测试,依赖 CI 完成编译与 lint 权威检查。

🤖 Generated with Claude Code

@maguowei maguowei merged commit 283baf0 into main Jul 5, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant