From d4b49d75a6d477933efee0a8fde2d831614c2d68 Mon Sep 17 00:00:00 2001 From: Lucas Nogueira Date: Thu, 5 May 2022 20:57:32 -0300 Subject: [PATCH] fix(examples): parent window example freezing and crashing, closes #4064 --- examples/parent-window/index.html | 9 +++++---- examples/parent-window/main.rs | 17 ++++++----------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/examples/parent-window/index.html b/examples/parent-window/index.html index 5ad743217..bf826e90e 100644 --- a/examples/parent-window/index.html +++ b/examples/parent-window/index.html @@ -39,15 +39,16 @@ }) var createWindowButton = document.createElement('button') + var windowId = Math.random().toString().replace('.', '') var windowNumber = 1 - createWindowButton.innerHTML = 'Create child window '+windowNumber + createWindowButton.innerHTML = 'Create child window ' + windowNumber createWindowButton.addEventListener('click', function () { - runCommand('create_child_window', { id: 'child-'+windowNumber }) + runCommand('create_child_window', { id: `child-${windowId}-${windowNumber}` }) windowNumber += 1 - createWindowButton.innerHTML = 'Create child window '+windowNumber + createWindowButton.innerHTML = 'Create child window ' + windowNumber }) container.appendChild(createWindowButton) - + \ No newline at end of file diff --git a/examples/parent-window/main.rs b/examples/parent-window/main.rs index 7dbf1a446..ed64fdcf5 100644 --- a/examples/parent-window/main.rs +++ b/examples/parent-window/main.rs @@ -7,23 +7,18 @@ windows_subsystem = "windows" )] -#[cfg(any(windows, target_os = "macos"))] -use tauri::Manager; -use tauri::{command, window::WindowBuilder, AppHandle, WindowUrl}; +use tauri::{command, window::WindowBuilder, Window, WindowUrl}; #[command] -fn create_child_window(id: String, app: AppHandle) { - #[cfg(any(windows, target_os = "macos"))] - let main = app.get_window("main").unwrap(); - - let child = WindowBuilder::new(&app, id, WindowUrl::default()) +async fn create_child_window(id: String, window: Window) { + let child = WindowBuilder::new(&window, id, WindowUrl::default()) .title("Child") .inner_size(400.0, 300.0); #[cfg(target_os = "macos")] - let child = child.parent_window(main.ns_window().unwrap()); + let child = child.parent_window(window.ns_window().unwrap()); #[cfg(windows)] - let child = child.parent_window(main.hwnd().unwrap()); + let child = child.parent_window(window.hwnd().unwrap()); child.build().unwrap(); } @@ -43,7 +38,7 @@ fn main() { .inner_size(600.0, 400.0) .build()?; Ok(()) - }) // safe to unwrap: window label is valid + }) .run(tauri::generate_context!( "../../examples/parent-window/tauri.conf.json" ))