(
state: State<'_, AppState>,
startup_trace: State<'_, DesktopStartupTrace>,
app: tauri::AppHandle,
request: StartupWindowControlRequest,
)
| 466 | /// Minimal startup-window controls used by the static pre-React splash. |
| 467 | #[tauri::command] |
| 468 | pub async fn startup_window_control( |
| 469 | state: State<'_, AppState>, |
| 470 | startup_trace: State<'_, DesktopStartupTrace>, |
| 471 | app: tauri::AppHandle, |
| 472 | request: StartupWindowControlRequest, |
| 473 | ) -> Result<(), String> { |
| 474 | let Some(window) = app.get_webview_window("main") else { |
| 475 | return Err("Main window not found".to_string()); |
| 476 | }; |
| 477 | |
| 478 | match request.action { |
| 479 | StartupWindowControlAction::Minimize => { |
| 480 | window.minimize().map_err(|error| { |
| 481 | format!("Failed to minimize main window during startup: {}", error) |
| 482 | })?; |
| 483 | } |
| 484 | StartupWindowControlAction::ToggleMaximize => { |
| 485 | let is_maximized = window.is_maximized().unwrap_or(false); |
| 486 | if is_maximized { |
| 487 | window.unmaximize().map_err(|error| { |
| 488 | format!("Failed to restore main window during startup: {}", error) |
| 489 | })?; |
| 490 | } else { |
| 491 | window.maximize().map_err(|error| { |
| 492 | format!("Failed to maximize main window during startup: {}", error) |
| 493 | })?; |
| 494 | } |
| 495 | } |
| 496 | StartupWindowControlAction::Close => { |
| 497 | let behavior = state |
| 498 | .config_service |
| 499 | .get_config::<String>(Some("app.close_button_behavior")) |
| 500 | .await |
| 501 | .unwrap_or_else(|_| "minimize_to_tray".to_string()); |
| 502 | |
| 503 | if behavior == "quit" { |
| 504 | log::info!("Quit requested from startup window control"); |
| 505 | crate::crash_diagnostics::mark_clean_shutdown("startup_window_control"); |
| 506 | crate::perform_process_exit_cleanup(); |
| 507 | app.exit(0); |
| 508 | } else { |
| 509 | if let Err(error) = crate::tray::setup_tray(&app, &startup_trace) { |
| 510 | log::warn!("Failed to initialize tray before startup close: {}", error); |
| 511 | } |
| 512 | window.hide().map_err(|error| { |
| 513 | format!("Failed to hide main window during startup close: {}", error) |
| 514 | })?; |
| 515 | log::info!("Main window hidden from startup window control"); |
| 516 | } |
| 517 | } |
| 518 | } |
| 519 | |
| 520 | Ok(()) |
| 521 | } |
| 522 | |
| 523 | /// Toggle OS-level fullscreen for the Desktop main window. |
| 524 | /// |
nothing calls this directly
no test coverage detected