diff --git a/.changes/return-error-on-window-creation-failed.md b/.changes/return-error-on-window-creation-failed.md new file mode 100644 index 000000000000..86e727d9bf46 --- /dev/null +++ b/.changes/return-error-on-window-creation-failed.md @@ -0,0 +1,5 @@ +--- +"tauri-runtime-wry": "patch:bug" +--- + +Return `tauri_runtime::Error::CreateWindow` instead of panic on window creation failed diff --git a/crates/tauri-cli/src/mobile/android/mod.rs b/crates/tauri-cli/src/mobile/android/mod.rs index 807c1d4c6654..ce753b2001b9 100644 --- a/crates/tauri-cli/src/mobile/android/mod.rs +++ b/crates/tauri-cli/src/mobile/android/mod.rs @@ -303,7 +303,7 @@ fn detect_target_ok<'a>(env: &Env) -> Option<&'a Target<'a>> { fn open_and_wait(config: &AndroidConfig, env: &Env) -> ! { log::info!("Opening Android Studio"); if let Err(e) = os::open_file_with("Android Studio", config.project_dir(), &env.base) { - log::error!("{}", e); + log::error!("{e}"); } loop { sleep(Duration::from_secs(24 * 60 * 60)); diff --git a/crates/tauri-cli/src/mobile/ios/mod.rs b/crates/tauri-cli/src/mobile/ios/mod.rs index 972c03ad9e87..93e2a8edec3e 100644 --- a/crates/tauri-cli/src/mobile/ios/mod.rs +++ b/crates/tauri-cli/src/mobile/ios/mod.rs @@ -389,7 +389,7 @@ fn detect_target_ok<'a>(env: &Env) -> Option<&'a Target<'a>> { fn open_and_wait(config: &AppleConfig, env: &Env) -> ! { log::info!("Opening Xcode"); if let Err(e) = os::open_file_with("Xcode", config.project_dir(), env) { - log::error!("{}", e); + log::error!("{e}"); } loop { sleep(Duration::from_secs(24 * 60 * 60)); diff --git a/crates/tauri-runtime-wry/src/lib.rs b/crates/tauri-runtime-wry/src/lib.rs index 2041102e0270..03e567fe6c42 100644 --- a/crates/tauri-runtime-wry/src/lib.rs +++ b/crates/tauri-runtime-wry/src/lib.rs @@ -3521,14 +3521,14 @@ fn handle_user_message( WebviewMessage::EvaluateScript(script, tx, span) => { let _span = span.entered(); if let Err(e) = webview.evaluate_script(&script) { - log::error!("{}", e); + log::error!("{e}"); } tx.send(()).unwrap(); } #[cfg(not(all(feature = "tracing", not(target_os = "android"))))] WebviewMessage::EvaluateScript(script) => { if let Err(e) = webview.evaluate_script(&script) { - log::error!("{}", e); + log::error!("{e}"); } } WebviewMessage::Navigate(url) => { @@ -3800,7 +3800,7 @@ fn handle_user_message( }); } Err(e) => { - log::error!("{}", e); + log::error!("{e}"); } } } @@ -3810,7 +3810,7 @@ fn handle_user_message( windows.0.borrow_mut().insert(window_id, webview); } Err(e) => { - log::error!("{}", e); + log::error!("{e}"); } }, Message::CreateRawWindow(window_id, handler, sender) => { @@ -4303,7 +4303,10 @@ fn create_window( } }; - let window = window_builder.inner.build(event_loop).unwrap(); + let window = window_builder + .inner + .build(event_loop) + .map_err(|_| Error::CreateWindow)?; #[cfg(feature = "tracing")] { diff --git a/crates/tauri-runtime/src/lib.rs b/crates/tauri-runtime/src/lib.rs index b3403c091031..9a62251a675e 100644 --- a/crates/tauri-runtime/src/lib.rs +++ b/crates/tauri-runtime/src/lib.rs @@ -126,6 +126,7 @@ pub enum Error { /// Failed to create webview. #[error("failed to create webview: {0}")] CreateWebview(Box), + // TODO: Make it take an error like `CreateWebview` in v3 /// Failed to create window. #[error("failed to create window")] CreateWindow,