zng::scroll

Struct Scroll

source
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 the ScrollMode const and child widget.
  • Scroll!($mode:expr, $child:expr) Creates a scroll with the ScrollMode and child widget.

Implementations§

source§

impl Scroll

source

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

source

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

source

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

source

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

source

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

source

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

source

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

source

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

source

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

source

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

source

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

source

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

source

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

source

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

source

pub fn mouse_pan(&self, enabled: impl IntoVar<bool>)

P 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.

source§

impl Scroll

source

pub fn widget_new() -> Scroll

Start building a new instance.

source

pub fn widget_type() -> WidgetType

Gets the widget type info.

source§

impl Scroll

source

pub fn mode(&self, mode: impl IntoVar<ScrollMode>)

c Scroll mode.

Is ScrollMode::ZOOM by default.

source§

impl Scroll

source

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.

source

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.

source

pub fn focusable(&self, focusable: impl IntoVar<bool>)

P Enables keyboard controls.

source§

impl Scroll

source

pub fn clip_to_viewport(&self, clip: impl IntoVar<bool>)

c Clip content to only be visible within the viewport, not under scrollbars.

Disabled by default.

Methods from Deref<Target = ScrollUnitsMix<ScrollbarFnMix<Container>>>§

source

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.

source

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.

source

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.

source

pub fn alt_factor(&self, factor: impl IntoVar<Factor>)

P Scroll unit multiplier used when alternate scrolling.

This property sets the ALT_FACTOR_VAR.

source

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.

source

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.

source

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.

source

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.

source

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`.

source

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.

source

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.

source

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

source§

type Target = ScrollUnitsMix<ScrollbarFnMix<Container>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &<Scroll as Deref>::Target

Dereferences the value.
source§

impl DerefMut for Scroll

source§

fn deref_mut(&mut self) -> &mut <Scroll as Deref>::Target

Mutably dereferences the value.

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

source§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T