CtkScrollable: CTK+ 3 Reference Manual

## CtkScrollable CtkScrollable — An interface for scrollable widgets |

## Functions

CtkAdjustment * | ctk_scrollable_get_hadjustment ()
void | ctk_scrollable_set_hadjustment ()
CtkAdjustment * | ctk_scrollable_get_vadjustment ()
void | ctk_scrollable_set_vadjustment ()
CtkScrollablePolicy | ctk_scrollable_get_hscroll_policy ()
void | ctk_scrollable_set_hscroll_policy ()
CtkScrollablePolicy | ctk_scrollable_get_vscroll_policy ()
void | ctk_scrollable_set_vscroll_policy ()
gboolean | ctk_scrollable_get_border ()

## Properties

CtkAdjustment * | hadjustment | Read / Write / Construct
CtkScrollablePolicy | hscroll-policy | Read / Write
CtkAdjustment * | vadjustment | Read / Write / Construct
CtkScrollablePolicy | vscroll-policy | Read / Write

## Types and Values

| CtkScrollable
enum | CtkScrollablePolicy

## Object Hierarchy

        GInterface
        ╰── CtkScrollable

## Prerequisites

CtkScrollable requires GObject.

## Known Implementations

CtkScrollable is implemented by CtkIconView, CtkLayout, CtkTextView, CtkToolPalette, CtkTreeView and CtkViewport.

## Includes

    #include <ctk/ctk.h>

## Description

CtkScrollable 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 `CtkWidgetClass.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

### ctk_scrollable_get_hadjustment ()

    CtkAdjustment *
    ctk_scrollable_get_hadjustment (CtkScrollable *scrollable);

Retrieves the CtkAdjustment used for horizontal scrolling.

#### Parameters

scrollable | a CtkScrollable |

#### Returns

horizontal CtkAdjustment.

[transfer none]

Since: 3.0

### ctk_scrollable_set_hadjustment ()

    void
    ctk_scrollable_set_hadjustment (CtkScrollable *scrollable,
                                    CtkAdjustment *hadjustment);

Sets the horizontal adjustment of the CtkScrollable.

#### Parameters

scrollable | a CtkScrollable |
hadjustment | a CtkAdjustment. | [allow-none]

Since: 3.0

### ctk_scrollable_get_vadjustment ()

    CtkAdjustment *
    ctk_scrollable_get_vadjustment (CtkScrollable *scrollable);

Retrieves the CtkAdjustment used for vertical scrolling.

#### Parameters

scrollable | a CtkScrollable |

#### Returns

vertical CtkAdjustment.

[transfer none]

Since: 3.0

### ctk_scrollable_set_vadjustment ()

    void
    ctk_scrollable_set_vadjustment (CtkScrollable *scrollable,
                                    CtkAdjustment *vadjustment);

Sets the vertical adjustment of the CtkScrollable.

#### Parameters

scrollable | a CtkScrollable |
vadjustment | a CtkAdjustment. | [allow-none]

Since: 3.0

### ctk_scrollable_get_hscroll_policy ()

    CtkScrollablePolicy
    ctk_scrollable_get_hscroll_policy (CtkScrollable *scrollable);

Gets the horizontal CtkScrollablePolicy.

#### Parameters

scrollable | a CtkScrollable |

#### Returns

The horizontal CtkScrollablePolicy.

Since: 3.0

### ctk_scrollable_set_hscroll_policy ()

    void
    ctk_scrollable_set_hscroll_policy (CtkScrollable *scrollable,
                                       CtkScrollablePolicy policy);

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

#### Parameters

scrollable | a CtkScrollable |
policy | the horizontal CtkScrollablePolicy |

Since: 3.0

### ctk_scrollable_get_vscroll_policy ()

    CtkScrollablePolicy
    ctk_scrollable_get_vscroll_policy (CtkScrollable *scrollable);

Gets the vertical CtkScrollablePolicy.

#### Parameters

scrollable | a CtkScrollable |

#### Returns

The vertical CtkScrollablePolicy.

Since: 3.0

### ctk_scrollable_set_vscroll_policy ()

    void
    ctk_scrollable_set_vscroll_policy (CtkScrollable *scrollable,
                                       CtkScrollablePolicy policy);

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

#### Parameters

scrollable | a CtkScrollable |
policy | the vertical CtkScrollablePolicy |

Since: 3.0

### ctk_scrollable_get_border ()

    gboolean
    ctk_scrollable_get_border (CtkScrollable *scrollable,
                               CtkBorder *border);

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

#### Parameters

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

#### Returns

`TRUE` if `border` has been set

Since: 3.16

## Types and Values

### CtkScrollable

    typedef struct _CtkScrollable CtkScrollable;

### enum CtkScrollablePolicy

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

#### Members

CTK_SCROLL_MINIMUM | Scrollable adjustments are based on the minimum size |
CTK_SCROLL_NATURAL | Scrollable adjustments are based on the natural size |

## Property Details

### The `“hadjustment”` property

      “hadjustment”              CtkAdjustment *

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

Owner: CtkScrollable

Flags: Read / Write / Construct

Since: 3.0

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

      “hscroll-policy”           CtkScrollablePolicy

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

Owner: CtkScrollable

Flags: Read / Write

Default value: CTK_SCROLL_MINIMUM

Since: 3.0

### The `“vadjustment”` property

      “vadjustment”              CtkAdjustment *

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

Owner: CtkScrollable

Flags: Read / Write / Construct

Since: 3.0

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

      “vscroll-policy”           CtkScrollablePolicy

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

Owner: CtkScrollable

Flags: Read / Write

Default value: CTK_SCROLL_MINIMUM

Since: 3.0