summaryrefslogtreecommitdiffstats
path: root/winit/src/multi_window/state.rs
diff options
context:
space:
mode:
authorLibravatar Richard <richardsoncusto@gmail.com>2022-07-26 16:46:12 -0300
committerLibravatar bungoboingo <shankern@protonmail.com>2023-01-09 11:27:04 -0800
commit35331d0a41a53b8ff5c642b8274c7377ae6c6182 (patch)
tree522f9cded3072b64b1127fe9ad572c3f0224cecc /winit/src/multi_window/state.rs
parent3d901d5f1f8e496651a6f9881fec92bc8998d910 (diff)
downloadiced-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.rs11
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