summaryrefslogtreecommitdiffstats
path: root/winit
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-05-10 22:16:35 +0200
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-05-10 22:16:35 +0200
commitb19e95fa1844ca726aa5761f2d331fd780854bc6 (patch)
tree87edb02b3a3485faf526734ab1a715df0a9801a2 /winit
parent718fe5b7de6c705b1797c49d382182182acdbe80 (diff)
downloadiced-b19e95fa1844ca726aa5761f2d331fd780854bc6.tar.gz
iced-b19e95fa1844ca726aa5761f2d331fd780854bc6.tar.bz2
iced-b19e95fa1844ca726aa5761f2d331fd780854bc6.zip
Add `SpecificWith` variant to `window::Position`
Diffstat (limited to 'winit')
-rw-r--r--winit/src/conversion.rs29
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();