summaryrefslogtreecommitdiffstats
path: root/winit/src
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-06-11 19:41:05 +0200
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-06-11 19:41:05 +0200
commit5d7dcf417c694853a606b8fb0a47a580277fc9c0 (patch)
tree8209e3787ee4f4b8ef028fafc9635b1acf777c75 /winit/src
parent83296a73ebbb3c02ed63dfb4661056a8a8962267 (diff)
downloadiced-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.rs29
-rw-r--r--winit/src/multi_window.rs42
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,
+ },
);
}