summaryrefslogtreecommitdiffstats
path: root/glutin
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2021-09-13 11:49:06 +0700
committerLibravatar GitHub <noreply@github.com>2021-09-13 11:49:06 +0700
commit93fec8d273ef8305e1c2456abe0c8ecd7a9d9407 (patch)
treec0c2445703133293b13657ab4f9c1c936e9cd688 /glutin
parent589f68df0f647d93f2b9dd7bf29cfacb0201351c (diff)
parent01b945b9814b9dc546e783a6dab66e4f7fe49786 (diff)
downloadiced-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.rs26
-rw-r--r--glutin/src/lib.rs6
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;