diff options
author | 2021-09-13 11:49:06 +0700 | |
---|---|---|
committer | 2021-09-13 11:49:06 +0700 | |
commit | 93fec8d273ef8305e1c2456abe0c8ecd7a9d9407 (patch) | |
tree | c0c2445703133293b13657ab4f9c1c936e9cd688 /glutin | |
parent | 589f68df0f647d93f2b9dd7bf29cfacb0201351c (diff) | |
parent | 01b945b9814b9dc546e783a6dab66e4f7fe49786 (diff) | |
download | iced-93fec8d273ef8305e1c2456abe0c8ecd7a9d9407.tar.gz iced-93fec8d273ef8305e1c2456abe0c8ecd7a9d9407.tar.bz2 iced-93fec8d273ef8305e1c2456abe0c8ecd7a9d9407.zip |
Merge pull request #1019 from hecrj/command-actions
Platform-specific `Command` implementations
Diffstat (limited to 'glutin')
-rw-r--r-- | glutin/src/application.rs | 26 | ||||
-rw-r--r-- | glutin/src/lib.rs | 6 |
2 files changed, 25 insertions, 7 deletions
diff --git a/glutin/src/application.rs b/glutin/src/application.rs index 4a5f4bd2..936f0cce 100644 --- a/glutin/src/application.rs +++ b/glutin/src/application.rs @@ -33,6 +33,8 @@ where debug.startup_started(); let event_loop = EventLoop::with_user_event(); + let mut proxy = event_loop.create_proxy(); + let mut runtime = { let executor = E::new().map_err(Error::ExecutorCreationFailed)?; let proxy = Proxy::new(event_loop.create_proxy()); @@ -48,9 +50,6 @@ where let subscription = application.subscription(); - runtime.spawn(init_command); - runtime.track(subscription); - let context = { let builder = settings .window @@ -90,6 +89,17 @@ where })? }; + let mut clipboard = Clipboard::connect(context.window()); + + application::run_command( + init_command, + &mut runtime, + &mut clipboard, + &mut proxy, + context.window(), + ); + runtime.track(subscription); + let (mut sender, receiver) = mpsc::unbounded(); let mut instance = Box::pin(run_instance::<A, E, C>( @@ -97,6 +107,8 @@ where compositor, renderer, runtime, + clipboard, + proxy, debug, receiver, context, @@ -145,6 +157,8 @@ async fn run_instance<A, E, C>( mut compositor: C, mut renderer: A::Renderer, mut runtime: Runtime<E, Proxy<A::Message>, A::Message>, + mut clipboard: Clipboard, + mut proxy: glutin::event_loop::EventLoopProxy<A::Message>, mut debug: Debug, mut receiver: mpsc::UnboundedReceiver<glutin::event::Event<'_, A::Message>>, mut context: glutin::ContextWrapper<glutin::PossiblyCurrent, Window>, @@ -157,8 +171,6 @@ async fn run_instance<A, E, C>( use glutin::event; use iced_winit::futures::stream::StreamExt; - let mut clipboard = Clipboard::connect(context.window()); - let mut state = application::State::new(&application, context.window()); let mut viewport_version = state.viewport_version(); let mut user_interface = @@ -210,9 +222,11 @@ async fn run_instance<A, E, C>( application::update( &mut application, &mut runtime, - &mut debug, &mut clipboard, + &mut proxy, + &mut debug, &mut messages, + context.window(), ); // Update window diff --git a/glutin/src/lib.rs b/glutin/src/lib.rs index 107d9556..7c0c00ca 100644 --- a/glutin/src/lib.rs +++ b/glutin/src/lib.rs @@ -16,10 +16,14 @@ pub use iced_native::*; pub mod application; +pub use iced_winit::clipboard; pub use iced_winit::settings; -pub use iced_winit::{Clipboard, Error, Mode}; +pub use iced_winit::window; +pub use iced_winit::{Error, Mode}; #[doc(no_inline)] pub use application::Application; #[doc(no_inline)] +pub use clipboard::Clipboard; +#[doc(no_inline)] pub use settings::Settings; |