From 6b802b0ad406fdc53587d0559ed6ec9c67d2344f Mon Sep 17 00:00:00 2001 From: NimBold Date: Thu, 27 Aug 2026 18:43:46 +0330 Subject: [PATCH] test(startup): isolate persisted geometry regression (#37) - Issue #37: remove only the persisted main-window startup geometry path and restore the pre-1.4.0 window dimensions for an A/B package run.\n- Keep the application startup workaround disabled so the test isolates the 1.4.0 regression instead of masking it.\n\nRefs #37. --- src-tauri/src/lib.rs | 83 ------------------------------- src-tauri/tauri.conf.json | 2 +- src-tauri/tauri.linux.conf.json | 2 +- src-tauri/tauri.macos.conf.json | 2 +- src-tauri/tauri.windows.conf.json | 2 +- 5 files changed, 4 insertions(+), 87 deletions(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 9edbd8f..a1dbb65 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -3659,7 +3659,6 @@ pub struct AppState { #[derive(Default)] struct MainWindowRestoreState { requested: AtomicBool, - startup_complete: AtomicBool, } #[cfg(target_os = "macos")] @@ -3956,25 +3955,6 @@ where } pub(crate) fn restore_main_window(app_handle: &tauri::AppHandle) { - let startup_complete = app_handle - .try_state::() - .is_none_or(|state| state.startup_complete.load(Ordering::Acquire)); - if !startup_complete { - if let Some(state) = app_handle.try_state::() { - // The first window can be requested by a single-instance callback - // or an opened .torrent path while the native host is still being - // constructed. Do not touch the HWND until RunEvent::Ready. - state.requested.store(true, Ordering::Release); - // Ready may have won the transition between the first load and - // the request store. Re-check before returning so that request is - // serviced by this call instead of being left pending forever. - if !state.startup_complete.load(Ordering::Acquire) { - return; - } - } else { - return; - } - } let Some(window) = app_handle.get_webview_window("main") else { if let Some(state) = app_handle.try_state::() { state.requested.store(true, Ordering::Release); @@ -3987,24 +3967,6 @@ pub(crate) fn restore_main_window(app_handle: &tauri::AppHandle) { let _ = window.set_focus(); } -fn mark_main_window_startup_complete(app_handle: &tauri::AppHandle) { - if let Some(state) = app_handle.try_state::() { - state.startup_complete.store(true, Ordering::Release); - } -} - -#[cfg(target_os = "windows")] -fn reveal_main_window(app_handle: &tauri::AppHandle) { - if let Some(window) = app_handle.get_webview_window("main") { - if let Err(error) = window.set_focusable(true) { - log::warn!("Could not make the main window focusable: {error}"); - } - if let Err(error) = window.show() { - eprintln!("Failed to reveal the main window: {error}"); - } - } -} - fn restore_pending_main_window(app_handle: &tauri::AppHandle) { if app_handle .try_state::() @@ -18523,44 +18485,6 @@ pub fn run() { // Build the window only after all command state is registered. This // prevents the frontend from racing startup and invoking IPC before // the database and portable storage layout are available. - let startup_size = persisted_settings - .as_ref() - .and_then(|settings| settings.main_window_size.as_ref()) - .and_then(|size| crate::window_geometry::normalize_main_window_size(Some(size))) - .unwrap_or_else(crate::window_geometry::default_main_window_size); - let startup_size = app - .primary_monitor() - .ok() - .flatten() - .and_then(|monitor| { - let scale_factor = monitor.scale_factor(); - if !scale_factor.is_finite() || scale_factor <= 0.0 { - return None; - } - let work_area = monitor.work_area().size; - let logical_width = (work_area.width as f64 / scale_factor).round() as u32; - let logical_height = (work_area.height as f64 / scale_factor).round() as u32; - Some(crate::window_geometry::clamp_main_window_size( - startup_size.clone(), - logical_width, - logical_height, - )) - }) - .unwrap_or(startup_size); - main_window_builder = main_window_builder - .inner_size(startup_size.width as f64, startup_size.height as f64) - .prevent_overflow(); - #[cfg(target_os = "windows")] - { - // Wry installs its parent WM_SETFOCUS handler while WebView2 - // is still being initialized. Keep the host hidden and - // non-activatable until RunEvent::Ready so Windows cannot - // re-enter that handler during native construction. - main_window_builder = main_window_builder - .visible(false) - .focused(false) - .focusable(false); - } main_window_builder .build() .map_err(|error| format!("failed to create main window: {error}"))?; @@ -19896,13 +19820,6 @@ pub fn run() { .build(tauri::generate_context!()) .expect("error while building tauri application") .run(|app_handle, event| match event { - tauri::RunEvent::Ready => { - mark_main_window_startup_complete(app_handle); - #[cfg(target_os = "windows")] - reveal_main_window(app_handle); - #[cfg(not(target_os = "windows"))] - restore_pending_main_window(app_handle); - } #[cfg(target_os = "macos")] tauri::RunEvent::Opened { urls } => { let paths = collect_opened_torrent_paths( diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 4246703..c0aad83 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -16,7 +16,7 @@ "create": false, "title": "Firelink", "width": 1280, - "height": 800, + "height": 760, "minWidth": 960, "minHeight": 640, "transparent": false diff --git a/src-tauri/tauri.linux.conf.json b/src-tauri/tauri.linux.conf.json index 6e72015..f56a439 100644 --- a/src-tauri/tauri.linux.conf.json +++ b/src-tauri/tauri.linux.conf.json @@ -5,7 +5,7 @@ "create": false, "title": "Firelink", "width": 1280, - "height": 800, + "height": 760, "minWidth": 960, "minHeight": 640, "transparent": false, diff --git a/src-tauri/tauri.macos.conf.json b/src-tauri/tauri.macos.conf.json index 08616c6..13081c2 100644 --- a/src-tauri/tauri.macos.conf.json +++ b/src-tauri/tauri.macos.conf.json @@ -5,7 +5,7 @@ "create": false, "title": "Firelink", "width": 1280, - "height": 800, + "height": 760, "minWidth": 960, "minHeight": 640, "transparent": true, diff --git a/src-tauri/tauri.windows.conf.json b/src-tauri/tauri.windows.conf.json index ccfdc66..652302c 100644 --- a/src-tauri/tauri.windows.conf.json +++ b/src-tauri/tauri.windows.conf.json @@ -5,7 +5,7 @@ "create": false, "title": "Firelink", "width": 1280, - "height": 800, + "height": 760, "minWidth": 960, "minHeight": 640, "transparent": true,