//! tray_menu.rs — 自定义系统托盘菜单(WebviewWindow 弹窗)
//!
//! 使用独立 WebviewWindow 替代原生菜单,实现与应用一致的视觉风格(Mica/Acrylic + 深色主题)。
//! - 右键托盘:显示自定义菜单窗口(在鼠标位置弹出)
//! - 左键托盘:显示主窗口
//! - 菜单窗口失焦:自动隐藏
//!
//! 前端通过监听 `tray-menu-show` 事件获取菜单状态并渲染,
//! 点击菜单项时调用 `tray_menu_action` 命令执行对应操作。
use serde::Serialize;
use std::sync::Mutex;
use std::time::{Duration, Instant};
use tauri::{
AppHandle, Emitter, Manager, WebviewUrl, WebviewWindowBuilder,
tray::{MouseButton, TrayIconBuilder, TrayIconEvent},
window::{Effect, EffectsBuilder},
};
/// 记录窗口最后显示时间,用于失焦防抖(避免显示瞬间因焦点未稳定而被立即隐藏)
static LAST_SHOW_TIME: Mutex