fix: toggle_window_visibility with focus check (#1888)

* refactor: better logics for toggle_window_visibility
This commit is contained in:
Chenx Dust
2026-02-11 16:50:36 +08:00
committed by GitHub
parent 85e9029577
commit 6475724d2e
+17 -14
View File
@@ -513,23 +513,26 @@ async fn get_log_dir_path(app: tauri::AppHandle) -> Result<String, String> {
#[cfg(not(target_os = "android"))] #[cfg(not(target_os = "android"))]
fn toggle_window_visibility(app: &tauri::AppHandle) { fn toggle_window_visibility(app: &tauri::AppHandle) {
if let Some(window) = app.get_webview_window("main") { if let Some(window) = app.get_webview_window("main") {
let visible = if window.is_visible().unwrap_or_default() { let visible = window.is_visible().unwrap_or_default();
if window.is_minimized().unwrap_or_default() { let minimized = window.is_minimized().unwrap_or_default();
let _ = window.unminimize(); let focused = window.is_focused().unwrap_or_default();
false
} else { let should_show = !visible || minimized || !focused;
true if should_show {
} if !visible {
} else {
let _ = window.show(); let _ = window.show();
false }
}; if minimized {
if visible { let _ = window.unminimize();
let _ = window.hide(); }
} else { if !focused {
let _ = window.set_focus(); let _ = window.set_focus();
} }
let _ = set_dock_visibility(app.clone(), !visible); let _ = set_dock_visibility(app.clone(), true);
} else {
let _ = window.hide();
let _ = set_dock_visibility(app.clone(), false);
}
} }
} }