pub struct Scroll(/* private fields */);
Expand description
W
A container that can pan and zoom a child of any size.
§Shorthand
The Scroll!
macro provides shorthand syntax:
Scroll!($child:expr)
creates a default scroll with the child widget.Scroll!($mode:ident, $child:expr)
Creates a scroll with one of theScrollMode
const and child widget.Scroll!($mode:expr, $child:expr)
Creates a scroll with theScrollMode
and child widget.
Implementations§
source§impl Scroll
impl Scroll
sourcepub fn smooth_scrolling(&self, config: impl IntoVar<SmoothScrolling>)
pub fn smooth_scrolling(&self, config: impl IntoVar<SmoothScrolling>)
P
Smooth scrolling config.
Defines the easing animation applied to scroll offset and zoom value changes.
This property sets the SMOOTH_SCROLLING_VAR
.
source§impl Scroll
impl Scroll
sourcepub fn scroll_to_focused_mode(&self, mode: impl IntoVar<Option<ScrollToMode>>)
pub fn scroll_to_focused_mode(&self, mode: impl IntoVar<Option<ScrollToMode>>)
P
Scroll-to mode used by scroll widgets when scrolling to make the focused child visible.
Default is minimal 0dip on all sides, set to None
to disable.
Note that SCROLL_TO_CMD
requests have priority over scroll-to focused if both requests
happen in the same event cycle.
This property sets the SCROLL_TO_FOCUSED_MODE_VAR
.
source§impl Scroll
impl Scroll
sourcepub fn auto_hide_extra(&self, extra: impl IntoVar<SideOffsets>)
pub fn auto_hide_extra(&self, extra: impl IntoVar<SideOffsets>)
P
Extra space added to the viewport auto-hide rectangle.
The scroll sets the viewport plus these offsets as the FrameBuilder::auto_hide_rect
, this value is used
for optimizations from the render culling to lazy widgets.
Scrolling can use only lightweight render updates to scroll within the extra margin, so there is an exchange of performance, a larger extra space means that more widgets are rendering, but also can mean less full frame requests, if there is no other widget requesting render.
By default is 500.dip().min(100.pct())
, one full viewport extra capped at 500.
This property sets the AUTO_HIDE_EXTRA_VAR
.
source§impl Scroll
impl Scroll
sourcepub fn overscroll_color(&self, color: impl IntoVar<Rgba>)
pub fn overscroll_color(&self, color: impl IntoVar<Rgba>)
P
Color of the overscroll indicator.
The overscroll indicator appears when touch scroll tries to scroll past an edge in a dimension that can scroll.
This property sets the OVERSCROLL_COLOR_VAR
.
source§impl Scroll
impl Scroll
sourcepub fn min_zoom(&self, min: impl IntoVar<Factor>)
pub fn min_zoom(&self, min: impl IntoVar<Factor>)
P
Minimum scale allowed when ScrollMode::ZOOM
is enabled.
This property sets the MIN_ZOOM_VAR
.
source§impl Scroll
impl Scroll
sourcepub fn max_zoom(&self, max: impl IntoVar<Factor>)
pub fn max_zoom(&self, max: impl IntoVar<Factor>)
P
Maximum scale allowed when ScrollMode::ZOOM
is enabled.
This property sets the MAX_ZOOM_VAR
.
source§impl Scroll
impl Scroll
sourcepub fn zoom_wheel_origin(&self, origin: impl IntoVar<Point>)
pub fn zoom_wheel_origin(&self, origin: impl IntoVar<Point>)
P
Center point of zoom scaling done using the mouse scroll wheel.
Relative values are resolved in the viewport space. The scroll offsets so that the point in the viewport and content stays as close as possible after the scale change.
The default value (Length::Default
) is the cursor position.
This property sets the ZOOM_WHEEL_ORIGIN_VAR
source§impl Scroll
impl Scroll
sourcepub fn zoom_touch_origin(&self, origin: impl IntoVar<Point>)
pub fn zoom_touch_origin(&self, origin: impl IntoVar<Point>)
P
Center point of zoom scaling done using the touch pinch gesture.
Relative values are resolved in the viewport space. The scroll offsets so that the point in the viewport and content stays as close as possible after the scale change.
The default value (Length::Default
) is center point between the two touch contact points.
This property sets the ZOOM_TOUCH_ORIGIN_VAR
.
source§impl Scroll
impl Scroll
sourcepub fn zoom_origin(&self, origin: impl IntoVar<Point>)
pub fn zoom_origin(&self, origin: impl IntoVar<Point>)
P
Center point of zoom scaling done using mouse scroll wheel and touch gesture.
This property sets both zoom_wheel_origin
and zoom_touch_origin
to the same point.
source§impl Scroll
impl Scroll
sourcepub fn auto_scroll(&self, enabled: impl IntoVar<bool>)
pub fn auto_scroll(&self, enabled: impl IntoVar<bool>)
P
Enables or disables auto scroll on mouse middle click.
This is enabled by default, when enabled on middle click the auto_scroll_indicator
is generated and
the content auto scrolls depending on the direction the mouse pointer moves away from the indicator.
This property sets the AUTO_SCROLL_VAR
.
source§impl Scroll
impl Scroll
sourcepub fn auto_scroll_indicator(
&self,
indicator: impl IntoVar<WidgetFn<AutoScrollArgs>>,
)
pub fn auto_scroll_indicator( &self, indicator: impl IntoVar<WidgetFn<AutoScrollArgs>>, )
P
Auto scroll icon/indicator node.
The indicator
is instantiated on middle click if auto_scroll
is enabled, the node is layered as an adorner of the
scroll. All context vars and the full SCROLL
context are captured and can be used in the indicator.
Is node::default_auto_scroll_indicator
by default.
source§impl Scroll
impl Scroll
sourcepub fn horizontal_offset(&self, offset: impl IntoVar<Factor>)
pub fn horizontal_offset(&self, offset: impl IntoVar<Factor>)
P
Binds the horizontal_offset
scroll var to the property value.
The binding is bidirectional and the scroll variable is assigned on init.
Note that settings the offset directly overrides effects like smooth scrolling, prefer using the scroll commands to scroll over this property.
source§impl Scroll
impl Scroll
sourcepub fn vertical_offset(&self, offset: impl IntoVar<Factor>)
pub fn vertical_offset(&self, offset: impl IntoVar<Factor>)
P
Binds the vertical_offset
scroll var to the property value.
The binding is bidirectional and the scroll variable is assigned on init.
Note that settings the offset directly overrides effects like smooth scrolling, prefer using the scroll commands to scroll over this property.
source§impl Scroll
impl Scroll
sourcepub fn zoom_scale(&self, scale: impl IntoVar<Factor>)
pub fn zoom_scale(&self, scale: impl IntoVar<Factor>)
P
Binds the zoom_scale
scroll var to the property value.
The binding is bidirectional and the scroll variable is assigned on init.
Note that settings the offset directly overrides effects like smooth scrolling, prefer using the scroll commands to scroll over this property.
source§impl Scroll
impl Scroll
sourcepub fn widget_new() -> Self
pub fn widget_new() -> Self
Start building a new instance.
sourcepub fn widget_type() -> WidgetType
pub fn widget_type() -> WidgetType
Gets the widget type info.
source§impl Scroll
impl Scroll
sourcepub fn mode(&self, mode: impl IntoVar<ScrollMode>)
pub fn mode(&self, mode: impl IntoVar<ScrollMode>)
c
Scroll mode.
Is ScrollMode::ZOOM
by default.
source§impl Scroll
impl Scroll
sourcepub fn child_align(&self, align: impl IntoVar<Align>)
pub fn child_align(&self, align: impl IntoVar<Align>)
P
Content alignment when it is smaller then the viewport.
Note that because scrollable dimensions are unbounded Align::FILL
is implemented
differently, instead of setting the maximum constraint it sets the minimum, other
alignments and non-scrollable dimensions are implemented like normal.
sourcepub fn clip_to_bounds(&self, clip: impl IntoVar<bool>)
pub fn clip_to_bounds(&self, clip: impl IntoVar<bool>)
P
Clip content to only be visible within the scroll bounds, including under scrollbars.
Enabled by default.
Methods from Deref<Target = ScrollUnitsMix<ScrollbarFnMix<Container>>>§
sourcepub fn v_line_unit(&self, unit: impl IntoVar<Length>)
pub fn v_line_unit(&self, unit: impl IntoVar<Length>)
P
Vertical offset added when the SCROLL_DOWN_CMD
runs and removed when the SCROLL_UP_CMD
runs.
Relative lengths are relative to the viewport height.
This property sets the VERTICAL_LINE_UNIT_VAR
.
sourcepub fn h_line_unit(&self, unit: impl IntoVar<Length>)
pub fn h_line_unit(&self, unit: impl IntoVar<Length>)
P
Horizontal offset added when the SCROLL_RIGHT_CMD
runs and removed when the SCROLL_LEFT_CMD
runs.
Relative lengths are relative to the viewport width.
This property sets the HORIZONTAL_LINE_UNIT_VAR
.
sourcepub fn line_units(
&self,
horizontal: impl IntoVar<Length>,
vertical: impl IntoVar<Length>,
)
pub fn line_units( &self, horizontal: impl IntoVar<Length>, vertical: impl IntoVar<Length>, )
P
Horizontal and vertical offsets used when scrolling.
This property sets the h_line_unit
and v_line_unit
.
sourcepub fn alt_factor(&self, factor: impl IntoVar<Factor>)
pub fn alt_factor(&self, factor: impl IntoVar<Factor>)
P
Scroll unit multiplier used when alternate scrolling.
This property sets the ALT_FACTOR_VAR
.
sourcepub fn v_page_unit(&self, unit: impl IntoVar<Length>)
pub fn v_page_unit(&self, unit: impl IntoVar<Length>)
P
Vertical offset added when the PAGE_DOWN_CMD
runs and removed when the PAGE_UP_CMD
runs.
Relative lengths are relative to the viewport height.
This property sets the VERTICAL_PAGE_UNIT_VAR
.
sourcepub fn h_page_unit(&self, unit: impl IntoVar<Length>)
pub fn h_page_unit(&self, unit: impl IntoVar<Length>)
P
Horizontal offset added when the PAGE_RIGHT_CMD
runs and removed when the PAGE_LEFT_CMD
runs.
Relative lengths are relative to the viewport width.
This property sets the HORIZONTAL_PAGE_UNIT_VAR
.
sourcepub fn page_units(
&self,
horizontal: impl IntoVar<Length>,
vertical: impl IntoVar<Length>,
)
pub fn page_units( &self, horizontal: impl IntoVar<Length>, vertical: impl IntoVar<Length>, )
P
Horizontal and vertical offsets used when page-scrolling.
This property sets the h_page_unit
and v_page_unit
.
sourcepub fn h_wheel_unit(&self, unit: impl IntoVar<Length>)
pub fn h_wheel_unit(&self, unit: impl IntoVar<Length>)
P
Horizontal offset added when the mouse wheel is scrolling by lines.
The unit
value is multiplied by the MouseScrollDelta::LineDelta
x value to determinate the scroll delta.
This property sets the HORIZONTAL_WHEEL_UNIT_VAR
.
sourcepub fn v_wheel_unit(&self, unit: impl IntoVar<Length>)
pub fn v_wheel_unit(&self, unit: impl IntoVar<Length>)
P
Vertical offset added when the mouse wheel is scrolling by lines.
The unit
value is multiplied by the MouseScrollDelta::LineDelta
y value to determinate the scroll delta.
This property sets the VERTICAL_WHEEL_UNIT_VAR
`.
sourcepub fn wheel_units(
&self,
horizontal: impl IntoVar<Length>,
vertical: impl IntoVar<Length>,
)
pub fn wheel_units( &self, horizontal: impl IntoVar<Length>, vertical: impl IntoVar<Length>, )
P
Horizontal and vertical offsets used when mouse wheel scrolling.
This property sets the h_wheel_unit
and v_wheel_unit
.
sourcepub fn zoom_wheel_unit(&self, unit: impl IntoVar<Factor>)
pub fn zoom_wheel_unit(&self, unit: impl IntoVar<Factor>)
P
Scale delta added when the mouse wheel is zooming by lines.
The unit
value is multiplied by the MouseScrollDelta::LineDelta
value to determinate the scale delta.
This property sets the ZOOM_WHEEL_UNIT_VAR
.
sourcepub fn define_viewport_unit(&self, enabled: impl IntoVar<bool>)
pub fn define_viewport_unit(&self, enabled: impl IntoVar<bool>)
P
If the scroll defines its viewport size as the LayoutMetrics::viewport
for the scroll content.
This property sets the DEFINE_VIEWPORT_UNIT_VAR
.
Trait Implementations§
source§impl Deref for Scroll
impl Deref for Scroll
source§type Target = ScrollUnitsMix<ScrollbarFnMix<Container>>
type Target = ScrollUnitsMix<ScrollbarFnMix<Container>>
Auto Trait Implementations§
impl !Freeze for Scroll
impl !RefUnwindSafe for Scroll
impl Send for Scroll
impl !Sync for Scroll
impl Unpin for Scroll
impl !UnwindSafe for Scroll
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<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> 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