diff options
author | 2024-05-10 22:28:08 +0200 | |
---|---|---|
committer | 2024-05-10 22:28:08 +0200 | |
commit | fa458a3009c3644300bf9475fcf8d46a67d194c6 (patch) | |
tree | 87edb02b3a3485faf526734ab1a715df0a9801a2 /winit | |
parent | 718fe5b7de6c705b1797c49d382182182acdbe80 (diff) | |
parent | b19e95fa1844ca726aa5761f2d331fd780854bc6 (diff) | |
download | iced-fa458a3009c3644300bf9475fcf8d46a67d194c6.tar.gz iced-fa458a3009c3644300bf9475fcf8d46a67d194c6.tar.bz2 iced-fa458a3009c3644300bf9475fcf8d46a67d194c6.zip |
Merge pull request #2435 from iced-rs/window/specific-with-position
Add `SpecificWith` variant to `window::Position`
Diffstat (limited to '')
-rw-r--r-- | winit/src/conversion.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs index d04fc2f1..ea33e610 100644 --- a/winit/src/conversion.rs +++ b/winit/src/conversion.rs @@ -323,6 +323,35 @@ pub fn position( y: f64::from(position.y), })) } + window::Position::SpecificWith(to_position) => { + if let Some(monitor) = monitor { + let start = monitor.position(); + + let resolution: winit::dpi::LogicalSize<f32> = + monitor.size().to_logical(monitor.scale_factor()); + + let position = to_position( + size, + Size::new(resolution.width, resolution.height), + ); + + let centered: winit::dpi::PhysicalPosition<i32> = + winit::dpi::LogicalPosition { + x: position.x, + y: position.y, + } + .to_physical(monitor.scale_factor()); + + Some(winit::dpi::Position::Physical( + winit::dpi::PhysicalPosition { + x: start.x + centered.x, + y: start.y + centered.y, + }, + )) + } else { + None + } + } window::Position::Centered => { if let Some(monitor) = monitor { let start = monitor.position(); |