diff options
Diffstat (limited to 'native/src/command')
-rw-r--r-- | native/src/command/action.rs | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/native/src/command/action.rs b/native/src/command/action.rs index 5c7509c8..a6954f8f 100644 --- a/native/src/command/action.rs +++ b/native/src/command/action.rs @@ -1,4 +1,6 @@ use crate::clipboard; +use crate::system; +use crate::widget; use crate::window; use iced_futures::MaybeSend; @@ -10,22 +12,33 @@ use std::fmt; /// [`Command`]: crate::Command pub enum Action<T> { /// Run a [`Future`] to completion. + /// + /// [`Future`]: iced_futures::BoxFuture Future(iced_futures::BoxFuture<T>), /// Run a clipboard action. Clipboard(clipboard::Action<T>), /// Run a window action. - Window(window::Action), + Window(window::Action<T>), + + /// Run a system action. + System(system::Action<T>), + + /// Run a widget action. + Widget(widget::Action<T>), } impl<T> Action<T> { /// Applies a transformation to the result of a [`Command`]. + /// + /// [`Command`]: crate::Command pub fn map<A>( self, f: impl Fn(T) -> A + 'static + MaybeSend + Sync, ) -> Action<A> where + A: 'static, T: 'static, { use iced_futures::futures::FutureExt; @@ -33,7 +46,9 @@ impl<T> Action<T> { match self { Self::Future(future) => Action::Future(Box::pin(future.map(f))), Self::Clipboard(action) => Action::Clipboard(action.map(f)), - Self::Window(window) => Action::Window(window), + Self::Window(window) => Action::Window(window.map(f)), + Self::System(system) => Action::System(system.map(f)), + Self::Widget(widget) => Action::Widget(widget.map(f)), } } } @@ -46,6 +61,8 @@ impl<T> fmt::Debug for Action<T> { write!(f, "Action::Clipboard({:?})", action) } Self::Window(action) => write!(f, "Action::Window({:?})", action), + Self::System(action) => write!(f, "Action::System({:?})", action), + Self::Widget(_action) => write!(f, "Action::Widget"), } } } |