ScrollContainer

Inherits:Container<Control<CanvasItem<Node<Object

Inherited By:EditorInspector

A container used to provide scrollbars to a child control when needed.

Description

A container used to provide a child control with scrollbars when needed. Scrollbars will automatically be drawn at the right (for vertical) or bottom (for horizontal) and will enable dragging to move the viewable Control (and its children) within the ScrollContainer. Scrollbars will also automatically resize the grabber based on theControl.custom_minimum_size of the Control relative to the ScrollContainer.

Tutorials

Properties

bool

clip_contents

true (overridesControl)

bool

draw_focus_border

false

bool

follow_focus

false

ScrollMode

horizontal_scroll_mode

1

int

scroll_deadzone

0

int

scroll_horizontal

0

float

scroll_horizontal_custom_step

-1.0

int

scroll_vertical

0

float

scroll_vertical_custom_step

-1.0

ScrollMode

vertical_scroll_mode

1

Methods

void

ensure_control_visible(control:Control)

HScrollBar

get_h_scroll_bar()

VScrollBar

get_v_scroll_bar()

Theme Properties

StyleBox

focus

StyleBox

panel


Signals

scroll_ended()🔗

Emitted when scrolling stops when dragging the scrollable areawith a touch event. This signal isnot emitted when scrolling by dragging the scrollbar, scrolling with the mouse wheel or scrolling with keyboard/gamepad events.

Note: This signal is only emitted on Android or iOS, or on desktop/web platforms whenProjectSettings.input_devices/pointing/emulate_touch_from_mouse is enabled.


scroll_started()🔗

Emitted when scrolling starts when dragging the scrollable area with a touch event. This signal isnot emitted when scrolling by dragging the scrollbar, scrolling with the mouse wheel or scrolling with keyboard/gamepad events.

Note: This signal is only emitted on Android or iOS, or on desktop/web platforms whenProjectSettings.input_devices/pointing/emulate_touch_from_mouse is enabled.


Enumerations

enumScrollMode:🔗

ScrollModeSCROLL_MODE_DISABLED =0

Scrolling disabled, scrollbar will be invisible.

ScrollModeSCROLL_MODE_AUTO =1

Scrolling enabled, scrollbar will be visible only if necessary, i.e. container's content is bigger than the container.

ScrollModeSCROLL_MODE_SHOW_ALWAYS =2

Scrolling enabled, scrollbar will be always visible.

ScrollModeSCROLL_MODE_SHOW_NEVER =3

Scrolling enabled, scrollbar will be hidden.

ScrollModeSCROLL_MODE_RESERVE =4

CombinesSCROLL_MODE_AUTO andSCROLL_MODE_SHOW_ALWAYS. The scrollbar is only visible if necessary, but the content size is adjusted as if it was always visible. It's useful for ensuring that content size stays the same regardless if the scrollbar is visible.


Property Descriptions

booldraw_focus_border =false🔗

Iftrue,focus is drawn when the ScrollContainer or one of its descendant nodes is focused.


boolfollow_focus =false🔗

Iftrue, the ScrollContainer will automatically scroll to focused children (including indirect children) to make sure they are fully visible.


ScrollModehorizontal_scroll_mode =1🔗

Controls whether horizontal scrollbar can be used and when it should be visible. SeeScrollMode for options.


intscroll_deadzone =0🔗

Deadzone for touch scrolling. Lower deadzone makes the scrolling more sensitive.


intscroll_horizontal =0🔗

The current horizontal scroll value.

Note: If you are setting this value in theNode._ready() function or earlier, it needs to be wrapped withObject.set_deferred(), since scroll bar'sRange.max_value is not initialized yet.

func_ready():set_deferred("scroll_horizontal",600)

floatscroll_horizontal_custom_step =-1.0🔗

Overrides theScrollBar.custom_step used when clicking the internal scroll bar's horizontal increment and decrement buttons or when using arrow keys when theScrollBar is focused.


intscroll_vertical =0🔗

The current vertical scroll value.

Note: Setting it early needs to be deferred, just like inscroll_horizontal.

func_ready():set_deferred("scroll_vertical",600)

floatscroll_vertical_custom_step =-1.0🔗

Overrides theScrollBar.custom_step used when clicking the internal scroll bar's vertical increment and decrement buttons or when using arrow keys when theScrollBar is focused.


ScrollModevertical_scroll_mode =1🔗

Controls whether vertical scrollbar can be used and when it should be visible. SeeScrollMode for options.


Method Descriptions

voidensure_control_visible(control:Control)🔗

Ensures the givencontrol is visible (must be a direct or indirect child of the ScrollContainer). Used byfollow_focus.

Note: This will not work on a node that was just added during the same frame. If you want to scroll to a newly added child, you must wait until the next frame usingSceneTree.process_frame:

add_child(child_node)awaitget_tree().process_frameensure_control_visible(child_node)

HScrollBarget_h_scroll_bar()🔗

Returns the horizontal scrollbarHScrollBar of thisScrollContainer.

Warning: This is a required internal node, removing and freeing it may cause a crash. If you wish to disable or hide a scrollbar, you can usehorizontal_scroll_mode.


VScrollBarget_v_scroll_bar()🔗

Returns the vertical scrollbarVScrollBar of thisScrollContainer.

Warning: This is a required internal node, removing and freeing it may cause a crash. If you wish to disable or hide a scrollbar, you can usevertical_scroll_mode.


Theme Property Descriptions

StyleBoxfocus🔗

The focus borderStyleBox of theScrollContainer. Only used ifdraw_focus_border istrue.


StyleBoxpanel🔗

The backgroundStyleBox of theScrollContainer.


User-contributed notes

Please read theUser-contributed notes policy before submitting a comment.