diff options
Diffstat (limited to 'winit/src/window.rs')
-rw-r--r-- | winit/src/window.rs | 83 |
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)) } |