Skip to main content

ListSource

Struct ListSource 

Source
pub struct ListSource {
    pub first_visible: Option<Rc<dyn Fn(usize)>>,
    pub len: Rc<dyn Fn() -> usize>,
    pub token_at: Rc<dyn Fn(usize) -> u64>,
    pub bind_row: Rc<dyn Fn(usize, RawHandle)>,
    pub recycle: Rc<dyn Fn(RawHandle)>,
    pub release: Rc<dyn Fn(RawHandle)>,
    pub layout_cell: Rc<dyn Fn(RawHandle, f64)>,
    pub cell_height: Rc<dyn Fn(RawHandle) -> f64>,
    pub reorder: Option<ListReorder>,
    pub delete: Option<ListDelete>,
    pub swipe: Option<ListSwipe>,
}
Expand description

The synchronous row-pull closures for recycling lists (docs/list.md, §10). day-core injects one per LIST host via Toolkit::attach_list; a recycling backend stores it and calls it from its native data-source (on the UI thread, outside any day-core borrow). Each closure re-enters day-core, so, unlike EventSink, these run to completion synchronously (bind_row even flushes + lays out the row before returning, so the host can measure the cell immediately).

Fields§

§first_visible: Option<Rc<dyn Fn(usize)>>

Report the first actually visible row (exclude overscan). Enqueue-only; optional, so hosts without a viewport binding incur no app event work.

§len: Rc<dyn Fn() -> usize>

Current row count.

§token_at: Rc<dyn Fn(usize) -> u64>

Stable identity token for the row at index (for native diffing / animation).

§bind_row: Rc<dyn Fn(usize, RawHandle)>

Build (first use of this cell) or rebind (recycled cell) row index into the native cell.

§recycle: Rc<dyn Fn(RawHandle)>

The native cell left the viewport; Day may drop per-cell bookkeeping (optional).

§release: Rc<dyn Fn(RawHandle)>

The native host is done with this cell for good (a GtkListItemFactory::teardown, a UITableViewCell deallocating): Day disposes the row it built there, its scope, nodes and element ids. Without this a host that discards cells, as every pool does on a far jump, leaves one dead row behind in day-core per discarded cell. Safe inside a day-core borrow (the work is held for the borrow’s end) and for a cell Day never saw.

§layout_cell: Rc<dyn Fn(RawHandle, f64)>

Re-lay the row bound to this cell at width, called from the cell’s own native layout pass, the hook TreeSource::layout_cell already gives trees. day-core lays a row at the LIST’s width first, which is right wherever the cell is the row itself; a backend whose native row wraps the cell in chrome (GtkListView’s themed row node pads it) corrects it here, so the row fits the cell the platform gave it instead of holding the whole list wider than its frame. Skips quietly when called inside a day-core borrow (a snapshot pass).

§cell_height: Rc<dyn Fn(RawHandle) -> f64>

The height day-core last laid the row bound to this cell at: the row’s own height, padding included, as RowHeight resolves it. A backend whose cell measures itself (GtkListView’s DayCell) reports it as the cell’s height, so a padded row keeps its bottom padding rather than the height of its last child’s frame. 0.0 before the row’s first layout, or inside a day-core borrow.

§reorder: Option<ListReorder>

Drag-to-reorder closures, present when ListProps::reorderable (docs/list.md). None on non-reorderable lists; backends must not enable their drag machinery without it.

§delete: Option<ListDelete>

Swipe-to-delete closures, present when ListProps::deletable (docs/list.md). None on non-deletable lists; backends must not offer their delete affordance without it.

§swipe: Option<ListSwipe>

Swipe-actions closures, present when ListProps::swipe_actions (docs/list.md). None on lists that declared none; backends must not install their row-action machinery without it.

Trait Implementations§

Source§

impl Clone for ListSource

Source§

fn clone(&self) -> ListSource

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

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