diff options
author | 2023-02-15 11:28:36 -0800 | |
---|---|---|
committer | 2023-02-15 11:28:36 -0800 | |
commit | 367fea5dc8e94584334e880970126b40a046bfa6 (patch) | |
tree | 8678a00263edd4e4ef8dfc2abf2b6b4c9ca7e067 /winit/src | |
parent | 0a643287deece9234b64cc843a9f6ae3e6e4806e (diff) | |
download | iced-367fea5dc8e94584334e880970126b40a046bfa6.tar.gz iced-367fea5dc8e94584334e880970126b40a046bfa6.tar.bz2 iced-367fea5dc8e94584334e880970126b40a046bfa6.zip |
Redraw request events for multiwindow.
Diffstat (limited to 'winit/src')
-rw-r--r-- | winit/src/multi_window.rs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/winit/src/multi_window.rs b/winit/src/multi_window.rs index ad65e6a5..430e6706 100644 --- a/winit/src/multi_window.rs +++ b/winit/src/multi_window.rs @@ -25,6 +25,7 @@ pub use iced_native::application::{Appearance, StyleSheet}; use iced_native::window::Action; use std::collections::HashMap; use std::mem::ManuallyDrop; +use std::time::Instant; #[cfg(feature = "trace")] pub use crate::Profiler; @@ -402,7 +403,7 @@ async fn run_instance<A, E, C>( let (filtered, remaining): (Vec<_>, Vec<_>) = events.iter().cloned().partition( |(window_id, _event): &( - Option<crate::window::Id>, + Option<window::Id>, iced_native::event::Event, )| { *window_id == Some(id) || *window_id == None @@ -410,10 +411,14 @@ async fn run_instance<A, E, C>( ); events.retain(|el| remaining.contains(el)); - let filtered: Vec<_> = filtered + let mut filtered: Vec<_> = filtered .into_iter() .map(|(_id, event)| event) .collect(); + filtered.push(iced_native::Event::Window( + id, + window::Event::RedrawRequested(Instant::now()), + )); let cursor_position = states.get(&id).unwrap().cursor_position(); @@ -450,7 +455,7 @@ async fn run_instance<A, E, C>( user_interface::State::Outdated, ) { - let state = &mut states.get_mut(&id).unwrap(); + let state = states.get_mut(&id).unwrap(); let pure_states: HashMap<_, _> = ManuallyDrop::into_inner(interfaces) .drain() |