修复: 审批浮窗无法关闭(托盘拦截误伤+兜底失效)

根因=关窗拦截全局生效误伤浮窗等JS窗口,close被吞成隐藏僵尸永不销毁,
且close() resolve≠销毁使前端兜底被误取消;改仅主窗口拦截,关窗兜底
按tauri://destroyed判定超时强制销毁,主窗口closePopup同步加固
This commit is contained in:
lxy
2026-09-28 23:22:55 +08:00
parent 4840f7ebc6
commit f57e25a277
3 changed files with 61 additions and 33 deletions
+6 -1
View File
@@ -510,9 +510,14 @@ pub fn run() {
// Phase3: 内嵌 HTTP MCP server 状态查询
crate::mcp::mcp_get_status,
])
// Phase3: 关窗口不退出,隐藏到托盘常驻(托盘「退出」菜单才真正结束进程)
// 关主窗口不退出,隐藏到托盘常驻(托盘「退出」菜单才真正结束进程)。
// 仅拦 main:approval-popup / ai-detached / fe-detached 等 JS 创建窗口必须放行
// 真正关闭,否则 close 被吞成隐藏僵尸窗,浮窗「正在关闭…」卡死、新审批推给不可见窗口。
.on_window_event(|window, event| {
if let tauri::WindowEvent::CloseRequested { api, .. } = event {
if window.label() != "main" {
return; // 非主窗口放行真正销毁
}
api.prevent_close(); // 拦截真正关闭
let _ = window.hide(); // 隐藏到托盘
}