summaryrefslogtreecommitdiffstats
path: root/winit
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-12-06 04:28:06 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2025-01-06 20:13:51 +0100
commita0acaba86650d52e59dd50ac8b6863e26666b90b (patch)
tree90d5d0c9316fdbd8afe49aa5dfc0874b1e36858a /winit
parentf2c9b6b2ffc50d67d9789e77cb55eeb2a0ebe470 (diff)
downloadiced-a0acaba86650d52e59dd50ac8b6863e26666b90b.tar.gz
iced-a0acaba86650d52e59dd50ac8b6863e26666b90b.tar.bz2
iced-a0acaba86650d52e59dd50ac8b6863e26666b90b.zip
Use "outer" positions in all window-related operations
Diffstat (limited to 'winit')
-rw-r--r--winit/src/program.rs17
-rw-r--r--winit/src/program/window_manager.rs2
2 files changed, 17 insertions, 2 deletions
diff --git a/winit/src/program.rs b/winit/src/program.rs
index 26b713f3..cc19a4e0 100644
--- a/winit/src/program.rs
+++ b/winit/src/program.rs
@@ -508,10 +508,25 @@ where
log::info!("Window attributes for id `{id:#?}`: {window_attributes:#?}");
+ // On macOS, the `position` in `WindowAttributes` represents the "inner"
+ // position of the window; while on other platforms it's the "outer" position.
+ // We fix the inconsistency on macOS by positioning the window after creation.
+ #[cfg(target_os = "macos")]
+ let mut window_attributes = window_attributes;
+
+ #[cfg(target_os = "macos")]
+ let position =
+ window_attributes.position.take();
+
let window = event_loop
.create_window(window_attributes)
.expect("Create window");
+ #[cfg(target_os = "macos")]
+ if let Some(position) = position {
+ window.set_outer_position(position);
+ }
+
#[cfg(target_arch = "wasm32")]
{
use winit::platform::web::WindowExtWebSys;
@@ -1310,7 +1325,7 @@ fn run_action<P, C>(
if let Some(window) = window_manager.get(id) {
let position = window
.raw
- .inner_position()
+ .outer_position()
.map(|position| {
let position = position
.to_logical::<f32>(window.raw.scale_factor());
diff --git a/winit/src/program/window_manager.rs b/winit/src/program/window_manager.rs
index 451b2caf..a3c991df 100644
--- a/winit/src/program/window_manager.rs
+++ b/winit/src/program/window_manager.rs
@@ -165,7 +165,7 @@ where
{
pub fn position(&self) -> Option<Point> {
self.raw
- .inner_position()
+ .outer_position()
.ok()
.map(|position| position.to_logical(self.raw.scale_factor()))
.map(|position| Point {