pub struct CornerInsets {
pub top_left: CornerInset,
pub top_right: CornerInset,
pub bottom_left: CornerInset,
pub bottom_right: CornerInset,
}Expand description
The inset vocabulary LayoutCtx::window_insets/PaintCtx::window_insets
return — lifted because a widget that lays itself out around the status
bar, notch, or on-screen keyboard cannot otherwise name the value those
accessors hand it. A bar laying out around the iPadOS window control
names the corner value, CornerInsets.
Window-control footprints at the four window corners, in logical pixels.
- Values are logical px (see the module docs).
- Corners are physical: frust has no RTL layout, so the shell resolves direction. In an RTL locale the iPadOS window control lands top-RIGHT.
- Each value is the extent by which a system window control protrudes
beyond the safe-area rectangle at that corner:
widthis measured inward from the safe area’s vertical edge,heightinward from its horizontal edge. A widget whose content band starts at the safe-area top therefore overlaps the corner iffheight > 0.0– whether it self-insets the top (readspadding().top) or sits under a top-consumingSafeArea(reads 0) – because in both cases the control’s bottom edge is safe-area-top +height. - Corners are never consumed and never part of
WindowInsets::padding;WindowInsets::consumingleaves them alone. - Today only the iOS shell reports them (the iPadOS 26+ window control). Android, desktop, web and iOS < 26 leave them zero.
- Accepted gap: a bar that does not consume the horizontal safe-area insets under-shifts for a control on a notched edge (no platform draws one there).
- Bars shift for overlap only when spanning the window’s left/right edges
(typical of app bars at the top). Content hosted in a detail pane, sheet,
dialog, or below other content still receives the window-wide corner values
(corners are never consumed; layout cannot see its window-space origin) and
would over-shift. Shipped bars expose
corner_shift(false)as the author’s opt-out; no automatic detection exists.
Fields§
§top_left: CornerInsetTop-left corner footprint.
top_right: CornerInsetTop-right corner footprint.
bottom_left: CornerInsetBottom-left corner footprint.
bottom_right: CornerInsetBottom-right corner footprint.
Implementations§
Source§impl CornerInsets
impl CornerInsets
Sourcepub const ZERO: CornerInsets
pub const ZERO: CornerInsets
No window control at any corner (the default).
Sourcepub const fn new(
top_left: CornerInset,
top_right: CornerInset,
bottom_left: CornerInset,
bottom_right: CornerInset,
) -> CornerInsets
pub const fn new( top_left: CornerInset, top_right: CornerInset, bottom_left: CornerInset, bottom_right: CornerInset, ) -> CornerInsets
Construct from the four corner footprints.
Trait Implementations§
Source§impl Clone for CornerInsets
impl Clone for CornerInsets
Source§fn clone(&self) -> CornerInsets
fn clone(&self) -> CornerInsets
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for CornerInsets
Source§impl Debug for CornerInsets
impl Debug for CornerInsets
Source§impl Default for CornerInsets
impl Default for CornerInsets
Source§fn default() -> CornerInsets
fn default() -> CornerInsets
Returns the “default value” for a type. Read more
Source§impl PartialEq for CornerInsets
impl PartialEq for CornerInsets
impl StructuralPartialEq for CornerInsets
Auto Trait Implementations§
impl Freeze for CornerInsets
impl RefUnwindSafe for CornerInsets
impl Send for CornerInsets
impl Sync for CornerInsets
impl Unpin for CornerInsets
impl UnsafeUnpin for CornerInsets
impl UnwindSafe for CornerInsets
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Brush for T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> StorageAccess<T> for T
impl<T> StorageAccess<T> for T
Source§fn as_borrowed(&self) -> &T
fn as_borrowed(&self) -> &T
Borrows the value.
Source§fn into_taken(self) -> T
fn into_taken(self) -> T
Takes the value.