From a67e8388a9cabdf206996657d71f754f84bbfb04 Mon Sep 17 00:00:00 2001 From: wonfen Date: Tue, 17 Jun 2025 12:59:05 +0800 Subject: [PATCH] fix: restore window from tray when status bar icon is present --- src-tauri/src/core/tray/mod.rs | 5 ++++- src-tauri/src/utils/resolve.rs | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src-tauri/src/core/tray/mod.rs b/src-tauri/src/core/tray/mod.rs index e5431ef4..14db740d 100644 --- a/src-tauri/src/core/tray/mod.rs +++ b/src-tauri/src/core/tray/mod.rs @@ -653,10 +653,13 @@ impl Tray { "system_proxy" => feat::toggle_system_proxy(), "tun_mode" => feat::toggle_tun_mode(None), "main_window" => { + log::info!(target: "app", "Tray点击事件: 显示主窗口"); if crate::module::lightweight::is_in_lightweight_mode() { + log::info!(target: "app", "当前在轻量模式,正在退出轻量模式"); crate::module::lightweight::exit_lightweight_mode(); } - let _ = resolve::create_window(true); + let result = resolve::create_window(true); + log::info!(target: "app", "窗口创建/显示结果: {}", result); } _ => {} } diff --git a/src-tauri/src/utils/resolve.rs b/src-tauri/src/utils/resolve.rs index 5af3b56a..8e555858 100644 --- a/src-tauri/src/utils/resolve.rs +++ b/src-tauri/src/utils/resolve.rs @@ -307,8 +307,17 @@ pub fn create_window(is_show: bool) -> bool { if let Some(window) = app_handle.get_webview_window("main") { logging!(info, Type::Window, true, "主窗口已存在,将显示现有窗口"); if is_show { + if window.is_minimized().unwrap_or(false) { + logging!(info, Type::Window, true, "窗口已最小化,正在取消最小化"); + let _ = window.unminimize(); + } let _ = window.show(); let _ = window.set_focus(); + + #[cfg(target_os = "macos")] + { + AppHandleManager::global().set_activation_policy_regular(); + } } return true; }