summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector@hecrj.dev>2024-02-03 15:23:06 +0100
committerLibravatar GitHub <noreply@github.com>2024-02-03 15:23:06 +0100
commit1d58d44fad605e428e7c203f610d3f98e53970d7 (patch)
treef96d47005762bac799b1eafb3cdab3732d5095c8
parent0b2c9db22868c43e4dd160b66abddce0846991b1 (diff)
parent4375e4b83c6572e23db9f2443bbc7fe266f7e0a8 (diff)
downloadiced-1d58d44fad605e428e7c203f610d3f98e53970d7.tar.gz
iced-1d58d44fad605e428e7c203f610d3f98e53970d7.tar.bz2
iced-1d58d44fad605e428e7c203f610d3f98e53970d7.zip
Merge pull request #2146 from Decodetalkers/customaction
feat: somewhere to place extra actions by platform
-rw-r--r--CHANGELOG.md2
-rw-r--r--runtime/src/command/action.rs9
-rw-r--r--winit/src/application.rs3
-rw-r--r--winit/src/multi_window.rs3
4 files changed, 15 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e4557f69..6690c0ad 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -31,6 +31,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `style` attribute for `Font`. [#2041](https://github.com/iced-rs/iced/pull/2041)
- Texture filtering options for `Image`. [#1894](https://github.com/iced-rs/iced/pull/1894)
- `default` and `shift_step` methods for `slider` widgets. [#2100](https://github.com/iced-rs/iced/pull/2100)
+- `Custom` variant to `command::Action`. [#2146](https://github.com/iced-rs/iced/pull/2146)
### Changed
- Enable WebGPU backend in `wgpu` by default instead of WebGL. [#2068](https://github.com/iced-rs/iced/pull/2068)
@@ -101,6 +102,7 @@ Many thanks to...
- @casperstorm
- @cfrenette
- @Davidster
+- @Decodetalkers
- @derezzedex
- @dtzxporter
- @GyulyVGC
diff --git a/runtime/src/command/action.rs b/runtime/src/command/action.rs
index cb0936df..c9ffe801 100644
--- a/runtime/src/command/action.rs
+++ b/runtime/src/command/action.rs
@@ -1,11 +1,11 @@
use crate::clipboard;
use crate::core::widget;
use crate::font;
+use crate::futures::MaybeSend;
use crate::system;
use crate::window;
-use iced_futures::MaybeSend;
-
+use std::any::Any;
use std::borrow::Cow;
use std::fmt;
@@ -43,6 +43,9 @@ pub enum Action<T> {
/// The message to produce when the font has been loaded.
tagger: Box<dyn Fn(Result<(), font::Error>) -> T>,
},
+
+ /// A custom action supported by a specific runtime.
+ Custom(Box<dyn Any>),
}
impl<T> Action<T> {
@@ -72,6 +75,7 @@ impl<T> Action<T> {
bytes,
tagger: Box::new(move |result| f(tagger(result))),
},
+ Self::Custom(custom) => Action::Custom(custom),
}
}
}
@@ -90,6 +94,7 @@ impl<T> fmt::Debug for Action<T> {
Self::System(action) => write!(f, "Action::System({action:?})"),
Self::Widget(_action) => write!(f, "Action::Widget"),
Self::LoadFont { .. } => write!(f, "Action::LoadFont"),
+ Self::Custom(_) => write!(f, "Action::Custom"),
}
}
}
diff --git a/winit/src/application.rs b/winit/src/application.rs
index 21a985e8..24c98d46 100644
--- a/winit/src/application.rs
+++ b/winit/src/application.rs
@@ -861,6 +861,9 @@ pub fn run_command<A, C, E>(
.send_event(tagger(Ok(())))
.expect("Send message to event loop");
}
+ command::Action::Custom(_) => {
+ log::warn!("Unsupported custom action in `iced_winit` shell");
+ }
}
}
}
diff --git a/winit/src/multi_window.rs b/winit/src/multi_window.rs
index 1c45ce37..662adf5b 100644
--- a/winit/src/multi_window.rs
+++ b/winit/src/multi_window.rs
@@ -1127,6 +1127,9 @@ fn run_command<A, C, E>(
.send_event(tagger(Ok(())))
.expect("Send message to event loop");
}
+ command::Action::Custom(_) => {
+ log::warn!("Unsupported custom action in `iced_winit` shell");
+ }
}
}
}