main.rs 1.5 KB

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