From 212b6217601fe093f419e6d7373b7d7ff5385818 Mon Sep 17 00:00:00 2001 From: frederik-uni <147479464+frederik-uni@users.noreply.github.com> Date: Wed, 23 Oct 2024 11:10:12 +0200 Subject: [PATCH] iOS: Support putting UI next to the dynamic island (#5211) winit::Window::inner_size returns size of safe area on iOS. use winit::Window::outer_size on iOS The dimensions of outer_size include the title bar and borders, but as far as I know there is no way to actually display the title bar or borders on iOS so it should be fine. * Closes #3547 * [X] I have followed the instructions in the PR template --------- Co-authored-by: Emil Ernerfeldt --- crates/egui-winit/src/lib.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/crates/egui-winit/src/lib.rs b/crates/egui-winit/src/lib.rs index 1980376b97a2..a78339d01fe0 100644 --- a/crates/egui-winit/src/lib.rs +++ b/crates/egui-winit/src/lib.rs @@ -36,7 +36,14 @@ use winit::{ }; pub fn screen_size_in_pixels(window: &Window) -> egui::Vec2 { - let size = window.inner_size(); + let size = if cfg!(target_os = "ios") { + // `outer_size` Includes the area behind the "dynamic island". + // It is up to the eframe user to make sure the dynamic island doesn't cover anything important. + // That will be easier once https://github.com/rust-windowing/winit/pull/3890 lands + window.outer_size() + } else { + window.inner_size() + }; egui::vec2(size.width as f32, size.height as f32) }