Trait kas::Scrollable
source · pub trait Scrollable: Widget {
// Required methods
fn scroll_axes(&self, size: Size) -> (bool, bool);
fn max_scroll_offset(&self) -> Offset;
fn scroll_offset(&self) -> Offset;
fn set_scroll_offset(
&mut self,
cx: &mut EventCx<'_>,
offset: Offset
) -> Offset;
}
Expand description
Additional functionality on scrollable widgets
This trait should be implemented by widgets supporting scrolling, enabling a parent to control scrolling.
If the widget scrolls itself it should set a scroll action via EventCx::set_scroll
.
Required Methods§
sourcefn scroll_axes(&self, size: Size) -> (bool, bool)
fn scroll_axes(&self, size: Size) -> (bool, bool)
Given size size
, returns whether (horiz, vert)
scrolling is required
Note: this is called before Layout::set_rect
, thus must may need
to perform independent calculation of the content size.
sourcefn max_scroll_offset(&self) -> Offset
fn max_scroll_offset(&self) -> Offset
Get the maximum scroll offset
Note: the minimum scroll offset is always zero.
Note: this is called immediately after Layout::set_rect
, thus should
be updated there (as well as by Events::update
if appropriate).
sourcefn scroll_offset(&self) -> Offset
fn scroll_offset(&self) -> Offset
Get the current scroll offset
Contents of the scroll region are translated by this offset (to convert coordinates from the outer region to the scroll region, add this offset).
The offset is restricted between Offset::ZERO
and
Self::max_scroll_offset
.
sourcefn set_scroll_offset(&mut self, cx: &mut EventCx<'_>, offset: Offset) -> Offset
fn set_scroll_offset(&mut self, cx: &mut EventCx<'_>, offset: Offset) -> Offset
Set the scroll offset
This may be used for programmatic scrolling, e.g. by a wrapping widget with scroll controls. Note that calling this method directly on the scrolling widget will not update any controls in a wrapping widget.
The offset is clamped to the available scroll range and applied. The resulting offset is returned.