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

clip_contents

true (overrides Control)

bool

follow_focus

false

ScrollMode

horizontal_scroll_mode

1

int

scroll_deadzone

0

int

scroll_horizontal

0

int

scroll_vertical

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

panel

Signals

  • scroll_ended ( )

Emitted when scrolling stops.


  • scroll_started ( )

Emitted when scrolling is started.

Enumerations

enum ScrollMode:

  • SCROLL_MODE_DISABLED = 0 --- Scrolling disabled, scrollbar will be invisible.

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

  • SCROLL_MODE_SHOW_ALWAYS = 2 --- Scrolling enabled, scrollbar will be always visible.

  • SCROLL_MODE_SHOW_NEVER = 3 --- Scrolling enabled, scrollbar will be hidden.

Property Descriptions

Default

false

Setter

set_follow_focus(value)

Getter

is_following_focus()

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


Default

1

Setter

set_horizontal_scroll_mode(value)

Getter

get_horizontal_scroll_mode()

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


  • int scroll_deadzone

Default

0

Setter

set_deadzone(value)

Getter

get_deadzone()


  • int scroll_horizontal

Default

0

Setter

set_h_scroll(value)

Getter

get_h_scroll()

The current horizontal scroll value.


  • int scroll_vertical

Default

0

Setter

set_v_scroll(value)

Getter

get_v_scroll()

The current vertical scroll value.


Default

1

Setter

set_vertical_scroll_mode(value)

Getter

get_vertical_scroll_mode()

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

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.process_frame:

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

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.


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.

Theme Property Descriptions

The background StyleBox of the ScrollContainer.