From a5fbfe7ea5e73218af1befe02eb364afad2d6c55 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Mon, 27 Feb 2023 23:44:31 +0000 Subject: Update to winit 0.28 --- winit/src/application.rs | 7 ++++++- winit/src/settings.rs | 8 ++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'winit/src') diff --git a/winit/src/application.rs b/winit/src/application.rs index 3d7c6e5d..1141ba27 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -26,6 +26,7 @@ use crate::{Clipboard, Error, Proxy, Settings}; use futures::channel::mpsc; use std::mem::ManuallyDrop; +use winit::window::WindowLevel; #[cfg(feature = "trace")] pub use profiler::Profiler; @@ -795,7 +796,11 @@ pub fn run_command( window.focus_window(); } window::Action::ChangeAlwaysOnTop(on_top) => { - window.set_always_on_top(on_top); + let level = match on_top { + true => WindowLevel::AlwaysOnTop, + false => WindowLevel::Normal, + }; + window.set_window_level(level); } window::Action::FetchId(tag) => { proxy diff --git a/winit/src/settings.rs b/winit/src/settings.rs index be0ab329..413ae64a 100644 --- a/winit/src/settings.rs +++ b/winit/src/settings.rs @@ -26,7 +26,7 @@ use crate::core::window::Icon; use crate::Position; use winit::monitor::MonitorHandle; -use winit::window::WindowBuilder; +use winit::window::{WindowBuilder, WindowLevel}; use std::fmt; @@ -121,6 +121,10 @@ impl Window { let (width, height) = self.size; + let window_level = match self.always_on_top { + true => WindowLevel::AlwaysOnTop, + false => WindowLevel::Normal, + }; window_builder = window_builder .with_title(title) .with_inner_size(winit::dpi::LogicalSize { width, height }) @@ -128,7 +132,7 @@ impl Window { .with_decorations(self.decorations) .with_transparent(self.transparent) .with_window_icon(self.icon.and_then(conversion::icon)) - .with_always_on_top(self.always_on_top) + .with_window_level(window_level) .with_visible(self.visible); if let Some(position) = conversion::position( -- cgit From 42671e2855a7e54c1785f75833da062e07362b87 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Tue, 28 Feb 2023 12:11:04 +0000 Subject: Fix build on linux --- winit/src/settings.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'winit/src') diff --git a/winit/src/settings.rs b/winit/src/settings.rs index 413ae64a..a807cdba 100644 --- a/winit/src/settings.rs +++ b/winit/src/settings.rs @@ -161,7 +161,9 @@ impl Window { target_os = "openbsd" ))] { - use ::winit::platform::unix::WindowBuilderExtUnix; + // `with_name` is available on both `WindowBuilderExtWayland` and `WindowBuilderExtX11` and they do + // exactly the same thing. We arbitrarily choose `WindowBuilderExtWayland` here. + use ::winit::platform::x11::WindowBuilderExtWayland; if let Some(id) = _id { window_builder = window_builder.with_name(id.clone(), id); -- cgit From 09a2a061303e954dbae7dab6f9bf092c121900f8 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Tue, 28 Feb 2023 12:15:04 +0000 Subject: Fix import path --- winit/src/settings.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'winit/src') diff --git a/winit/src/settings.rs b/winit/src/settings.rs index a807cdba..22033113 100644 --- a/winit/src/settings.rs +++ b/winit/src/settings.rs @@ -163,7 +163,7 @@ impl Window { { // `with_name` is available on both `WindowBuilderExtWayland` and `WindowBuilderExtX11` and they do // exactly the same thing. We arbitrarily choose `WindowBuilderExtWayland` here. - use ::winit::platform::x11::WindowBuilderExtWayland; + use ::winit::platform::wayland::WindowBuilderExtWayland; if let Some(id) = _id { window_builder = window_builder.with_name(id.clone(), id); -- cgit From d6027d7da64c090e8735e755dc5095d77c38b721 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Thu, 11 May 2023 17:40:09 +0100 Subject: Use raw-window-handle instead of HWND --- winit/src/settings/windows.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'winit/src') diff --git a/winit/src/settings/windows.rs b/winit/src/settings/windows.rs index ff03a9c5..ce18da75 100644 --- a/winit/src/settings/windows.rs +++ b/winit/src/settings/windows.rs @@ -1,10 +1,12 @@ //! Platform specific settings for Windows. +use raw_window_handle::RawWindowHandle; + /// The platform specific window settings of an application. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct PlatformSpecific { /// Parent window - pub parent: Option, + pub parent: Option, /// Drag and drop support pub drag_and_drop: bool, -- cgit From 861a24745a9dfb99feaa3c5a4299af58a0054ed7 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Thu, 11 May 2023 17:51:03 +0100 Subject: Fixup option --- winit/src/settings.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'winit/src') diff --git a/winit/src/settings.rs b/winit/src/settings.rs index 22033113..efee5c68 100644 --- a/winit/src/settings.rs +++ b/winit/src/settings.rs @@ -173,12 +173,8 @@ impl Window { #[cfg(target_os = "windows")] { use winit::platform::windows::WindowBuilderExtWindows; - - if let Some(parent) = self.platform_specific.parent { - window_builder = window_builder.with_parent_window(parent); - } - window_builder = window_builder + .with_parent_window(self.platform_specific.parent) .with_drag_and_drop(self.platform_specific.drag_and_drop); } -- cgit From e82ce8d93c2c36057b85b7cfe76c871e7c720f17 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Thu, 11 May 2023 19:27:27 +0100 Subject: Add unsafe block --- winit/src/settings.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'winit/src') diff --git a/winit/src/settings.rs b/winit/src/settings.rs index efee5c68..1f3389ef 100644 --- a/winit/src/settings.rs +++ b/winit/src/settings.rs @@ -173,8 +173,11 @@ impl Window { #[cfg(target_os = "windows")] { use winit::platform::windows::WindowBuilderExtWindows; + unsafe { + window_builder = window_builder + .with_parent_window(self.platform_specific.parent); + } window_builder = window_builder - .with_parent_window(self.platform_specific.parent) .with_drag_and_drop(self.platform_specific.drag_and_drop); } -- cgit From 096bcd898838a4980ebecbc658d7851af226eae6 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Thu, 11 May 2023 19:36:22 +0100 Subject: Allow unsafe code --- winit/src/lib.rs | 5 +++-- winit/src/settings.rs | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'winit/src') diff --git a/winit/src/lib.rs b/winit/src/lib.rs index 62d66d5e..4776ea2c 100644 --- a/winit/src/lib.rs +++ b/winit/src/lib.rs @@ -25,9 +25,10 @@ clippy::from_over_into, clippy::needless_borrow, clippy::new_without_default, - clippy::useless_conversion + clippy::useless_conversion, + unsafe_code )] -#![forbid(rust_2018_idioms, unsafe_code)] +#![forbid(rust_2018_idioms)] #![allow(clippy::inherent_to_string, clippy::type_complexity)] #![cfg_attr(docsrs, feature(doc_auto_cfg))] pub use iced_graphics as graphics; diff --git a/winit/src/settings.rs b/winit/src/settings.rs index 1f3389ef..13be3932 100644 --- a/winit/src/settings.rs +++ b/winit/src/settings.rs @@ -173,6 +173,7 @@ impl Window { #[cfg(target_os = "windows")] { use winit::platform::windows::WindowBuilderExtWindows; + #[allow(unsafe_code)] unsafe { window_builder = window_builder .with_parent_window(self.platform_specific.parent); -- cgit From a7fa7e40058188c95a790712e11b863a9f84cecb Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 25 May 2023 23:14:07 +0200 Subject: Introduce `window::Level` enum ... and add `level` field to `window::Settings` --- winit/src/conversion.rs | 13 +++++++++++++ winit/src/settings.rs | 18 +++++++----------- 2 files changed, 20 insertions(+), 11 deletions(-) (limited to 'winit/src') diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs index a9262184..904aa184 100644 --- a/winit/src/conversion.rs +++ b/winit/src/conversion.rs @@ -140,6 +140,19 @@ pub fn window_event( } } +/// Converts a [`window::Level`] to a [`winit`] window level. +/// +/// [`winit`]: https://github.com/rust-windowing/winit +pub fn window_level(level: window::Level) -> winit::window::WindowLevel { + match level { + window::Level::Normal => winit::window::WindowLevel::Normal, + window::Level::AlwaysOnBottom => { + winit::window::WindowLevel::AlwaysOnBottom + } + window::Level::AlwaysOnTop => winit::window::WindowLevel::AlwaysOnTop, + } +} + /// Converts a [`Position`] to a [`winit`] logical position for a given monitor. /// /// [`winit`]: https://github.com/rust-windowing/winit diff --git a/winit/src/settings.rs b/winit/src/settings.rs index 13be3932..40b3d487 100644 --- a/winit/src/settings.rs +++ b/winit/src/settings.rs @@ -22,11 +22,11 @@ mod platform; pub use platform::PlatformSpecific; use crate::conversion; -use crate::core::window::Icon; +use crate::core::window::{Icon, Level}; use crate::Position; use winit::monitor::MonitorHandle; -use winit::window::{WindowBuilder, WindowLevel}; +use winit::window::WindowBuilder; use std::fmt; @@ -81,8 +81,8 @@ pub struct Window { /// Whether the window should be transparent. pub transparent: bool, - /// Whether the window will always be on top of other windows. - pub always_on_top: bool, + /// The window [`Level`]. + pub level: Level, /// The window icon, which is also usually used in the taskbar pub icon: Option, @@ -102,7 +102,7 @@ impl fmt::Debug for Window { .field("resizable", &self.resizable) .field("decorations", &self.decorations) .field("transparent", &self.transparent) - .field("always_on_top", &self.always_on_top) + .field("level", &self.level) .field("icon", &self.icon.is_some()) .field("platform_specific", &self.platform_specific) .finish() @@ -121,10 +121,6 @@ impl Window { let (width, height) = self.size; - let window_level = match self.always_on_top { - true => WindowLevel::AlwaysOnTop, - false => WindowLevel::Normal, - }; window_builder = window_builder .with_title(title) .with_inner_size(winit::dpi::LogicalSize { width, height }) @@ -132,7 +128,7 @@ impl Window { .with_decorations(self.decorations) .with_transparent(self.transparent) .with_window_icon(self.icon.and_then(conversion::icon)) - .with_window_level(window_level) + .with_window_level(conversion::window_level(self.level)) .with_visible(self.visible); if let Some(position) = conversion::position( @@ -211,7 +207,7 @@ impl Default for Window { resizable: true, decorations: true, transparent: false, - always_on_top: false, + level: Level::default(), icon: None, platform_specific: Default::default(), } -- cgit From f0788b9f373f44248e55b068d9d0d494d628ba93 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 25 May 2023 23:18:50 +0200 Subject: Replace `change_always_on_top` action with `change_level` --- winit/src/application.rs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'winit/src') diff --git a/winit/src/application.rs b/winit/src/application.rs index 1141ba27..4147be17 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -26,7 +26,6 @@ use crate::{Clipboard, Error, Proxy, Settings}; use futures::channel::mpsc; use std::mem::ManuallyDrop; -use winit::window::WindowLevel; #[cfg(feature = "trace")] pub use profiler::Profiler; @@ -795,12 +794,8 @@ pub fn run_command( window::Action::GainFocus => { window.focus_window(); } - window::Action::ChangeAlwaysOnTop(on_top) => { - let level = match on_top { - true => WindowLevel::AlwaysOnTop, - false => WindowLevel::Normal, - }; - window.set_window_level(level); + window::Action::ChangeLevel(level) => { + window.set_window_level(conversion::window_level(level)); } window::Action::FetchId(tag) => { proxy -- cgit From 70fd296ccc69ae135bfbe693b8404d5409ae4332 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 25 May 2023 23:20:26 +0200 Subject: Remove unnecessary newline --- winit/src/settings/windows.rs | 1 - 1 file changed, 1 deletion(-) (limited to 'winit/src') diff --git a/winit/src/settings/windows.rs b/winit/src/settings/windows.rs index ce18da75..45d753bd 100644 --- a/winit/src/settings/windows.rs +++ b/winit/src/settings/windows.rs @@ -1,5 +1,4 @@ //! Platform specific settings for Windows. - use raw_window_handle::RawWindowHandle; /// The platform specific window settings of an application. -- cgit