Skip to main content

ListState

Struct ListState 

Source
pub struct ListState(/* private fields */);
Expand description

The list state that views must hold on behalf of the list element.

Implementations§

Source§

impl ListState

Source

pub fn new( item_count: usize, alignment: ListAlignment, overdraw: Pixels, ) -> Self

Construct a new list state, for storage on a view.

The overdraw parameter controls how much extra space is rendered above and below the visible area. Elements within this area will be measured even though they are not visible. This can help ensure that the list doesn’t flicker or pop in when scrolling.

Source

pub fn measure_all(self) -> Self

Set the list to measure all items in the list in the first layout phase.

This is useful for ensuring that the scrollbar size is correct instead of based on only rendered elements.

Source

pub fn reset(&self, element_count: usize)

Reset this instantiation of the list state.

Note that this will cause scroll events to be dropped until the next paint.

Source

pub fn remeasure(&self)

Remeasure all items while preserving proportional scroll position.

Use this when item heights may have changed (e.g., font size changes) but the number and identity of items remains the same.

Source

pub fn remeasure_items(&self, range: Range<usize>)

Mark items in range as needing remeasurement while preserving the current scroll position. Unlike Self::splice, this does not change the number of items or blow away logical_scroll_top.

Use this when an item’s content has changed and its rendered height may be different (e.g., streaming text, tool results loading), but the item itself still exists at the same index.

Source

pub fn item_count(&self) -> usize

The number of items in this list.

Source

pub fn is_scrolled_to_end(&self) -> Option<bool>

Whether the list is scrolled to the end, or None if the list is not scrollable or the total content height is not yet known.

Source

pub fn splice(&self, old_range: Range<usize>, count: usize)

Inform the list state that the items in old_range have been replaced by count new items that must be recalculated.

Source

pub fn splice_focusable( &self, old_range: Range<usize>, focus_handles: impl IntoIterator<Item = Option<FocusHandle>>, )

Register with the list state that the items in old_range have been replaced by new items. As opposed to Self::splice, this method allows an iterator of optional focus handles to be supplied to properly integrate with items in the list that can be focused. If a focused item is scrolled out of view, the list will continue to render it to allow keyboard interaction.

Source

pub fn set_scroll_handler( &self, handler: impl FnMut(&ListScrollEvent, &mut Window, &mut App) + 'static, )

Set a handler that will be called when the list is scrolled.

Source

pub fn logical_scroll_top(&self) -> ListOffset

Get the current scroll offset, in terms of the list’s items.

Source

pub fn scroll_by(&self, distance: Pixels)

Scroll the list by the given offset

Source

pub fn scroll_to_end(&self)

Scroll the list to the very end (past the last item).

Unlike [scroll_to_reveal_item], this uses the total item count as the anchor, so the list’s layout pass will walk backwards from the end and always show the bottom of the last item — even when that item is still growing (e.g. during streaming).

Source

pub fn set_follow_mode(&self, mode: FollowMode)

Set the follow mode for the list. In Tail mode, the list will auto-scroll to the end and re-engage after the user scrolls back to the bottom. In Normal mode, no automatic following occurs.

Source

pub fn is_following_tail(&self) -> bool

Returns whether the list is currently actively following the tail (snapping to the end on each layout).

Source

pub fn scroll_to(&self, scroll_top: ListOffset)

Scroll the list to the given offset

Source

pub fn scroll_to_reveal_item(&self, ix: usize)

Scroll the list to the given item, such that the item is fully visible.

Source

pub fn bounds_for_item(&self, ix: usize) -> Option<Bounds<Pixels>>

Get the bounds for the given item in window coordinates, if it’s been rendered.

Source

pub fn scrollbar_drag_started(&self)

Call this method when the user starts dragging the scrollbar.

This will prevent the height reported to the scrollbar from changing during the drag as items in the overdraw get measured, and help offset scroll position changes accordingly.

Source

pub fn scrollbar_drag_ended(&self)

Called when the user stops dragging the scrollbar.

See scrollbar_drag_started.

Source

pub fn set_offset_from_scrollbar(&self, point: Point<Pixels>)

Set the offset from the scrollbar

Source

pub fn max_offset_for_scrollbar(&self) -> Point<Pixels>

Returns the maximum scroll offset according to the items we have measured. This value remains constant while dragging to prevent the scrollbar from moving away unexpectedly.

Source

pub fn scroll_px_offset_for_scrollbar(&self) -> Point<Pixels>

Returns the current scroll offset adjusted for the scrollbar

Source

pub fn viewport_bounds(&self) -> Bounds<Pixels>

Return the bounds of the viewport in pixels.

Trait Implementations§

Source§

impl Clone for ListState

Source§

fn clone(&self) -> ListState

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 ListState

Source§

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

Formats the value using the given formatter. 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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more