summaryrefslogtreecommitdiffstats
path: root/winit/src/multi_window/state.rs
diff options
context:
space:
mode:
authorLibravatar Richard <richardsoncusto@gmail.com>2022-06-15 20:38:51 -0300
committerLibravatar bungoboingo <shankern@protonmail.com>2023-01-09 11:27:04 -0800
commit8fdd5ee8b60e551088d4a18fb1d58b6c3e62ba7d (patch)
tree5dd4b29e496035aea53fa70702c18f3262128284 /winit/src/multi_window/state.rs
parent00d6baf861ba57984a341283823e9fea3c262130 (diff)
downloadiced-8fdd5ee8b60e551088d4a18fb1d58b6c3e62ba7d.tar.gz
iced-8fdd5ee8b60e551088d4a18fb1d58b6c3e62ba7d.tar.bz2
iced-8fdd5ee8b60e551088d4a18fb1d58b6c3e62ba7d.zip
Synchronize window list with `windows` method
Diffstat (limited to 'winit/src/multi_window/state.rs')
-rw-r--r--winit/src/multi_window/state.rs22
1 files changed, 20 insertions, 2 deletions
diff --git a/winit/src/multi_window/state.rs b/winit/src/multi_window/state.rs
index 2d120ca1..009a3698 100644
--- a/winit/src/multi_window/state.rs
+++ b/winit/src/multi_window/state.rs
@@ -1,10 +1,12 @@
use crate::application::{self, StyleSheet as _};
use crate::conversion;
-use crate::multi_window::Application;
+use crate::multi_window::{Application, Event};
use crate::{Color, Debug, Point, Size, Viewport};
+use std::collections::HashMap;
use std::marker::PhantomData;
use winit::event::{Touch, WindowEvent};
+use winit::event_loop::EventLoopProxy;
use winit::window::Window;
/// The state of a windowed [`Application`].
@@ -181,7 +183,23 @@ where
/// and window after calling [`Application::update`].
///
/// [`Application::update`]: crate::Program::update
- pub fn synchronize(&mut self, application: &A, window: &Window) {
+ pub fn synchronize(
+ &mut self,
+ application: &A,
+ windows: &HashMap<usize, Window>,
+ proxy: &EventLoopProxy<Event<A::Message>>,
+ ) {
+ let new_windows = application.windows();
+ for (id, settings) in new_windows {
+ if !windows.contains_key(&id) {
+ proxy
+ .send_event(Event::NewWindow(id, settings))
+ .expect("Failed to send message");
+ }
+ }
+
+ let window = windows.values().next().expect("No window found");
+
// Update window title
let new_title = application.title();