tauri/examples/parent-window/main.rs
2023-10-27 10:00:59 -03:00

50 lines
1.4 KiB
Rust

// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
use tauri::{
command,
window::{PageLoadEvent, WindowBuilder},
Window, WindowUrl,
};
#[command]
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(window.ns_window().unwrap());
#[cfg(windows)]
let child = child.parent_window(window.hwnd().unwrap());
child.build().unwrap();
}
fn main() {
tauri::Builder::default()
.on_page_load(|window, payload| {
if payload.event() == PageLoadEvent::Finished {
let label = window.label().to_string();
window.listen("clicked".to_string(), move |_payload| {
println!("got 'clicked' event on window '{label}'");
});
}
})
.invoke_handler(tauri::generate_handler![create_child_window])
.setup(|app| {
WindowBuilder::new(app, "main".to_string(), WindowUrl::default())
.title("Main")
.inner_size(600.0, 400.0)
.build()?;
Ok(())
})
.run(tauri::generate_context!(
"../../examples/parent-window/tauri.conf.json"
))
.expect("failed to run tauri application");
}