diff options
author | 2024-06-11 19:41:05 +0200 | |
---|---|---|
committer | 2024-06-11 19:41:05 +0200 | |
commit | 5d7dcf417c694853a606b8fb0a47a580277fc9c0 (patch) | |
tree | 8209e3787ee4f4b8ef028fafc9635b1acf777c75 /winit/src | |
parent | 83296a73ebbb3c02ed63dfb4661056a8a8962267 (diff) | |
download | iced-5d7dcf417c694853a606b8fb0a47a580277fc9c0.tar.gz iced-5d7dcf417c694853a606b8fb0a47a580277fc9c0.tar.bz2 iced-5d7dcf417c694853a606b8fb0a47a580277fc9c0.zip |
Introduce `subscription::Event`
... and remove `PlatformSpecific` from `Event`
Diffstat (limited to 'winit/src')
-rw-r--r-- | winit/src/application.rs | 29 | ||||
-rw-r--r-- | winit/src/multi_window.rs | 42 |
2 files changed, 40 insertions, 31 deletions
diff --git a/winit/src/application.rs b/winit/src/application.rs index ed8715d8..d93ea42e 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -12,7 +12,8 @@ use crate::core::widget::operation; use crate::core::window; use crate::core::{Color, Event, Point, Size, Theme}; use crate::futures::futures; -use crate::futures::{Executor, Runtime, Subscription}; +use crate::futures::subscription::{self, Subscription}; +use crate::futures::{Executor, Runtime}; use crate::graphics; use crate::graphics::compositor::{self, Compositor}; use crate::runtime::clipboard; @@ -574,12 +575,10 @@ async fn run_instance<A, E, C>( event::Event::PlatformSpecific(event::PlatformSpecific::MacOS( event::MacOS::ReceivedUrl(url), )) => { - use crate::core::event; - - events.push(Event::PlatformSpecific( - event::PlatformSpecific::MacOS(event::MacOS::ReceivedUrl( - url, - )), + runtime.broadcast(subscription::Event::PlatformSpecific( + subscription::PlatformSpecific::MacOS( + subscription::MacOS::ReceivedUrl(url), + ), )); } event::Event::UserEvent(message) => { @@ -650,11 +649,11 @@ async fn run_instance<A, E, C>( _ => ControlFlow::Wait, }); - runtime.broadcast( - redraw_event, - core::event::Status::Ignored, - window::Id::MAIN, - ); + runtime.broadcast(subscription::Event::Interaction { + window: window::Id::MAIN, + event: redraw_event, + status: core::event::Status::Ignored, + }); debug.draw_started(); let new_mouse_interaction = user_interface.draw( @@ -744,7 +743,11 @@ async fn run_instance<A, E, C>( for (event, status) in events.drain(..).zip(statuses.into_iter()) { - runtime.broadcast(event, status, window::Id::MAIN); + runtime.broadcast(subscription::Event::Interaction { + window: window::Id::MAIN, + event, + status, + }); } if !messages.is_empty() diff --git a/winit/src/multi_window.rs b/winit/src/multi_window.rs index 13839828..2eaf9241 100644 --- a/winit/src/multi_window.rs +++ b/winit/src/multi_window.rs @@ -16,7 +16,8 @@ use crate::futures::futures::channel::oneshot; use crate::futures::futures::executor; use crate::futures::futures::task; use crate::futures::futures::{Future, StreamExt}; -use crate::futures::{Executor, Runtime, Subscription}; +use crate::futures::subscription::{self, Subscription}; +use crate::futures::{Executor, Runtime}; use crate::graphics; use crate::graphics::{compositor, Compositor}; use crate::multi_window::window_manager::WindowManager; @@ -585,16 +586,13 @@ async fn run_instance<A, E, C>( event::MacOS::ReceivedUrl(url), ), ) => { - use crate::core::event; - - events.push(( - window::Id::MAIN, - event::Event::PlatformSpecific( - event::PlatformSpecific::MacOS( - event::MacOS::ReceivedUrl(url), + runtime.broadcast( + subscription::Event::PlatformSpecific( + subscription::PlatformSpecific::MacOS( + subscription::MacOS::ReceivedUrl(url), ), ), - )); + ); } event::Event::UserEvent(message) => { messages.push(message); @@ -655,11 +653,11 @@ async fn run_instance<A, E, C>( window.mouse_interaction = new_mouse_interaction; } - runtime.broadcast( - redraw_event.clone(), - core::event::Status::Ignored, - id, - ); + runtime.broadcast(subscription::Event::Interaction { + window: id, + event: redraw_event, + status: core::event::Status::Ignored, + }); let _ = control_sender.start_send(Control::ChangeFlow( match ui_state { @@ -866,15 +864,23 @@ async fn run_instance<A, E, C>( .into_iter() .zip(statuses.into_iter()) { - runtime.broadcast(event, status, id); + runtime.broadcast( + subscription::Event::Interaction { + window: id, + event, + status, + }, + ); } } for (id, event) in events.drain(..) { runtime.broadcast( - event, - core::event::Status::Ignored, - id, + subscription::Event::Interaction { + window: id, + event, + status: core::event::Status::Ignored, + }, ); } |