ScrollContainer

Inherits: Container < Control < CanvasItem < Node < Object

Inherited By: EditorInspector

A helper node for displaying scrollable elements such as lists.

Description

A ScrollContainer node meant to contain a Control child. ScrollContainers will automatically create a scrollbar child (HScrollBar, VScrollBar, or both) when needed and will only draw the Control within the ScrollContainer area. 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 the Control.rect_min_size of the Control relative to the ScrollContainer. Works great with a Panel control. You can set EXPAND on the children's size flags, so they will upscale to the ScrollContainer's size if it's larger (scroll is invisible for the chosen dimension).

Tutorials

Properties

bool

follow_focus

false

bool

rect_clip_content

true (overrides Control)

int

scroll_deadzone

0

int

scroll_horizontal

0

bool

scroll_horizontal_enabled

true

int

scroll_vertical

0

bool

scroll_vertical_enabled

true

Methods

void

ensure_control_visible ( Control control )

HScrollBar

get_h_scrollbar ( )

VScrollBar

get_v_scrollbar ( )

Theme Properties

StyleBox

bg


Signals

scroll_ended ( )

Emitted when scrolling stops.


scroll_started ( )

Emitted when scrolling is started.


Property Descriptions

bool follow_focus = false

  • void set_follow_focus ( bool value )

  • bool is_following_focus ( )

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


int scroll_deadzone = 0

  • void set_deadzone ( int value )

  • int get_deadzone ( )

There is currently no description for this property. Please help us by contributing one!


int scroll_horizontal = 0

  • void set_h_scroll ( int value )

  • int get_h_scroll ( )

The current horizontal scroll value.

Note: If you are setting this value in the Node._ready function or earlier, it needs to be wrapped with Object.set_deferred, since scroll bar's Range.max_value is not initialized yet.

func _ready():
    set_deferred("scroll_horizontal", 600)

bool scroll_horizontal_enabled = true

  • void set_enable_h_scroll ( bool value )

  • bool is_h_scroll_enabled ( )

If true, enables horizontal scrolling.


int scroll_vertical = 0

  • void set_v_scroll ( int value )

  • int get_v_scroll ( )

The current vertical scroll value.

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

func _ready():
    set_deferred("scroll_vertical", 600)

bool scroll_vertical_enabled = true

  • void set_enable_v_scroll ( bool value )

  • bool is_v_scroll_enabled ( )

If true, enables vertical scrolling.


Method Descriptions

void ensure_control_visible ( Control control )

Ensures the given control is visible (must be a direct or indirect child of the ScrollContainer). Used by follow_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 using SceneTree.idle_frame:

add_child(child_node)
yield(get_tree(), "idle_frame")
ensure_control_visible(child_node)

HScrollBar get_h_scrollbar ( )

Returns the horizontal scrollbar HScrollBar of this ScrollContainer.

Warning: This is a required internal node, removing and freeing it may cause a crash. If you wish to disable the horizontal scrollbar, use scroll_horizontal_enabled. If you want to only hide it instead, use its CanvasItem.visible property.


VScrollBar get_v_scrollbar ( )

Returns the vertical scrollbar VScrollBar of this ScrollContainer.

Warning: This is a required internal node, removing and freeing it may cause a crash. If you wish to disable the vertical scrollbar, use scroll_vertical_enabled. If you want to only hide it instead, use its CanvasItem.visible property.


Theme Property Descriptions

StyleBox bg

The background StyleBox of the ScrollContainer.