pub struct ScrollRegion<W: Viewport + Widget> { /* private fields */ }Expand description
A region which supports scrolling of content through a viewport
This region supports scrolling via mouse wheel and click/touch drag as well as using scroll bars (optional).
§Size
Kas’s size model allows widgets to advertise two sizes: the minimum size and the ideal size. This distinction is used to full effect here:
- The ideal size is that of the inner content, thus avoiding any need to scroll content.
- The minimum size is an arbitrary size defined by the theme
(
SizeCx::min_scroll_size).
§Generic usage
Though this widget is generic over any Viewport, it is primarily
intended for usage with ClipRegion; the primary constructor
Self::new_clip uses this while Self::new_viewport allows usage
with other implementations of Viewport.
It should be noted that scroll bar positioning does not respect the inner widget’s margins, since the result looks poor when content is scrolled. Instead the inner widget should force internal margins by wrapping contents with a (zero-sized) frame.
§Messages
kas::messages::SetScrollOffset may be used to set the scroll offset.
Implementations§
Source§impl<Inner: Widget> ScrollRegion<ClipRegion<Inner>>
impl<Inner: Widget> ScrollRegion<ClipRegion<Inner>>
Sourcepub fn new_clip(inner: Inner) -> Self
pub fn new_clip(inner: Inner) -> Self
Construct a scroll region using a ClipRegion
This is probably the constructor you want unless the inner widget
already implements Viewport.
Uses ScrollBarMode::Auto by default.
Source§impl<W: Viewport + Widget> ScrollRegion<W>
impl<W: Viewport + Widget> ScrollRegion<W>
Sourcepub fn new_viewport(inner: W) -> Self
pub fn new_viewport(inner: W) -> Self
Construct over a Viewport
Uses ScrollBarMode::Auto by default.
Sourcepub fn with_fixed_bars(self, horiz: bool, vert: bool) -> Selfwhere
Self: Sized,
pub fn with_fixed_bars(self, horiz: bool, vert: bool) -> Selfwhere
Self: Sized,
Set fixed visibility of scroll bars (inline)
Sourcepub fn with_invisible_bars(self, horiz: bool, vert: bool) -> Selfwhere
Self: Sized,
pub fn with_invisible_bars(self, horiz: bool, vert: bool) -> Selfwhere
Self: Sized,
Set fixed, invisible bars (inline)
In this mode scroll bars are either enabled but invisible until mouse over or disabled completely.
Sourcepub fn scroll_bar_mode(&self) -> ScrollBarMode
pub fn scroll_bar_mode(&self) -> ScrollBarMode
Get current mode of scroll bars
Sourcepub fn set_scroll_bar_mode(
&mut self,
cx: &mut ConfigCx<'_>,
mode: ScrollBarMode,
)
pub fn set_scroll_bar_mode( &mut self, cx: &mut ConfigCx<'_>, mode: ScrollBarMode, )
Set scroll bar mode
Trait Implementations§
Source§impl<W: Default + Viewport + Widget> Default for ScrollRegion<W>
impl<W: Default + Viewport + Widget> Default for ScrollRegion<W>
Source§fn default() -> ScrollRegion<W>
fn default() -> ScrollRegion<W>
Source§impl<W: Viewport + Widget> Events for ScrollRegion<W>
impl<W: Viewport + Widget> Events for ScrollRegion<W>
Source§fn mouse_over_icon(&self) -> Option<CursorIcon>
fn mouse_over_icon(&self) -> Option<CursorIcon>
Source§fn handle_event(
&mut self,
cx: &mut EventCx<'_>,
data: &Self::Data,
event: Event<'_>,
) -> IsUsed
fn handle_event( &mut self, cx: &mut EventCx<'_>, data: &Self::Data, event: Event<'_>, ) -> IsUsed
Source§fn handle_messages(&mut self, cx: &mut EventCx<'_>, data: &Self::Data)
fn handle_messages(&mut self, cx: &mut EventCx<'_>, data: &Self::Data)
Source§fn handle_resize(
&mut self,
cx: &mut ConfigCx<'_>,
_: &Self::Data,
) -> Option<ActionResize>
fn handle_resize( &mut self, cx: &mut ConfigCx<'_>, _: &Self::Data, ) -> Option<ActionResize>
Source§fn handle_scroll(
&mut self,
cx: &mut EventCx<'_>,
data: &Self::Data,
scroll: Scroll,
)
fn handle_scroll( &mut self, cx: &mut EventCx<'_>, data: &Self::Data, scroll: Scroll, )
Source§const REDRAW_ON_MOUSE_OVER: bool = false
const REDRAW_ON_MOUSE_OVER: bool = false
Source§fn post_configure(&mut self, cx: &mut ConfigCx<'_>)
fn post_configure(&mut self, cx: &mut ConfigCx<'_>)
Source§fn update(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)
fn update(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)
Source§fn recurse_indices(&self) -> ChildIndices
fn recurse_indices(&self) -> ChildIndices
Source§fn handle_mouse_over(&mut self, cx: &mut EventCx<'_>, state: bool)
fn handle_mouse_over(&mut self, cx: &mut EventCx<'_>, state: bool)
Source§impl<W: Viewport + Widget> Layout for ScrollRegion<W>
impl<W: Viewport + Widget> Layout for ScrollRegion<W>
Source§impl<W: Viewport + Widget> Tile for ScrollRegion<W>
impl<W: Viewport + Widget> Tile for ScrollRegion<W>
Source§fn translation(&self, index: usize) -> Offset
fn translation(&self, index: usize) -> Offset
index relative to this widget Read moreSource§fn get_child(&self, index: usize) -> Option<&dyn Tile>
fn get_child(&self, index: usize) -> Option<&dyn Tile>
dyn Tile, if available Read moreSource§fn child_indices(&self) -> ChildIndices
fn child_indices(&self) -> ChildIndices
Auto Trait Implementations§
impl<W> Freeze for ScrollRegion<W>where
W: Freeze,
impl<W> RefUnwindSafe for ScrollRegion<W>where
W: RefUnwindSafe,
impl<W> !Send for ScrollRegion<W>
impl<W> !Sync for ScrollRegion<W>
impl<W> Unpin for ScrollRegion<W>where
W: Unpin,
impl<W> UnwindSafe for ScrollRegion<W>where
W: UnwindSafe,
Blanket Implementations§
Source§impl<W> AdaptWidget for Wwhere
W: Widget,
impl<W> AdaptWidget for Wwhere
W: Widget,
Source§fn pack(self, hints: AlignHints) -> Pack<Self>
fn pack(self, hints: AlignHints) -> Pack<Self>
Source§fn with_stretch(
self,
horiz: impl Into<Option<Stretch>>,
vert: impl Into<Option<Stretch>>,
) -> WithStretch<Self>
fn with_stretch( self, horiz: impl Into<Option<Stretch>>, vert: impl Into<Option<Stretch>>, ) -> WithStretch<Self>
Source§fn with_margin_style(self, style: MarginStyle) -> WithMarginStyle<Self>
fn with_margin_style(self, style: MarginStyle) -> WithMarginStyle<Self>
Source§fn on_configure<F>(self, f: F) -> AdaptEvents<Self>where
F: Fn(&mut AdaptConfigCx<'_, '_>, &mut Self) + 'static,
fn on_configure<F>(self, f: F) -> AdaptEvents<Self>where
F: Fn(&mut AdaptConfigCx<'_, '_>, &mut Self) + 'static,
Events::configure Read moreSource§fn on_update<F>(self, f: F) -> AdaptEvents<Self>
fn on_update<F>(self, f: F) -> AdaptEvents<Self>
Events::update Read moreSource§fn on_message<M, H>(self, handler: H) -> AdaptEvents<Self>
fn on_message<M, H>(self, handler: H) -> AdaptEvents<Self>
M Read moreSource§fn map_message<M, N, H>(self, handler: H) -> AdaptEvents<Self>
fn map_message<M, N, H>(self, handler: H) -> AdaptEvents<Self>
Source§fn on_messages<H>(self, handler: H) -> AdaptEvents<Self>
fn on_messages<H>(self, handler: H) -> AdaptEvents<Self>
Source§fn with_min_size_px(self, w: i32, h: i32) -> Reserve<Self>
fn with_min_size_px(self, w: i32, h: i32) -> Reserve<Self>
Source§fn with_min_size_em(self, w: f32, h: f32) -> Reserve<Self>
fn with_min_size_em(self, w: f32, h: f32) -> Reserve<Self>
Source§fn with_label<D, T>(self, direction: D, label: T) -> WithLabel<Self, D>
fn with_label<D, T>(self, direction: D, label: T) -> WithLabel<Self, D>
Source§impl<W> AdaptWidgetAny for W
impl<W> AdaptWidgetAny for W
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
Source§impl<S, T> CastApprox<T> for Swhere
T: ConvApprox<S>,
impl<S, T> CastApprox<T> for Swhere
T: ConvApprox<S>,
Source§fn try_cast_approx(self) -> Result<T, Error>
fn try_cast_approx(self) -> Result<T, Error>
Source§fn cast_approx(self) -> T
fn cast_approx(self) -> T
Source§impl<S, T> CastFloat<T> for Swhere
T: ConvFloat<S>,
impl<S, T> CastFloat<T> for Swhere
T: ConvFloat<S>,
Source§fn cast_trunc(self) -> T
fn cast_trunc(self) -> T
Source§fn cast_nearest(self) -> T
fn cast_nearest(self) -> T
Source§fn cast_floor(self) -> T
fn cast_floor(self) -> T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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.Source§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.Source§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.Source§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.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<W> TileExt for W
impl<W> TileExt for W
Source§fn is_configured(&self) -> bool
fn is_configured(&self) -> bool
Source§fn is_strict_ancestor_of(&self, id: &Id) -> bool
fn is_strict_ancestor_of(&self, id: &Id) -> bool
id is not self and is a descendant Read more