Table of Contents

Class ScrollContainer

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

Inheritance
ScrollContainer
Derived

Remarks

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 the custom_minimum_size of the Control relative to the ScrollContainer.

See Also

Properties

draw_focus_border

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

var draw_focus_border : bool = false

Property Value

bool

Remarks

  • void set_draw_focus_border(bool value)
  • bool get_draw_focus_border

follow_focus

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

var follow_focus : bool = false

Property Value

bool

Remarks

  • void set_follow_focus(bool value)
  • bool is_following_focus

horizontal_scroll_mode

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

var horizontal_scroll_mode : int = 1

Property Value

int

Remarks

  • void set_horizontal_scroll_mode(int value)
  • int get_horizontal_scroll_mode

scroll_deadzone

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

var scroll_deadzone : int = 0

Property Value

int

Remarks

  • void set_deadzone(int value)
  • int get_deadzone

scroll_horizontal

The current horizontal scroll value.

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

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

var scroll_horizontal : int = 0

Property Value

int

Remarks

  • void set_h_scroll(int value)
  • int get_h_scroll

scroll_horizontal_custom_step

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

var scroll_horizontal_custom_step : float = -1.0

Property Value

float

Remarks

  • void set_horizontal_custom_step(float value)
  • float get_horizontal_custom_step

scroll_vertical

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)

var scroll_vertical : int = 0

Property Value

int

Remarks

  • void set_v_scroll(int value)
  • int get_v_scroll

scroll_vertical_custom_step

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

var scroll_vertical_custom_step : float = -1.0

Property Value

float

Remarks

  • void set_vertical_custom_step(float value)
  • float get_vertical_custom_step

vertical_scroll_mode

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

var vertical_scroll_mode : int = 1

Property Value

int

Remarks

  • void set_vertical_scroll_mode(int value)
  • int get_vertical_scroll_mode

focus

Theme Property

The focus border StyleBox of the ScrollContainer. Only used if draw_focus_border is true.

StyleBox focus

Property Value

StyleBox

panel

Theme Property

The background StyleBox of the ScrollContainer.

StyleBox panel

Property Value

StyleBox

Methods

ensure_control_visible(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 process_frame:

add_child(child_node)
await get_tree().process_frame
ensure_control_visible(child_node)

void ensure_control_visible(Control control)

Parameters

control Control

get_h_scroll_bar

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 or hide a scrollbar, you can use horizontal_scroll_mode.

HScrollBar get_h_scroll_bar

get_v_scroll_bar

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 or hide a scrollbar, you can use vertical_scroll_mode.

VScrollBar get_v_scroll_bar

Events

scroll_ended

Emitted when scrolling stops when dragging the scrollable area with a touch event. This signal is not 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 when input_devices/pointing/emulate_touch_from_mouse is enabled.

signal scroll_ended

scroll_started

Emitted when scrolling starts when dragging the scrollable area with a touch event. This signal is not 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 when input_devices/pointing/emulate_touch_from_mouse is enabled.

signal scroll_started