mirror of
https://github.com/emilk/egui.git
synced 2026-08-29 04:40:03 -04:00
Add support for the safe area on iOS (#7578)
This PR is a continuation of #4915 by @frederik-uni and @lucasmerlin that introduces support for keeping egui content within the 'safe area' on iOS (avoiding the notch / dynamic island / menu bar etc.), with the following changes: - `SafeArea` now wraps `MarginF32` and has been renamed to `SafeAreaInsets` to clarify its purpose. - `InputState::screen_rect` is now marked as deprecated in favour of either `viewport_rect` (which contains the entire screen), or `content_rect` (which is the viewport rect with the safe area insets removed). - I added some comments to the safe area insets logic pointing out the [safe area API coming in winit v0.31](https://github.com/rust-windowing/winit/issues/3910). --------- Co-authored-by: frederik-uni <147479464+frederik-uni@users.noreply.github.com> Co-authored-by: Lucas Meurer <hi@lucasmerlin.me> Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
This commit is contained in:
@@ -236,7 +236,7 @@ impl RectAlign {
|
||||
}
|
||||
|
||||
/// Look for the first alternative [`RectAlign`] that allows the child rect to fit
|
||||
/// inside the `screen_rect`.
|
||||
/// inside the `content_rect`.
|
||||
///
|
||||
/// If no alternative fits, the first is returned.
|
||||
/// If no alternatives are given, `None` is returned.
|
||||
@@ -246,7 +246,7 @@ impl RectAlign {
|
||||
/// - [`RectAlign::MENU_ALIGNS`] for the 12 common menu positions
|
||||
pub fn find_best_align(
|
||||
values_to_try: impl Iterator<Item = Self>,
|
||||
screen_rect: Rect,
|
||||
content_rect: Rect,
|
||||
parent_rect: Rect,
|
||||
gap: f32,
|
||||
expected_size: Vec2,
|
||||
@@ -258,7 +258,7 @@ impl RectAlign {
|
||||
|
||||
let suggested_popup_rect = align.align_rect(&parent_rect, expected_size, gap);
|
||||
|
||||
if screen_rect.contains_rect(suggested_popup_rect) {
|
||||
if content_rect.contains_rect(suggested_popup_rect) {
|
||||
return Some(align);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user