diff options
author | 2022-07-26 16:46:12 -0300 | |
---|---|---|
committer | 2023-01-09 11:27:04 -0800 | |
commit | 35331d0a41a53b8ff5c642b8274c7377ae6c6182 (patch) | |
tree | 522f9cded3072b64b1127fe9ad572c3f0224cecc /winit/src/multi_window/state.rs | |
parent | 3d901d5f1f8e496651a6f9881fec92bc8998d910 (diff) | |
download | iced-35331d0a41a53b8ff5c642b8274c7377ae6c6182.tar.gz iced-35331d0a41a53b8ff5c642b8274c7377ae6c6182.tar.bz2 iced-35331d0a41a53b8ff5c642b8274c7377ae6c6182.zip |
Allow closing the window from user code
Diffstat (limited to 'winit/src/multi_window/state.rs')
-rw-r--r-- | winit/src/multi_window/state.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/winit/src/multi_window/state.rs b/winit/src/multi_window/state.rs index d22de961..ae353e3b 100644 --- a/winit/src/multi_window/state.rs +++ b/winit/src/multi_window/state.rs @@ -189,6 +189,17 @@ where proxy: &EventLoopProxy<Event<A::Message>>, ) { let new_windows = application.windows(); + + // Check for windows to close + for window_id in windows.keys() { + if !new_windows.iter().any(|(id, _)| id == window_id) { + proxy + .send_event(Event::CloseWindow(*window_id)) + .expect("Failed to send message"); + } + } + + // Check for windows to spawn for (id, settings) in new_windows { if !windows.contains_key(&id) { proxy |