Skip to main content

NavPatch

Enum NavPatch 

Source
pub enum NavPatch {
    Pushed {
        title: String,
        immersive: bool,
    },
    Popped,
    Title(String),
    GuardTop(bool),
    Presentation(NavPresentation),
    Select(usize),
    Reorder(Vec<usize>),
    ListVisible(bool),
    ListInStack(bool),
}
Expand description

Applied to the nav host after a page child is attached / before it is removed; the toolkit animates its native presentation accordingly.

Variants§

§

Pushed

The just-attached last page child became the top of the stack. immersive marks a page that keeps the floating transparent chrome on backends with an immersive nav mode (day-android edge-to-edge today; ignored elsewhere). Unmarked pages get the standard opaque bar.

Fields

§title: String
§immersive: bool
§

Popped

The top page is about to be removed; present its predecessor.

§

Title(String)

Current top-of-stack title changed.

§

GuardTop(bool)

The top page has a back guard (NavStack::on_back, docs/navigation.md): while true, the toolkit must not auto-pop on a native back gesture/button but route it to Day as Event::NavBack { already_popped: false } so the app’s guard decides. On backends whose back already routes through Day (AppKit/Qt/XAML/web custom headers) this is a no-op; iOS disables the swipe, Android holds its callback, GTK sets the page can-pop=false, ArkUI consumes onBackPressed.

§

Presentation(NavPresentation)

Re-present the host: the window’s size class crossed a breakpoint, or the app wrote a new presentation. The page children do not change: the toolkit rebuilds its chrome and re-homes the pages it already has, each one landing by its NavPageProps::pane. Rebuilding them instead would drop scroll offsets, field focus, and every native animation in flight, which is why this is a patch and not a rebuild.

Backends with no split container ignore it and stay stacked.

§

Select(usize)

Show the resident Pane::Detail page at this index, counting the host’s detail children in attach order. The counterpart to Self::Pushed/Self::Popped for the presentations where pages are resident rather than stacked (NavPresentation::rows_are_chrome): a tab bar switches between pages that all stay alive, so there is nothing to push and nothing to pop.

Applied without re-emitting crate::Event::SelectionChanged, per the from-native echo rule: this is the programmatic-sync direction.

A backend drawing a stacked presentation never receives it; the pieces layer sends push/pop there instead.

§

Reorder(Vec<usize>)

Reorder resident detail pages by their previous indices without rebuilding them.

§

ListVisible(bool)

Show or collapse the content-list pane (Pane::List), the per-destination visibility switch (Nav::content_list_for, docs/navigation.md): a nav host section that spans the whole detail area (a settings page) collapses the pane, and selecting a list-backed section brings it back. Only sent to hosts whose NavProps::list_width is set. Applied directly, not through an animator proxy: the screenshot step captures the instant the patch returns (the sidebar-toggle rule).

§

ListInStack(bool)

Stacked presentations on a merged-pane backend (crate::Cap::NavContentList Emulated) only: the resident Pane::List page joins (true) or leaves (false) the navigation stack directly above the sidebar root. The pieces layer sends it as the selection gains or loses a list-backed destination; the backend realizes the membership change through its platform’s navigation APIs (UIKit: showColumn(.supplementary) / a pop to the root; never a manual splice, which destroys the split’s collapse bookkeeping). Never sent to Native backends (their pane persists through every presentation) nor while split.

Trait Implementations§

Source§

impl Clone for NavPatch

Source§

fn clone(&self) -> NavPatch

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 Debug for NavPatch

Source§

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

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

impl PartialEq for NavPatch

Source§

fn eq(&self, other: &NavPatch) -> 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 NavPatch

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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
Day API ↩ Guides· daybrite.dev