summaryrefslogtreecommitdiffstats
path: root/winit/src/window.rs
diff options
context:
space:
mode:
Diffstat (limited to 'winit/src/window.rs')
-rw-r--r--winit/src/window.rs94
1 files changed, 58 insertions, 36 deletions
diff --git a/winit/src/window.rs b/winit/src/window.rs
index 961562bd..88cd3f14 100644
--- a/winit/src/window.rs
+++ b/winit/src/window.rs
@@ -2,67 +2,86 @@
use crate::command::{self, Command};
use iced_native::window;
-pub use window::{frames, Event, Mode, RedrawRequest, UserAttention};
+pub use window::{Event, Id, Mode, RedrawRequest, frames, UserAttention};
-/// Closes the current window and exits the application.
-pub fn close<Message>() -> Command<Message> {
- Command::single(command::Action::Window(window::Action::Close))
+/// Closes the window.
+pub fn close<Message>(id: window::Id) -> Command<Message> {
+ Command::single(command::Action::Window(id, window::Action::Close))
}
/// Begins dragging the window while the left mouse button is held.
-pub fn drag<Message>() -> Command<Message> {
- Command::single(command::Action::Window(window::Action::Drag))
+pub fn drag<Message>(id: window::Id) -> Command<Message> {
+ Command::single(command::Action::Window(id, window::Action::Drag))
+}
+
+/// Spawns a new window.
+pub fn spawn<Message>(
+ id: window::Id,
+ settings: window::Settings,
+) -> Command<Message> {
+ Command::single(command::Action::Window(
+ id,
+ window::Action::Spawn { settings },
+ ))
}
/// Resizes the window to the given logical dimensions.
-pub fn resize<Message>(width: u32, height: u32) -> Command<Message> {
- Command::single(command::Action::Window(window::Action::Resize {
- width,
- height,
- }))
+pub fn resize<Message>(
+ id: window::Id,
+ width: u32,
+ height: u32,
+) -> Command<Message> {
+ Command::single(command::Action::Window(
+ id,
+ window::Action::Resize { width, height },
+ ))
}
/// Maximizes the window.
-pub fn maximize<Message>(maximized: bool) -> Command<Message> {
- Command::single(command::Action::Window(window::Action::Maximize(
- maximized,
- )))
+pub fn maximize<Message>(id: window::Id, maximized: bool) -> Command<Message> {
+ Command::single(command::Action::Window(
+ id,
+ window::Action::Maximize(maximized),
+ ))
}
/// Minimes the window.
-pub fn minimize<Message>(minimized: bool) -> Command<Message> {
- Command::single(command::Action::Window(window::Action::Minimize(
- minimized,
- )))
+pub fn minimize<Message>(id: window::Id, minimized: bool) -> Command<Message> {
+ Command::single(command::Action::Window(
+ id,
+ window::Action::Minimize(minimized),
+ ))
}
/// Moves a window to the given logical coordinates.
-pub fn move_to<Message>(x: i32, y: i32) -> Command<Message> {
- Command::single(command::Action::Window(window::Action::Move { x, y }))
+pub fn move_to<Message>(id: window::Id, x: i32, y: i32) -> Command<Message> {
+ Command::single(command::Action::Window(id, window::Action::Move { x, y }))
}
-/// Sets the [`Mode`] of the window.
-pub fn change_mode<Message>(mode: Mode) -> Command<Message> {
- Command::single(command::Action::Window(window::Action::ChangeMode(mode)))
+/// Changes the [`Mode`] of the window.
+pub fn change_mode<Message>(id: window::Id, mode: Mode) -> Command<Message> {
+ Command::single(command::Action::Window(id, window::Action::ChangeMode(mode)))
}
/// Fetches the current [`Mode`] of the window.
pub fn fetch_mode<Message>(
+ id: window::Id,
f: impl FnOnce(Mode) -> Message + 'static,
) -> Command<Message> {
- Command::single(command::Action::Window(window::Action::FetchMode(
- Box::new(f),
- )))
+ Command::single(command::Action::Window(
+ id,
+ window::Action::FetchMode(Box::new(f)),
+ ))
}
/// Toggles the window to maximized or back.
-pub fn toggle_maximize<Message>() -> Command<Message> {
- Command::single(command::Action::Window(window::Action::ToggleMaximize))
+pub fn toggle_maximize<Message>(id: window::Id) -> Command<Message> {
+ Command::single(command::Action::Window(id, window::Action::ToggleMaximize))
}
/// Toggles the window decorations.
-pub fn toggle_decorations<Message>() -> Command<Message> {
- Command::single(command::Action::Window(window::Action::ToggleDecorations))
+pub fn toggle_decorations<Message>(id: window::Id) -> Command<Message> {
+ Command::single(command::Action::Window(id, window::Action::ToggleDecorations))
}
/// Request user attention to the window, this has no effect if the application
@@ -72,9 +91,11 @@ pub fn toggle_decorations<Message>() -> Command<Message> {
/// Providing `None` will unset the request for user attention. Unsetting the request for
/// user attention might not be done automatically by the WM when the window receives input.
pub fn request_user_attention<Message>(
+ id: window::Id,
user_attention: Option<UserAttention>,
) -> Command<Message> {
Command::single(command::Action::Window(
+ id,
window::Action::RequestUserAttention(user_attention),
))
}
@@ -85,22 +106,23 @@ pub fn request_user_attention<Message>(
/// This [`Command`] steals input focus from other applications. Do not use this method unless
/// you are certain that's what the user wants. Focus stealing can cause an extremely disruptive
/// user experience.
-pub fn gain_focus<Message>() -> Command<Message> {
- Command::single(command::Action::Window(window::Action::GainFocus))
+pub fn gain_focus<Message>(id: window::Id) -> Command<Message> {
+ Command::single(command::Action::Window(id, window::Action::GainFocus))
}
/// Changes whether or not the window will always be on top of other windows.
-pub fn change_always_on_top<Message>(on_top: bool) -> Command<Message> {
- Command::single(command::Action::Window(window::Action::ChangeAlwaysOnTop(
+pub fn change_always_on_top<Message>(id: window::Id, on_top: bool) -> Command<Message> {
+ Command::single(command::Action::Window(id, window::Action::ChangeAlwaysOnTop(
on_top,
)))
}
/// Fetches an identifier unique to the window.
pub fn fetch_id<Message>(
+ id: window::Id,
f: impl FnOnce(u64) -> Message + 'static,
) -> Command<Message> {
- Command::single(command::Action::Window(window::Action::FetchId(Box::new(
+ Command::single(command::Action::Window(id: window::Id, window::Action::FetchId(Box::new(
f,
))))
}