From 76698ff2b5753e637b14533650c0d28e681be3c5 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 1 Sep 2021 19:21:49 +0700 Subject: Make `Command` implementations platform-specific This allows us to introduce a platform-specific `Action` to both `iced_native` and `iced_web` and remove the `Clipboard` from `Application::update` to maintain purity. Additionally, this should let us implement further actions to let users query and modify the shell environment (e.g. window, clipboard, and more!) --- src/application.rs | 31 ++++++++----------------------- src/sandbox.rs | 9 ++------- 2 files changed, 10 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/application.rs b/src/application.rs index 78280e98..81add963 100644 --- a/src/application.rs +++ b/src/application.rs @@ -1,7 +1,5 @@ use crate::window; -use crate::{ - Clipboard, Color, Command, Element, Executor, Menu, Settings, Subscription, -}; +use crate::{Color, Command, Element, Executor, Menu, Settings, Subscription}; /// An interactive cross-platform application. /// @@ -80,7 +78,7 @@ use crate::{ /// String::from("A cool application") /// } /// -/// fn update(&mut self, _message: Self::Message, _clipboard: &mut Clipboard) -> Command { +/// fn update(&mut self, _message: Self::Message) -> Command { /// Command::none() /// } /// @@ -129,11 +127,7 @@ pub trait Application: Sized { /// this method. /// /// Any [`Command`] returned will be executed immediately in the background. - fn update( - &mut self, - message: Self::Message, - clipboard: &mut Clipboard, - ) -> Command; + fn update(&mut self, message: Self::Message) -> Command; /// Returns the event [`Subscription`] for the current state of the /// application. @@ -249,14 +243,9 @@ where { type Renderer = crate::renderer::Renderer; type Message = A::Message; - type Clipboard = iced_winit::Clipboard; - - fn update( - &mut self, - message: Self::Message, - clipboard: &mut iced_winit::Clipboard, - ) -> Command { - self.0.update(message, clipboard) + + fn update(&mut self, message: Self::Message) -> Command { + self.0.update(message) } fn view(&mut self) -> Element<'_, Self::Message> { @@ -329,12 +318,8 @@ where self.0.title() } - fn update( - &mut self, - message: Self::Message, - clipboard: &mut Clipboard, - ) -> Command { - self.0.update(message, clipboard) + fn update(&mut self, message: Self::Message) -> Command { + self.0.update(message) } fn subscription(&self) -> Subscription { diff --git a/src/sandbox.rs b/src/sandbox.rs index cb3cf624..a0bb316e 100644 --- a/src/sandbox.rs +++ b/src/sandbox.rs @@ -1,6 +1,5 @@ use crate::{ - Application, Clipboard, Color, Command, Element, Error, Settings, - Subscription, + Application, Color, Command, Element, Error, Settings, Subscription, }; /// A sandboxed [`Application`]. @@ -162,11 +161,7 @@ where T::title(self) } - fn update( - &mut self, - message: T::Message, - _clipboard: &mut Clipboard, - ) -> Command { + fn update(&mut self, message: T::Message) -> Command { T::update(self, message); Command::none() -- cgit From f0686eae0e421880a047bb83c6d3f62600cf9778 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 2 Sep 2021 13:47:03 +0700 Subject: Remove `Clipboard` export in `iced` --- src/application.rs | 2 +- src/lib.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/application.rs b/src/application.rs index 81add963..0c30a554 100644 --- a/src/application.rs +++ b/src/application.rs @@ -57,7 +57,7 @@ use crate::{Color, Command, Element, Executor, Menu, Settings, Subscription}; /// says "Hello, world!": /// /// ```no_run -/// use iced::{executor, Application, Clipboard, Command, Element, Settings, Text}; +/// use iced::{executor, Application, Command, Element, Settings, Text}; /// /// pub fn main() -> iced::Result { /// Hello::run(Settings::default()) diff --git a/src/lib.rs b/src/lib.rs index 8cd6aa70..8bf4d0e0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -245,7 +245,7 @@ pub use sandbox::Sandbox; pub use settings::Settings; pub use runtime::{ - futures, menu, Align, Background, Clipboard, Color, Command, Font, + futures, menu, Align, Background, Color, Command, Font, HorizontalAlignment, Length, Menu, Point, Rectangle, Size, Subscription, Vector, VerticalAlignment, }; -- cgit From 7a335a0408b3ee426949a1936255666bc3383ea9 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 2 Sep 2021 15:12:55 +0700 Subject: Implement and expose `read` and `write` helpers for `clipboard` --- src/clipboard.rs | 3 +++ src/lib.rs | 1 + 2 files changed, 4 insertions(+) create mode 100644 src/clipboard.rs (limited to 'src') diff --git a/src/clipboard.rs b/src/clipboard.rs new file mode 100644 index 00000000..dde17051 --- /dev/null +++ b/src/clipboard.rs @@ -0,0 +1,3 @@ +//! Access the clipboard. +#[cfg(not(target_arch = "wasm32"))] +pub use crate::runtime::clipboard::{read, write}; diff --git a/src/lib.rs b/src/lib.rs index 8bf4d0e0..e4f00c07 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -183,6 +183,7 @@ mod error; mod result; mod sandbox; +pub mod clipboard; pub mod executor; pub mod keyboard; pub mod mouse; -- cgit From 7cb6e7438f7fb5d0d8be4528a31b888e2b12cd51 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 2 Sep 2021 16:30:14 +0700 Subject: Implement `move_to` and `resize` commands for `window` --- src/window.rs | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/window.rs b/src/window.rs index 7d441062..71158816 100644 --- a/src/window.rs +++ b/src/window.rs @@ -9,3 +9,6 @@ pub use icon::Icon; pub use mode::Mode; pub use position::Position; pub use settings::Settings; + +#[cfg(not(target_arch = "wasm32"))] +pub use crate::runtime::window::{move_to, resize}; -- cgit