pub struct TreeTableViewHandle { /* private fields */ }Expand description
A handle on a mounted TreeTableView, to scroll it to a row from
outside the widget — a view-model revealing the node a search found, say.
Rows are addressed by their flat visible index, as by
TreeTableView::scroll_to_row: the position of the row among the rows
currently shown, counting the children of expanded nodes and skipping those
of collapsed ones. With pinned_ancestors
the row is revealed below the ancestors pinned over it.
Cheap to clone, valid before the view is mounted, and it survives the view’s rebuilds. Its methods never compute an offset when they are called: they record the request and ask for a layout pass, and the view applies it there, after row measurement and scroll anchoring have settled. So a structural change made in the same turn (a node expanded above the target, say) is accounted for, a request made before mount is applied at the first layout, and a later request replaces an earlier pending one. A request on a view with no rows is dropped; a row past the end reveals the last row.
let view = TreeTableView::new(model);
let handle = view.handle();
// … add the columns, `ctx.add(view)`; later, after expanding the row's
// ancestors:
handle.ensure_row_visible(42);Implementations§
Source§impl TreeTableViewHandle
impl TreeTableViewHandle
Sourcepub fn scroll_to_row(&self, row: usize)
pub fn scroll_to_row(&self, row: usize)
Scroll so that row (a flat visible index) is aligned to the top of
the viewport, as far as the scroll range allows, at the next layout
pass.
Sourcepub fn ensure_row_visible(&self, row: usize)
pub fn ensure_row_visible(&self, row: usize)
Scroll the minimum distance that makes row (a flat visible index)
fully visible, at the next layout pass; no scroll when it already is.
Trait Implementations§
Source§impl Clone for TreeTableViewHandle
impl Clone for TreeTableViewHandle
Source§fn clone(&self) -> TreeTableViewHandle
fn clone(&self) -> TreeTableViewHandle
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for TreeTableViewHandle
impl !Send for TreeTableViewHandle
impl !Sync for TreeTableViewHandle
impl !UnwindSafe for TreeTableViewHandle
impl Freeze for TreeTableViewHandle
impl Unpin for TreeTableViewHandle
impl UnsafeUnpin for TreeTableViewHandle
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
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,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.impl<T> ErasedDestructor for Twhere
T: 'static,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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