Compare commits

..

1 Commits

Author SHA1 Message Date
NimBold 1ca87fd6a4 test(startup): validate Windows baseline (#37)
- Issue #37: restore the pre-workaround startup path for an extended packaged smoke comparison.\n- Keep the strengthened stability check while removing only the attempted Windows activation workaround.\n\nRefs #37.
2026-08-27 18:18:32 +03:30
7 changed files with 44 additions and 16 deletions
+12 -10
View File
@@ -308,16 +308,18 @@ async fn download_handler(
None => return Err(StatusCode::BAD_REQUEST),
};
let is_hidden = state
.app_handle
.get_webview_window("main")
.and_then(|window| window.is_visible().ok())
.is_some_and(|is_visible| !is_visible);
crate::restore_main_window(&state.app_handle);
if is_hidden {
// Sleep briefly to let the webview wake up from macOS App Nap
// otherwise the IPC event emitted immediately after is dropped.
tokio::time::sleep(std::time::Duration::from_millis(300)).await;
if let Some(window) = state.app_handle.get_webview_window("main") {
let is_visible = window.is_visible().unwrap_or(true);
if !is_visible {
let _ = window.show();
let _ = window.set_focus();
// Sleep briefly to let the webview wake up from macOS App Nap
// otherwise the IPC event emitted immediately after is dropped.
tokio::time::sleep(std::time::Duration::from_millis(300)).await;
} else {
let _ = window.show();
let _ = window.set_focus();
}
}
if !wait_for_frontend(&state.frontend_ready).await {
+28 -1
View File
@@ -3954,7 +3954,7 @@ where
.collect()
}
pub(crate) fn restore_main_window(app_handle: &tauri::AppHandle) {
fn restore_main_window(app_handle: &tauri::AppHandle) {
let Some(window) = app_handle.get_webview_window("main") else {
if let Some(state) = app_handle.try_state::<MainWindowRestoreState>() {
state.requested.store(true, Ordering::Release);
@@ -18485,6 +18485,33 @@ 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();
main_window_builder
.build()
.map_err(|error| format!("failed to create main window: {error}"))?;
-1
View File
@@ -439,7 +439,6 @@ pub fn open_download_properties_window(
.visible(false)
// A hidden WebView2 must not request focus during construction. The
// native reveal path focuses it after the window is visible.
.focused(false)
.transparent(true);
#[cfg(any(target_os = "windows", target_os = "macos", target_os = "linux"))]
let builder = builder.decorations(false);
+1 -1
View File
@@ -16,7 +16,7 @@
"create": false,
"title": "Firelink",
"width": 1280,
"height": 760,
"height": 800,
"minWidth": 960,
"minHeight": 640,
"transparent": false
+1 -1
View File
@@ -5,7 +5,7 @@
"create": false,
"title": "Firelink",
"width": 1280,
"height": 760,
"height": 800,
"minWidth": 960,
"minHeight": 640,
"transparent": false,
+1 -1
View File
@@ -5,7 +5,7 @@
"create": false,
"title": "Firelink",
"width": 1280,
"height": 760,
"height": 800,
"minWidth": 960,
"minHeight": 640,
"transparent": true,
+1 -1
View File
@@ -5,7 +5,7 @@
"create": false,
"title": "Firelink",
"width": 1280,
"height": 760,
"height": 800,
"minWidth": 960,
"minHeight": 640,
"transparent": true,