From 815a865265928051d0621114efe17041bdcb976a Mon Sep 17 00:00:00 2001 From: Tunglies <77394545+Tunglies@users.noreply.github.com> Date: Wed, 22 Oct 2025 18:49:28 +0800 Subject: [PATCH] perf(tray): ignore unnecessary tray icon events to reduce refreshes --- src-tauri/Cargo.toml | 2 +- src-tauri/src/core/tray/mod.rs | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index cedc9f625..8baa9ea97 100755 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -222,4 +222,4 @@ needless_raw_string_hashes = "deny" # Too many in existing code #nursery = { level = "allow", priority = -1 } #restriction = { level = "allow", priority = -1 } -or_fun_call = "deny" \ No newline at end of file +or_fun_call = "deny" diff --git a/src-tauri/src/core/tray/mod.rs b/src-tauri/src/core/tray/mod.rs index a195ae392..a776a9f5e 100644 --- a/src-tauri/src/core/tray/mod.rs +++ b/src-tauri/src/core/tray/mod.rs @@ -537,6 +537,16 @@ impl Tray { let tray = builder.build(app_handle)?; tray.on_tray_icon_event(|_app_handle, event| { + // 忽略移动、进入和离开等无需处理的事件,避免不必要的刷新 + match event { + TrayIconEvent::Move { .. } + | TrayIconEvent::Enter { .. } + | TrayIconEvent::Leave { .. } => { + return; + } + _ => {} + } + AsyncHandler::spawn(|| async move { let tray_event = { Config::verge().await.latest_ref().tray_event.clone() }; let tray_event: String = tray_event.unwrap_or_else(|| "main_window".into());