From 98a717383acf71d7939d7cc90d350743487f0380 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Tue, 31 Jan 2023 04:08:19 +0100 Subject: Write missing `window::Action` helpers in `window` --- native/src/window/action.rs | 2 +- winit/src/window.rs | 39 ++++++++++++++++++++++++++++++++++----- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/native/src/window/action.rs b/native/src/window/action.rs index d277649b..168974bc 100644 --- a/native/src/window/action.rs +++ b/native/src/window/action.rs @@ -47,7 +47,7 @@ pub enum Action { ToggleDecorations, /// Request user attention to the window, this has no effect if the application /// is already focused. How requesting for user attention manifests is platform dependent, - /// see [`UserAttentionType`] for details. + /// see [`UserAttention`] for details. /// /// 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. diff --git a/winit/src/window.rs b/winit/src/window.rs index 0685c87c..6e3a383a 100644 --- a/winit/src/window.rs +++ b/winit/src/window.rs @@ -42,11 +42,6 @@ pub fn change_mode(mode: Mode) -> Command { Command::single(command::Action::Window(window::Action::ChangeMode(mode))) } -/// Toggles the window to maximized or back. -pub fn toggle_maximize() -> Command { - Command::single(command::Action::Window(window::Action::ToggleMaximize)) -} - /// Fetches the current [`Mode`] of the window. pub fn fetch_mode( f: impl FnOnce(Mode) -> Message + 'static, @@ -55,3 +50,37 @@ pub fn fetch_mode( Box::new(f), ))) } + +/// Toggles the window to maximized or back. +pub fn toggle_maximize() -> Command { + Command::single(command::Action::Window(window::Action::ToggleMaximize)) +} + +/// Toggles the window decorations. +pub fn toggle_decorations() -> Command { + Command::single(command::Action::Window(window::Action::ToggleDecorations)) +} + +/// Request user attention to the window, this has no effect if the application +/// is already focused. How requesting for user attention manifests is platform dependent, +/// see [`UserAttention`] for details. +/// +/// 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( + user_attention: Option, +) -> Command { + Command::single(command::Action::Window( + window::Action::RequestUserAttention(user_attention), + )) +} + +/// Brings the window to the front and sets input focus. Has no effect if the window is +/// already in focus, minimized, or not visible. +/// +/// 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() -> Command { + Command::single(command::Action::Window(window::Action::GainFocus)) +} -- cgit