## GtkScrollable GtkScrollable — An interface for scrollable widgets |

## Synopsis

    #include <gtk/gtk.h>

                        GtkScrollable;
    GtkAdjustment *     gtk_scrollable_get_hadjustment      (GtkScrollable *scrollable);
    void                gtk_scrollable_set_hadjustment      (GtkScrollable *scrollable,
                                                             GtkAdjustment *hadjustment);
    GtkAdjustment *     gtk_scrollable_get_vadjustment      (GtkScrollable *scrollable);
    void                gtk_scrollable_set_vadjustment      (GtkScrollable *scrollable,
                                                             GtkAdjustment *vadjustment);
    enum                GtkScrollablePolicy;
    GtkScrollablePolicy gtk_scrollable_get_hscroll_policy   (GtkScrollable *scrollable);
    void                gtk_scrollable_set_hscroll_policy   (GtkScrollable *scrollable,
                                                             GtkScrollablePolicy policy);
    GtkScrollablePolicy gtk_scrollable_get_vscroll_policy   (GtkScrollable *scrollable);
    void                gtk_scrollable_set_vscroll_policy   (GtkScrollable *scrollable,
                                                             GtkScrollablePolicy policy);

## Object Hierarchy

      GInterface
       +----GtkScrollable

## Prerequisites

GtkScrollable requires GObject.

## Known Implementations

GtkScrollable is implemented by GtkIconView, GtkLayout, GtkTextView, GtkToolPalette, GtkTreeView and GtkViewport.

## Properties

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

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

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

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

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

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

## Details

### GtkScrollable

    typedef struct _GtkScrollable GtkScrollable;

### gtk_scrollable_get_hadjustment ()

    GtkAdjustment *     gtk_scrollable_get_hadjustment      (GtkScrollable *scrollable);

Retrieves the GtkAdjustment used for horizontal scrolling.

`scrollable` : | a GtkScrollable
Returns : | horizontal GtkAdjustment. [transfer none]

Since 3.0

### gtk_scrollable_set_hadjustment ()

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

Sets the horizontal adjustment of the GtkScrollable.

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

Since 3.0

### gtk_scrollable_get_vadjustment ()

    GtkAdjustment *     gtk_scrollable_get_vadjustment      (GtkScrollable *scrollable);

Retrieves the GtkAdjustment used for vertical scrolling.

`scrollable` : | a GtkScrollable
Returns : | vertical GtkAdjustment. [transfer none]

Since 3.0

### gtk_scrollable_set_vadjustment ()

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

Sets the vertical adjustment of the GtkScrollable.

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

Since 3.0

### enum GtkScrollablePolicy

    typedef enum {
      GTK_SCROLL_MINIMUM = 0,
      GTK_SCROLL_NATURAL
    } GtkScrollablePolicy;

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

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

### gtk_scrollable_get_hscroll_policy ()

    GtkScrollablePolicy gtk_scrollable_get_hscroll_policy   (GtkScrollable *scrollable);

Gets the horizontal GtkScrollablePolicy.

`scrollable` : | a GtkScrollable
Returns : | The horizontal GtkScrollablePolicy.

Since 3.0

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

`scrollable` : | a GtkScrollable
`policy` : | the horizontal GtkScrollablePolicy

Since 3.0

### gtk_scrollable_get_vscroll_policy ()

    GtkScrollablePolicy gtk_scrollable_get_vscroll_policy   (GtkScrollable *scrollable);

Gets the vertical GtkScrollablePolicy.

`scrollable` : | a GtkScrollable
Returns : | The vertical GtkScrollablePolicy.

Since 3.0

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

`scrollable` : | a GtkScrollable
`policy` : | the vertical GtkScrollablePolicy

Since 3.0

## Property Details

### The `"hadjustment"` property

      "hadjustment"              GtkAdjustment*        : Read / Write / Construct

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

Since 3.0

### The `"hscroll-policy"` property

      "hscroll-policy"           GtkScrollablePolicy   : Read / Write

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

Default value: GTK_SCROLL_MINIMUM

Since 3.0

### The `"vadjustment"` property

      "vadjustment"              GtkAdjustment*        : Read / Write / Construct

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

Since 3.0

### The `"vscroll-policy"` property

      "vscroll-policy"           GtkScrollablePolicy   : Read / Write

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

Default value: GTK_SCROLL_MINIMUM

Since 3.0