main.rs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Copyright 2019-2023 Tauri Programme within The Commons Conservancy
  2. // SPDX-License-Identifier: Apache-2.0
  3. // SPDX-License-Identifier: MIT
  4. #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
  5. use tauri::{
  6. command,
  7. window::{PageLoadEvent, WindowBuilder},
  8. Window, WindowUrl,
  9. };
  10. #[command]
  11. async fn create_child_window(id: String, window: Window) {
  12. let child = WindowBuilder::new(&window, id, WindowUrl::default())
  13. .title("Child")
  14. .inner_size(400.0, 300.0);
  15. #[cfg(target_os = "macos")]
  16. let child = child.parent_window(window.ns_window().unwrap());
  17. #[cfg(windows)]
  18. let child = child.parent_window(window.hwnd().unwrap());
  19. child.build().unwrap();
  20. }
  21. fn main() {
  22. tauri::Builder::default()
  23. .on_page_load(|window, payload| {
  24. if payload.event() == PageLoadEvent::Finished {
  25. let label = window.label().to_string();
  26. window.listen("clicked".to_string(), move |_payload| {
  27. println!("got 'clicked' event on window '{label}'");
  28. });
  29. }
  30. })
  31. .invoke_handler(tauri::generate_handler![create_child_window])
  32. .setup(|app| {
  33. WindowBuilder::new(app, "main".to_string(), WindowUrl::default())
  34. .title("Main")
  35. .inner_size(600.0, 400.0)
  36. .build()?;
  37. Ok(())
  38. })
  39. .run(tauri::generate_context!(
  40. "../../examples/parent-window/tauri.conf.json"
  41. ))
  42. .expect("failed to run tauri application");
  43. }