### Interface

# Gtk Scrollable

since: 4.0

#### Description [src]

    interface Gtk.Scrollable : GObject.Object

`GtkScrollable` is an interface for widgets with native scrolling ability.

To implement this interface you should override the `GtkScrollable:hadjustment` and `GtkScrollable:vadjustment` properties.

## Creating a scrollable widget

All scrollable widgets should do the following.

- When a parent widget sets the scrollable child widget’s adjustments, the widget should connect to the `GtkAdjustment::value-changed` signal. The child widget should then populate the adjustments’ properties as soon as possible, which usually means queueing an allocation right away and populating the properties in the `Gtk.WidgetClass.size_allocate` implementation.

- Because its preferred size is the size for a fully expanded widget, the scrollable widget must be able to cope with underallocations. This means that it must accept any value passed to its `Gtk.WidgetClass.size_allocate` implementation.

- When the parent allocates space to the scrollable child widget, the widget must ensure the adjustments’ property values are correct and up to date, for example using `gtk_adjustment_configure()`.

- When any of the adjustments emits the `GtkAdjustment::value-changed` signal, the scrollable widget should scroll its contents.

Available since: 4.0

#### Prerequisite

In order to implement Scrollable, your type must inherit from`GObject`.

#### Implementations

- GtkColumnView
- GtkGridView
- GtkIconView
- GtkListBase
- GtkListView
- GtkTextView
- GtkTreeView
- GtkViewport

#### Instance methods

###### gtk_scrollable_get_border

Returns the size of a non-scrolling border around the outside of the scrollable.

since: 4.0

###### gtk_scrollable_get_hadjustment

Retrieves the `GtkAdjustment` used for horizontal scrolling.

since: 4.0

###### gtk_scrollable_get_hscroll_policy

Gets the horizontal `GtkScrollablePolicy`.

since: 4.0

###### gtk_scrollable_get_vadjustment

Retrieves the `GtkAdjustment` used for vertical scrolling.

since: 4.0

###### gtk_scrollable_get_vscroll_policy

Gets the vertical `GtkScrollablePolicy`.

since: 4.0

###### gtk_scrollable_set_hadjustment

Sets the horizontal adjustment of the `GtkScrollable`.

since: 4.0

###### gtk_scrollable_set_hscroll_policy

Sets the `GtkScrollablePolicy`.

since: 4.0

###### gtk_scrollable_set_vadjustment

Sets the vertical adjustment of the `GtkScrollable`.

since: 4.0

###### gtk_scrollable_set_vscroll_policy

Sets the `GtkScrollablePolicy`.

since: 4.0

#### Properties

###### Gtk.Scrollable:hadjustment

Horizontal `GtkAdjustment` of the scrollable widget.

since: 4.0

###### Gtk.Scrollable:hscroll-policy

Determines when horizontal scrolling should start.

since: 4.0

###### Gtk.Scrollable:vadjustment

Vertical `GtkAdjustment` of the scrollable widget.

since: 4.0

###### Gtk.Scrollable:vscroll-policy

Determines when vertical scrolling should start.

since: 4.0

#### Interface structure

    struct GtkScrollableInterface {
      GTypeInterface base_iface;
      gboolean (* get_border) (
        GtkScrollable* scrollable,
        GtkBorder* border
      );

    }

No description available.

###### Interface members

`base_iface` |
    GTypeInterface
| No description available.
`get_border` |
    gboolean (* get_border) (
        GtkScrollable* scrollable,
        GtkBorder* border
      )
| No description available.

#### Virtual methods

###### Gtk.Scrollable.get_border

Returns the size of a non-scrolling border around the outside of the scrollable.

since: 4.0