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 item_count(&self) -> usize

The number of items in this list.

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(&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) -> Size<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 · 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> Downcast for T
where T: Any,

Source§

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>

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)

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)

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