diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index ef82fc57f..0ff40cae6 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -1,4 +1,4 @@ -use tauri::Manager; +use tauri::{Manager, RunEvent, WindowEvent}; mod backend; mod codex; @@ -42,6 +42,16 @@ pub fn run() { .manage(menu::MenuItemRegistry::::default()) .menu(menu::build_menu) .on_menu_event(menu::handle_menu_event) + .on_window_event(|window, event| { + if window.label() != "main" { + return; + } + #[cfg(target_os = "macos")] + if let WindowEvent::CloseRequested { api, .. } = event { + api.prevent_close(); + let _ = window.hide(); + } + }) .setup(|app| { let state = state::AppState::load(&app.handle()); app.manage(state); @@ -56,7 +66,7 @@ pub fn run() { #[cfg(desktop)] let builder = builder.plugin(tauri_plugin_window_state::Builder::default().build()); - builder + let app = builder .plugin(tauri_plugin_liquid_glass::init()) .plugin(tauri_plugin_opener::init()) .plugin(tauri_plugin_dialog::init()) @@ -143,6 +153,15 @@ pub fn run() { dictation::dictation_cancel, local_usage::local_usage_snapshot ]) - .run(tauri::generate_context!()) + .build(tauri::generate_context!()) .expect("error while running tauri application"); + + app.run(|app_handle, event| { + if let RunEvent::Reopen { .. } = event { + if let Some(window) = app_handle.get_webview_window("main") { + let _ = window.show(); + let _ = window.set_focus(); + } + } + }); } diff --git a/src-tauri/src/menu.rs b/src-tauri/src/menu.rs index 770890c6e..16e868fcf 100644 --- a/src-tauri/src/menu.rs +++ b/src-tauri/src/menu.rs @@ -395,6 +395,8 @@ pub(crate) fn handle_menu_event( fn emit_menu_event(app: &tauri::AppHandle, event: &str) { if let Some(window) = app.get_webview_window("main") { + let _ = window.show(); + let _ = window.set_focus(); let _ = window.emit(event, ()); } else { let _ = app.emit(event, ()); diff --git a/src-tauri/src/state.rs b/src-tauri/src/state.rs index eb82133d9..ffad46019 100644 --- a/src-tauri/src/state.rs +++ b/src-tauri/src/state.rs @@ -1,7 +1,6 @@ use std::collections::HashMap; use std::path::PathBuf; use std::sync::Arc; - use tauri::{AppHandle, Manager}; use tokio::sync::Mutex; diff --git a/src/App.tsx b/src/App.tsx index b7ec61fcb..6b215b151 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1379,7 +1379,6 @@ function MainApp() { }); useMenuAcceleratorController({ appSettings, onDebug: addDebugEntry }); - const isDefaultScale = Math.abs(uiScale - 1) < 0.001; const dropOverlayActive = isWorkspaceDropActive; const dropOverlayText = "Drop Project Here"; diff --git a/src/features/settings/components/SettingsView.test.tsx b/src/features/settings/components/SettingsView.test.tsx index bc01bfa2b..5b102b37d 100644 --- a/src/features/settings/components/SettingsView.test.tsx +++ b/src/features/settings/components/SettingsView.test.tsx @@ -162,7 +162,13 @@ describe("SettingsView Display", () => { if (!row) { throw new Error("Expected reduce transparency row"); } - fireEvent.click(within(row).getByRole("button")); + const toggle = row.querySelector( + "button.settings-toggle", + ) as HTMLButtonElement | null; + if (!toggle) { + throw new Error("Expected reduce transparency toggle"); + } + fireEvent.click(toggle); expect(onToggleTransparency).toHaveBeenCalledWith(true); });