## GtkScrollable GtkScrollable — An interface for scrollable widgets |

## Functions

GtkAdjustment * | gtk_scrollable_get_hadjustment ()
void | gtk_scrollable_set_hadjustment ()
GtkAdjustment * | gtk_scrollable_get_vadjustment ()
void | gtk_scrollable_set_vadjustment ()
GtkScrollablePolicy | gtk_scrollable_get_hscroll_policy ()
void | gtk_scrollable_set_hscroll_policy ()
GtkScrollablePolicy | gtk_scrollable_get_vscroll_policy ()
void | gtk_scrollable_set_vscroll_policy ()
gboolean | gtk_scrollable_get_border ()

## Properties

GtkAdjustment * | hadjustment | Read / Write / Construct
GtkScrollablePolicy | hscroll-policy | Read / Write
GtkAdjustment * | vadjustment | Read / Write / Construct
GtkScrollablePolicy | vscroll-policy | Read / Write

## Types and Values

| GtkScrollable
enum | GtkScrollablePolicy

## Object Hierarchy

        GInterface
        ╰── GtkScrollable

## Prerequisites

GtkScrollable requires GObject.

## Known Implementations

GtkScrollable is implemented by GtkColumnView, GtkGridView, GtkIconView, GtkListView, GtkTextView, GtkTreeView and GtkViewport.

## Includes

    #include <gtk/gtk.h>

## Description

GtkScrollable is an interface that is implemented by widgets with native scrolling ability.

To implement this interface you should override the “hadjustment” and “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 populate the adjustments’ “lower”, “upper”, “step-increment”, “page-increment” and “page-size” properties and connect to the “value-changed” signal.

- 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 `GtkWidgetClass.size_allocate()` function.

- When the parent allocates space to the scrollable child widget, the widget should update the adjustments’ properties with new values.

- When any of the adjustments emits the “value-changed” signal, the scrollable widget should scroll its contents.

## Functions

### gtk_scrollable_get_hadjustment ()

    GtkAdjustment *
    gtk_scrollable_get_hadjustment (GtkScrollable *scrollable);

Retrieves the GtkAdjustment used for horizontal scrolling.

#### Parameters

scrollable | a GtkScrollable |

#### Returns

horizontal GtkAdjustment.

[transfer none]

### gtk_scrollable_set_hadjustment ()

    void
    gtk_scrollable_set_hadjustment (GtkScrollable *scrollable,
                                    GtkAdjustment *hadjustment);

Sets the horizontal adjustment of the GtkScrollable.

#### Parameters

scrollable | a GtkScrollable |
hadjustment | a GtkAdjustment. | [allow-none]

### gtk_scrollable_get_vadjustment ()

    GtkAdjustment *
    gtk_scrollable_get_vadjustment (GtkScrollable *scrollable);

Retrieves the GtkAdjustment used for vertical scrolling.

#### Parameters

scrollable | a GtkScrollable |

#### Returns

vertical GtkAdjustment.

[transfer none]

### gtk_scrollable_set_vadjustment ()

    void
    gtk_scrollable_set_vadjustment (GtkScrollable *scrollable,
                                    GtkAdjustment *vadjustment);

Sets the vertical adjustment of the GtkScrollable.

#### Parameters

scrollable | a GtkScrollable |
vadjustment | a GtkAdjustment. | [allow-none]

### gtk_scrollable_get_hscroll_policy ()

    GtkScrollablePolicy
    gtk_scrollable_get_hscroll_policy (GtkScrollable *scrollable);

Gets the horizontal GtkScrollablePolicy.

#### Parameters

scrollable | a GtkScrollable |

#### Returns

The horizontal GtkScrollablePolicy.

### gtk_scrollable_set_hscroll_policy ()

    void
    gtk_scrollable_set_hscroll_policy (GtkScrollable *scrollable,
                                       GtkScrollablePolicy policy);

Sets the GtkScrollablePolicy to determine whether horizontal scrolling should start below the minimum width or below the natural width.

#### Parameters

scrollable | a GtkScrollable |
policy | the horizontal GtkScrollablePolicy |

### gtk_scrollable_get_vscroll_policy ()

    GtkScrollablePolicy
    gtk_scrollable_get_vscroll_policy (GtkScrollable *scrollable);

Gets the vertical GtkScrollablePolicy.

#### Parameters

scrollable | a GtkScrollable |

#### Returns

The vertical GtkScrollablePolicy.

### gtk_scrollable_set_vscroll_policy ()

    void
    gtk_scrollable_set_vscroll_policy (GtkScrollable *scrollable,
                                       GtkScrollablePolicy policy);

Sets the GtkScrollablePolicy to determine whether vertical scrolling should start below the minimum height or below the natural height.

#### Parameters

scrollable | a GtkScrollable |
policy | the vertical GtkScrollablePolicy |

### gtk_scrollable_get_border ()

    gboolean
    gtk_scrollable_get_border (GtkScrollable *scrollable,
                               GtkBorder *border);

Returns the size of a non-scrolling border around the outside of the scrollable. An example for this would be treeview headers. GTK can use this information to display overlaid graphics, like the overshoot indication, at the right position.

#### Parameters

scrollable | a GtkScrollable |
border | return location for the results. | [out caller-allocates]

#### Returns

`TRUE` if `border` has been set

## Types and Values

### GtkScrollable

    typedef struct _GtkScrollable GtkScrollable;

### enum GtkScrollablePolicy

Defines the policy to be used in a scrollable widget when updating the scrolled window adjustments in a given orientation.

#### Members

GTK_SCROLL_MINIMUM | Scrollable adjustments are based on the minimum size |
GTK_SCROLL_NATURAL | Scrollable adjustments are based on the natural size |

## Property Details

### The `“hadjustment”` property

      “hadjustment”              GtkAdjustment *

Horizontal GtkAdjustment of the scrollable widget. This adjustment is shared between the scrollable widget and its parent.

Owner: GtkScrollable

Flags: Read / Write / Construct

### The `“hscroll-policy”` property

      “hscroll-policy”           GtkScrollablePolicy

Determines whether horizontal scrolling should start once the scrollable widget is allocated less than its minimum width or less than its natural width.

Owner: GtkScrollable

Flags: Read / Write

Default value: GTK_SCROLL_MINIMUM

### The `“vadjustment”` property

      “vadjustment”              GtkAdjustment *

Vertical GtkAdjustment of the scrollable widget. This adjustment is shared between the scrollable widget and its parent.

Owner: GtkScrollable

Flags: Read / Write / Construct

### The `“vscroll-policy”` property

      “vscroll-policy”           GtkScrollablePolicy

Determines whether vertical scrolling should start once the scrollable widget is allocated less than its minimum height or less than its natural height.

Owner: GtkScrollable

Flags: Read / Write

Default value: GTK_SCROLL_MINIMUM