summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorLibravatar Night_Hunter <samuelhuntnz@gmail.com>2024-02-22 17:13:12 +1300
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-02-22 09:16:05 +0100
commit59885e9a363dd73b3a3e8dd125decf0e34130c59 (patch)
tree01eb049c55c514d5455cd8569a0fb4360adb6146 /runtime
parent6c00e615b9fb7618c710a3f5d920d00e6b8a258c (diff)
downloadiced-59885e9a363dd73b3a3e8dd125decf0e34130c59.tar.gz
iced-59885e9a363dd73b3a3e8dd125decf0e34130c59.tar.bz2
iced-59885e9a363dd73b3a3e8dd125decf0e34130c59.zip
Add `fetch_location` command to `window` module
Diffstat (limited to 'runtime')
-rw-r--r--runtime/src/window.rs11
-rw-r--r--runtime/src/window/action.rs8
2 files changed, 19 insertions, 0 deletions
diff --git a/runtime/src/window.rs b/runtime/src/window.rs
index 04bcfcd8..c5acfddc 100644
--- a/runtime/src/window.rs
+++ b/runtime/src/window.rs
@@ -106,6 +106,17 @@ pub fn move_to<Message>(id: Id, position: Point) -> Command<Message> {
Command::single(command::Action::Window(Action::Move(id, position)))
}
+/// Fetches the window's location in logical coordinates.
+pub fn fetch_location<Message>(
+ id: Id,
+ f: impl FnOnce(Option<Point>) -> Message + 'static,
+) -> Command<Message> {
+ Command::single(command::Action::Window(Action::FetchLocation(
+ id,
+ Box::new(f),
+ )))
+}
+
/// Changes the [`Mode`] of the window.
pub fn change_mode<Message>(id: Id, mode: Mode) -> Command<Message> {
Command::single(command::Action::Window(Action::ChangeMode(id, mode)))
diff --git a/runtime/src/window/action.rs b/runtime/src/window/action.rs
index 9bfc2b62..39eb1008 100644
--- a/runtime/src/window/action.rs
+++ b/runtime/src/window/action.rs
@@ -42,6 +42,8 @@ pub enum Action<T> {
///
/// Unsupported on Wayland.
Move(Id, Point),
+ /// Fetch the current logical coordinates of the window.
+ FetchLocation(Id, Box<dyn FnOnce(Option<Point>) -> T + 'static>),
/// Change the [`Mode`] of the window.
ChangeMode(Id, Mode),
/// Fetch the current [`Mode`] of the window.
@@ -135,6 +137,9 @@ impl<T> Action<T> {
}
Self::Minimize(id, minimized) => Action::Minimize(id, minimized),
Self::Move(id, position) => Action::Move(id, position),
+ Self::FetchLocation(id, o) => {
+ Action::FetchLocation(id, Box::new(move |s| f(o(s))))
+ }
Self::ChangeMode(id, mode) => Action::ChangeMode(id, mode),
Self::FetchMode(id, o) => {
Action::FetchMode(id, Box::new(move |s| f(o(s))))
@@ -189,6 +194,9 @@ impl<T> fmt::Debug for Action<T> {
Self::Move(id, position) => {
write!(f, "Action::Move({id:?}, {position})")
}
+ Self::FetchLocation(id, _) => {
+ write!(f, "Action::FetchLocation({id:?})")
+ }
Self::ChangeMode(id, mode) => {
write!(f, "Action::SetMode({id:?}, {mode:?})")
}