Module: ui.widgets.scrollview

Source: ./ui/widgets/scrollview.reef


Overview

ui/widgets/scrollview.reef - Scrollable container widget Part of reef-stdlib UI module

The ScrollView widget provides a scrollable view into content that may be larger than the visible area. It supports both horizontal and vertical scrolling with optional scrollbars.

ScrollView features:

  • Horizontal and/or vertical scrolling
  • Scrollbars (auto-hide, always visible, or never visible)
  • Smooth scrolling with momentum (optional)
  • Mouse wheel and keyboard navigation
  • Content clipping

Types

ScrollBarPolicy (enum)

Variants:

  • Auto
  • Always
  • Never

ScrollDirection (enum)

Variants:

  • Horizontal
  • Vertical
  • Both

ScrollViewEventResult (enum)

Variants:

  • Consumed(ScrollView)
  • Ignored

Objects

ScrollView

Extends: widget.Widget

Fields:

Name Type
scroll_x float
scroll_y float
content_width float
content_height float
h_policy ScrollBarPolicy
v_policy ScrollBarPolicy
dragging_h bool
dragging_v bool
drag_start_x float
drag_start_y float
drag_start_scroll float
h_hovered bool
v_hovered bool

proc init(id: widget.WidgetId)

Methods:

override shared fn kind(): string

override exclusive proc paint(surf: surface.Surface, th: theme.Theme)


Functions

fn scrollbar_auto(): ScrollBarPolicy

fn scrollbar_always(): ScrollBarPolicy

fn scrollbar_never(): ScrollBarPolicy

fn is_scrollbar_auto(p: ScrollBarPolicy): bool

fn is_scrollbar_always(p: ScrollBarPolicy): bool

fn is_scrollbar_never(p: ScrollBarPolicy): bool

fn scroll_horizontal(): ScrollDirection

fn scroll_vertical(): ScrollDirection

fn scroll_both(): ScrollDirection

fn scrollview(): ScrollView

fn scrollview_with_policy(h_policy: ScrollBarPolicy, v_policy: ScrollBarPolicy): ScrollView

fn scrollview_scroll_x(sv: ScrollView): float

fn scrollview_scroll_y(sv: ScrollView): float

fn scrollview_content_size(sv: ScrollView): core.Size

fn scrollview_viewport_size(sv: ScrollView): core.Size

fn scrollview_h_policy(sv: ScrollView): ScrollBarPolicy

fn scrollview_v_policy(sv: ScrollView): ScrollBarPolicy

fn scrollview_set_scroll(sv: ScrollView, x: float, y: float): ScrollView

fn scrollview_set_content_size(sv: ScrollView, size: core.Size): ScrollView

fn scrollview_set_h_policy(sv: ScrollView, policy: ScrollBarPolicy): ScrollView

fn scrollview_set_v_policy(sv: ScrollView, policy: ScrollBarPolicy): ScrollView

fn scrollview_scroll_by(sv: ScrollView, dx: float, dy: float): ScrollView

fn scrollview_scroll_to_top(sv: ScrollView): ScrollView

fn scrollview_scroll_to_bottom(sv: ScrollView): ScrollView

fn scrollview_scroll_to_left(sv: ScrollView): ScrollView

fn scrollview_scroll_to_right(sv: ScrollView): ScrollView

fn scrollview_can_scroll_h(sv: ScrollView): bool

fn scrollview_can_scroll_v(sv: ScrollView): bool

fn scrollview_needs_h_scrollbar(sv: ScrollView): bool

fn scrollview_needs_v_scrollbar(sv: ScrollView): bool

fn scrollview_get_id(sv: ScrollView): widget.WidgetId

fn scrollview_get_state(sv: ScrollView): widget.WidgetState

fn scrollview_get_bounds(sv: ScrollView): core.Rect

fn scrollview_content_bounds(sv: ScrollView): core.Rect

fn scrollview_preferred_size(sv: ScrollView, content_size: core.Size): core.Size

fn scrollview_layout(sv: ScrollView, constraints: layout.Constraints): ScrollView

fn scrollview_event_consumed(sv: ScrollView): ScrollViewEventResult

fn scrollview_event_ignored(): ScrollViewEventResult

fn is_scrollview_event_consumed(r: ScrollViewEventResult): bool

fn get_scrollview_from_result(r: ScrollViewEventResult): ScrollView

fn scrollview_handle_event(sv: ScrollView, e: event.Event): ScrollViewEventResult

fn handle_mouse_event(sv: ScrollView, me: event.MouseEvent): ScrollViewEventResult

fn handle_key_event(sv: ScrollView, ke: event.KeyEvent): ScrollViewEventResult

fn start_v_drag(sv: ScrollView, mx: float, my: float): ScrollView

fn start_h_drag(sv: ScrollView, mx: float, my: float): ScrollView

fn end_drag(sv: ScrollView): ScrollView

fn update_v_drag(sv: ScrollView, my: float): ScrollView

fn update_h_drag(sv: ScrollView, mx: float): ScrollView

fn update_hover(sv: ScrollView, h_hover: bool, v_hover: bool): ScrollView

fn get_scrollbar_thumb_color(hovered: bool, colors: theme.ThemeColors): core.Color

fn get_v_thumb_height(sv: ScrollView): float

fn get_h_thumb_width(sv: ScrollView): float

fn get_v_thumb_position(sv: ScrollView, track_height: float): float

fn get_h_thumb_position(sv: ScrollView, track_width: float): float

fn clamp_scroll_x(sv: ScrollView, x: float): float

fn clamp_scroll_y(sv: ScrollView, y: float): float


Procedures

proc scrollview_paint(sv: ScrollView, surf: surface.Surface, th: theme.Theme)

proc paint_vertical_scrollbar(sv: ScrollView, surf: surface.Surface, th: theme.Theme, x: float, y: float, w: float, h: float)

proc paint_horizontal_scrollbar(sv: ScrollView, surf: surface.Surface, th: theme.Theme, x: float, y: float, w: float, h: float)

proc draw_border(surf: surface.Surface, x: float, y: float, w: float, h: float, color: core.Color)


Generated by reefc doc