Skip to main content

WindowInsets

Struct WindowInsets 

Source
pub struct WindowInsets {
    pub padding: Insets,
    pub view_insets: Insets,
    pub view_padding: Insets,
}
Expand description

The window insets, split by nature: padding is the area permanently taken by the system (status and navigation bars, the notch — all static), while view_insets is the area covered by transient UI, chiefly the soft keyboard. Avoiding the keyboard means keeping content clear of WindowInsets::safe.

Fields§

§padding: Insets

Permanent system areas (bars, notch) that are still worth avoiding: the intrusions, less whatever view_insets already covers.

Zero at the bottom while the keyboard is up, because the navigation bar it hides is not an edge anything needs to stay clear of any more. Padding a screen by it as well would leave a strip of nothing between the content and the keyboard.

§view_insets: Insets

Transient areas (the soft keyboard); in practice only the bottom moves.

Measured from the window edge, so it already includes whatever bar it covers.

§view_padding: Insets

The intrusions ignoring anything transient: what the notch and the bars take whether or not the keyboard is over them.

The one that does not move when the keyboard opens, which is why a layout that must not shift reads this rather than padding.

Implementations§

Source§

impl WindowInsets

Source

pub const ZERO: Self

No insets at all.

Source

pub const fn bars(intrusions: Insets) -> Self

The intrusions of a surface with nothing transient over them: the bars and the notch, and no keyboard.

Here so that nobody has to assemble the three by hand and get them disagreeing. padding and view_padding are the same thing while there is no keyboard, and a hand-written literal that says otherwise describes a surface no platform can report.

Source

pub fn safe(&self) -> Insets

The total area to avoid: the per-side maximum of the two kinds. The keyboard covers the navigation bar, so they are not added together.

Source

pub fn from_baseline(baseline: Insets, current: Insets) -> WindowInsets

Splits raw insets into (padding, view_insets) given a keyboard-free reference. A bottom excess beyond that reference signals the keyboard; view_insets.bottom then measures the total occlusion from the window edge, bar included. That is what makes combining the two with max correct.

Trait Implementations§

Source§

impl Clone for WindowInsets

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for WindowInsets

Source§

impl Debug for WindowInsets

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for WindowInsets

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl PartialEq for WindowInsets

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for WindowInsets

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.