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.
Properties§
Sourcepub smooth_scrolling(config: impl IntoVar<SmoothScrolling>);
pub smooth_scrolling(config: impl IntoVar<SmoothScrolling>);
Smooth scrolling config.
Defines the easing animation applied to scroll offset and zoom value changes.
This property sets the SMOOTH_SCROLLING_VAR
.
Sourcepub scroll_to_focused_mode(mode: impl IntoVar<Option<ScrollToMode>>);
pub scroll_to_focused_mode(mode: impl IntoVar<Option<ScrollToMode>>);
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
.
Sourcepub auto_hide_extra(extra: impl IntoVar<SideOffsets>);
pub auto_hide_extra(extra: impl IntoVar<SideOffsets>);
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
.
Sourcepub overscroll_color(color: impl IntoVar<Rgba>);
pub overscroll_color(color: impl IntoVar<Rgba>);
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
.
Sourcepub min_zoom(min: impl IntoVar<Factor>);
pub min_zoom(min: impl IntoVar<Factor>);
Minimum scale allowed when ScrollMode::ZOOM
is enabled.
This property sets the MIN_ZOOM_VAR
.
Sourcepub max_zoom(max: impl IntoVar<Factor>);
pub max_zoom(max: impl IntoVar<Factor>);
Maximum scale allowed when ScrollMode::ZOOM
is enabled.
This property sets the MAX_ZOOM_VAR
.
Sourcepub zoom_wheel_origin(origin: impl IntoVar<Point>);
pub zoom_wheel_origin(origin: impl IntoVar<Point>);
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
Sourcepub zoom_touch_origin(origin: impl IntoVar<Point>);
pub zoom_touch_origin(origin: impl IntoVar<Point>);
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
.
Sourcepub zoom_origin(origin: impl IntoVar<Point>);
pub zoom_origin(origin: impl IntoVar<Point>);
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.
Sourcepub auto_scroll(enabled: impl IntoVar<bool>);
pub auto_scroll(enabled: impl IntoVar<bool>);
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
.
Sourcepub auto_scroll_indicator(
&self,
indicator: impl IntoVar<WidgetFn<AutoScrollArgs>>,
);
pub auto_scroll_indicator( &self, indicator: impl IntoVar<WidgetFn<AutoScrollArgs>>, );
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.
Sourcepub horizontal_offset(offset: impl IntoVar<Factor>);
pub horizontal_offset(offset: impl IntoVar<Factor>);
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.
Sourcepub vertical_offset(offset: impl IntoVar<Factor>);
pub vertical_offset(offset: impl IntoVar<Factor>);
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.
Sourcepub zoom_scale(scale: impl IntoVar<Factor>);
pub zoom_scale(scale: impl IntoVar<Factor>);
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.
Sourcepub mouse_pan(enabled: impl IntoVar<bool>);
pub mouse_pan(enabled: impl IntoVar<bool>);
Scroll by grabbing and dragging the content with the mouse primary button.
This is not enabled by default. Note that couch pan is always enabled, this property implements a similar behavior for the mouse pointer.
Sourcepub mode(mode: impl IntoVar<ScrollMode>);
pub mode(mode: impl IntoVar<ScrollMode>);
Scroll mode.
Is ScrollMode::ZOOM
by default.
Sourcepub child_align(align: impl IntoVar<Align>);
pub child_align(align: impl IntoVar<Align>);
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 clip_to_bounds(clip: impl IntoVar<bool>);
pub clip_to_bounds(clip: impl IntoVar<bool>);
Clip content to only be visible within the scroll bounds, including under scrollbars.
Enabled by default.
Sourcepub clip_to_viewport(clip: impl IntoVar<bool>);
pub clip_to_viewport(clip: impl IntoVar<bool>);
Clip content to only be visible within the viewport, not under scrollbars.
Disabled by default.
Properties from ScrollUnitsMix§
Implementations§
Source§impl Scroll
impl Scroll
Sourcepub fn widget_new() -> Scroll
pub fn widget_new() -> Scroll
Start building a new instance.
Sourcepub fn widget_type() -> WidgetType
pub fn widget_type() -> WidgetType
Gets the widget type info.
Inherits from 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§
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> 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> 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> 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<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