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.rs83
1 files changed, 54 insertions, 29 deletions
diff --git a/winit/src/window.rs b/winit/src/window.rs
index 6e3a383a..fa31dca1 100644
--- a/winit/src/window.rs
+++ b/winit/src/window.rs
@@ -2,63 +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>(value: bool) -> Command<Message> {
- Command::single(command::Action::Window(window::Action::Maximize(value)))
+pub fn maximize<Message>(id: window::Id, value: bool) -> Command<Message> {
+ Command::single(command::Action::Window(
+ id,
+ window::Action::Maximize(value),
+ ))
}
/// Minimes the window.
-pub fn minimize<Message>(value: bool) -> Command<Message> {
- Command::single(command::Action::Window(window::Action::Minimize(value)))
+pub fn minimize<Message>(id: window::Id, value: bool) -> Command<Message> {
+ Command::single(command::Action::Window(
+ id,
+ window::Action::Minimize(value),
+ ))
}
/// 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::SetMode(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
@@ -68,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),
))
}
@@ -81,6 +106,6 @@ 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))
}