描述 Bug
在 macOS 上,只要打开过「偏好设置」窗口,然后切换到另一个桌面(Space),再切回偏好设置所在的桌面,系统顶部的菜单栏/状态栏(Apple 菜单、时间、电池等)会整个消失,只剩空白。点击其他任意应用后,状态栏才会重新出现。
重现步骤
- 打开 BongoCat 偏好设置窗口(托盘菜单 → 设置)
- 切到另一个桌面
- 再切回偏好设置所在的桌面
- 观察到系统顶栏(menu bar)消失,点击其他应用才恢复
预期行为
切换桌面往返后,系统顶栏应始终正常显示,不受 BongoCat 偏好设置窗口影响。
软件信息
附加信息
初步定位:
- BongoCat 以 ActivationPolicy::Accessory 运行(无 Dock 图标、无自己的菜单栏),主窗口被转换为 nonactivating_panel 的 NSPanel,因此不会成为前台 key 窗口。
- 但偏好设置窗口是普通可获焦窗口。当它位于某个桌面时,macOS 在切回该 Space 时会尝试为它所在的 app 绘制菜单栏;由于该 app 是 accessory 且没有菜单栏,WindowServer 画不出来,导致整条状态栏不显示,直到点击其他应用强制重绘。
- 这是 accessory/LSUIElement 应用 + 普通设置窗口 + Space 切换的系统级问题(Apple 反馈 FB13544993 同源),DockDoor、remi 等应用遇到过类似现象。
可参考的修复方向(DockDoor/remi 已采用的方案):
- 设置窗口显示时,将 activation policy 临时切换为 .regular(设置窗口打开期间有 Dock 图标和正常菜单栏),窗口关闭后切回 .accessory。
- 在 BongoCat 中即:偏好窗口 show()/获得焦点 → set_activation_policy(Regular),偏好窗口关闭 → set_activation_policy(Accessory)。
相关参考:
- https://github.com/ejbills/DockDoor (NSApp.setActivationPolicy(.regular) / .accessory 切换)
- Apple 反馈:FB13544993 "Menu bar should not hide when a LSUIElement/accessory app is activated"
描述 Bug
在 macOS 上,只要打开过「偏好设置」窗口,然后切换到另一个桌面(Space),再切回偏好设置所在的桌面,系统顶部的菜单栏/状态栏(Apple 菜单、时间、电池等)会整个消失,只剩空白。点击其他任意应用后,状态栏才会重新出现。
重现步骤
预期行为
切换桌面往返后,系统顶栏应始终正常显示,不受 BongoCat 偏好设置窗口影响。
软件信息
附加信息
初步定位:
可参考的修复方向(DockDoor/remi 已采用的方案):
相关参考: