### Class

# Gtk FlowBox

#### Description [src]

    final class Gtk.FlowBox : Gtk.Widget
      implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Orientable {
      /* No available fields */
    }

Puts child widgets in a reflowing grid.

For instance, with the horizontal orientation, the widgets will be arranged from left to right, starting a new row under the previous row when necessary. Reducing the width in this case will require more rows, so a larger height will be requested.

Likewise, with the vertical orientation, the widgets will be arranged from top to bottom, starting a new column to the right when necessary. Reducing the height will require more columns, so a larger width will be requested.

The size request of a `GtkFlowBox` alone may not be what you expect; if you need to be able to shrink it along both axes and dynamically reflow its children, you may have to wrap it in a `GtkScrolledWindow` to enable that.

The children of a `GtkFlowBox` can be dynamically sorted and filtered.

Although a `GtkFlowBox` must have only `GtkFlowBoxChild` children, you can add any kind of widget to it via `gtk_flow_box_insert()`, and a `GtkFlowBoxChild` widget will automatically be inserted between the box and the widget.

Also see `GtkListBox`.

# Shortcuts and Gestures

The following signals have default keybindings:

- `GtkFlowBox::move-cursor`
- `GtkFlowBox::select-all`
- `GtkFlowBox::toggle-cursor-child`
- `GtkFlowBox::unselect-all`

# CSS nodes

    flowbox
    ├── flowboxchild
    │   ╰── <child>
    ├── flowboxchild
    │   ╰── <child>
    ┊
    ╰── [rubberband]

`GtkFlowBox` uses a single CSS node with name flowbox. `GtkFlowBoxChild` uses a single CSS node with name flowboxchild. For rubberband selection, a subnode with name rubberband is used.

# Accessibility

`GtkFlowBox` uses the `GTK_ACCESSIBLE_ROLE_GRID` role, and `GtkFlowBoxChild` uses the `GTK_ACCESSIBLE_ROLE_GRID_CELL` role.

#### Ancestors

- GtkWidget
- GInitiallyUnowned
- GObject

#### Implements

- GtkAccessible
- GtkBuildable
- GtkConstraintTarget
- GtkOrientable

#### Constructors

###### gtk_flow_box_new

Creates a `GtkFlowBox`.

#### Instance methods

###### gtk_flow_box_append

Adds `child` to the end of `self`.

since: 4.6

###### gtk_flow_box_bind_model

Binds `model` to `box`.

###### gtk_flow_box_get_activate_on_single_click

Returns whether children activate on single clicks.

###### gtk_flow_box_get_child_at_index

Gets the nth child in the `box`.

###### gtk_flow_box_get_child_at_pos

Gets the child in the (`x`, `y`) position.

###### gtk_flow_box_get_column_spacing

Gets the horizontal spacing.

###### gtk_flow_box_get_homogeneous

Returns whether the box is homogeneous.

###### gtk_flow_box_get_max_children_per_line

Gets the maximum number of children per line.

###### gtk_flow_box_get_min_children_per_line

Gets the minimum number of children per line.

###### gtk_flow_box_get_row_spacing

Gets the vertical spacing.

###### gtk_flow_box_get_selected_children

Creates a list of all selected children.

###### gtk_flow_box_get_selection_mode

Gets the selection mode of `box`.

###### gtk_flow_box_insert

Inserts the `widget` into `box` at `position`.

###### gtk_flow_box_invalidate_filter

Updates the filtering for all children.

###### gtk_flow_box_invalidate_sort

Updates the sorting for all children.

###### gtk_flow_box_prepend

Adds `child` to the start of `self`.

since: 4.6

###### gtk_flow_box_remove

Removes a child from `box`.

###### gtk_flow_box_remove_all

Removes all children from `box`.

since: 4.12

###### gtk_flow_box_select_all

Select all children of `box`, if the selection mode allows it.

###### gtk_flow_box_select_child

Selects a single child of `box`, if the selection mode allows it.

###### gtk_flow_box_selected_foreach

Calls a function for each selected child.

###### gtk_flow_box_set_activate_on_single_click

If `single` is `TRUE`, children will be activated when you click on them, otherwise you need to double-click.

###### gtk_flow_box_set_column_spacing

Sets the horizontal space to add between children.

###### gtk_flow_box_set_filter_func

By setting a filter function on the `box` one can decide dynamically which of the children to show.

###### gtk_flow_box_set_hadjustment

Hooks up an adjustment to focus handling in `box`.

###### gtk_flow_box_set_homogeneous

Sets whether or not all children of `box` are given equal space in the box.

###### gtk_flow_box_set_max_children_per_line

Sets the maximum number of children to request and allocate space for in `box`’s orientation.

###### gtk_flow_box_set_min_children_per_line

Sets the minimum number of children to line up in `box`’s orientation before flowing.

###### gtk_flow_box_set_row_spacing

Sets the vertical space to add between children.

###### gtk_flow_box_set_selection_mode

Sets how selection works in `box`.

###### gtk_flow_box_set_sort_func

By setting a sort function on the `box`, one can dynamically reorder the children of the box, based on the contents of the children.

###### gtk_flow_box_set_vadjustment

Hooks up an adjustment to focus handling in `box`.

###### gtk_flow_box_unselect_all

Unselect all children of `box`, if the selection mode allows it.

###### gtk_flow_box_unselect_child

Unselects a single child of `box`, if the selection mode allows it.

##### Methods inherited from GtkWidget (164)

Please see GtkWidget for a full list of methods.

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

##### Methods inherited from GtkAccessible (21)

###### gtk_accessible_announce

Requests the user’s screen reader to announce the given message.

since: 4.14

###### gtk_accessible_get_accessible_id

Retrieves the accessible identifier for the accessible object.

since: 4.22

###### gtk_accessible_get_accessible_parent

Retrieves the accessible parent for an accessible object.

since: 4.10

###### gtk_accessible_get_accessible_role

Retrieves the accessible role of an accessible object.

###### gtk_accessible_get_at_context

Retrieves the implementation for the given accessible object.

since: 4.10

###### gtk_accessible_get_bounds

Queries the coordinates and dimensions of this accessible.

since: 4.10

###### gtk_accessible_get_first_accessible_child

Retrieves the first accessible child of an accessible object.

since: 4.10

###### gtk_accessible_get_next_accessible_sibling

Retrieves the next accessible sibling of an accessible object.

since: 4.10

###### gtk_accessible_get_platform_state

Queries a platform state, such as focus.

since: 4.10

###### gtk_accessible_reset_property

Resets the accessible property to its default value.

###### gtk_accessible_reset_relation

Resets the accessible relation to its default value.

###### gtk_accessible_reset_state

Resets the accessible state to its default value.

###### gtk_accessible_set_accessible_parent

Sets the parent and sibling of an accessible object.

since: 4.10

###### gtk_accessible_update_next_accessible_sibling

Updates the next accessible sibling.

since: 4.10

###### gtk_accessible_update_platform_state

Informs ATs that the platform state has changed.

since: 4.18

###### gtk_accessible_update_property

Updates a list of accessible properties.

###### gtk_accessible_update_property_value

Updates an array of accessible properties.

###### gtk_accessible_update_relation

Updates a list of accessible relations.

###### gtk_accessible_update_relation_value

Updates an array of accessible relations.

###### gtk_accessible_update_state

Updates a list of accessible states.

###### gtk_accessible_update_state_value

Updates an array of accessible states.

##### Methods inherited from GtkBuildable (1)

###### gtk_buildable_get_buildable_id

Gets the ID of the `buildable` object.

##### Methods inherited from GtkOrientable (2)

###### gtk_orientable_get_orientation

Retrieves the orientation of the `orientable`.

###### gtk_orientable_set_orientation

Sets the orientation of the `orientable`.

#### Properties

###### Gtk.FlowBox:accept-unpaired-release

Whether to accept unpaired release events.

###### Gtk.FlowBox:activate-on-single-click

Determines whether children can be activated with a single click, or require a double-click.

###### Gtk.FlowBox:column-spacing

The amount of horizontal space between two children.

###### Gtk.FlowBox:homogeneous

Determines whether all children should be allocated the same size.

###### Gtk.FlowBox:max-children-per-line

The maximum amount of children to request space for consecutively in the given orientation.

###### Gtk.FlowBox:min-children-per-line

The minimum number of children to allocate consecutively in the given orientation.

###### Gtk.FlowBox:row-spacing

The amount of vertical space between two children.

###### Gtk.FlowBox:selection-mode

The selection mode used by the flow box.

##### Properties inherited from GtkWidget (35)

###### Gtk.Widget:can-focus

Whether the widget or any of its descendents can accept the input focus.

###### Gtk.Widget:can-target

Whether the widget can receive pointer events.

###### Gtk.Widget:css-classes

A list of css classes applied to this widget.

###### Gtk.Widget:css-name

The name of this widget in the CSS tree.

###### Gtk.Widget:cursor

The cursor used by `widget`.

###### Gtk.Widget:focus-on-click

Whether the widget should grab focus when it is clicked with the mouse.

###### Gtk.Widget:focusable

Whether this widget itself will accept the input focus.

###### Gtk.Widget:halign

How to distribute horizontal space if widget gets extra space.

###### Gtk.Widget:has-default

Whether the widget is the default widget.

###### Gtk.Widget:has-focus

Whether the widget has the input focus.

###### Gtk.Widget:has-tooltip

Enables or disables the emission of the `GtkWidget::query-tooltip` signal on `widget`.

###### Gtk.Widget:height-request

Overrides for height request of the widget.

###### Gtk.Widget:hexpand

Whether to expand horizontally.

###### Gtk.Widget:hexpand-set

Whether to use the `hexpand` property.

###### Gtk.Widget:layout-manager

The `GtkLayoutManager` instance to use to compute the preferred size of the widget, and allocate its children.

###### Gtk.Widget:limit-events

Makes this widget act like a modal dialog, with respect to event delivery.

since: 4.18

###### Gtk.Widget:margin-bottom

Margin on bottom side of widget.

###### Gtk.Widget:margin-end

Margin on end of widget, horizontally.

###### Gtk.Widget:margin-start

Margin on start of widget, horizontally.

###### Gtk.Widget:margin-top

Margin on top side of widget.

###### Gtk.Widget:name

The name of the widget.

###### Gtk.Widget:opacity

The requested opacity of the widget.

###### Gtk.Widget:overflow

How content outside the widget’s content area is treated.

###### Gtk.Widget:parent

The parent widget of this widget.

###### Gtk.Widget:receives-default

Whether the widget will receive the default action when it is focused.

###### Gtk.Widget:root

The `GtkRoot` widget of the widget tree containing this widget.

###### Gtk.Widget:scale-factor

The scale factor of the widget.

###### Gtk.Widget:sensitive

Whether the widget responds to input.

###### Gtk.Widget:tooltip-markup

Sets the text of tooltip to be the given string, which is marked up with Pango markup.

###### Gtk.Widget:tooltip-text

Sets the text of tooltip to be the given string.

###### Gtk.Widget:valign

How to distribute vertical space if widget gets extra space.

###### Gtk.Widget:vexpand

Whether to expand vertically.

###### Gtk.Widget:vexpand-set

Whether to use the `vexpand` property.

###### Gtk.Widget:visible

Whether the widget is visible.

###### Gtk.Widget:width-request

Overrides for width request of the widget.

##### Properties inherited from GtkAccessible (1)

###### GtkAccessible:accessible-role

The accessible role of the given `GtkAccessible` implementation.

##### Properties inherited from GtkOrientable (1)

###### GtkOrientable:orientation

The orientation of the orientable.

#### Signals

###### Gtk.FlowBox::activate-cursor-child

Emitted when the user activates the `box`.

###### Gtk.FlowBox::child-activated

Emitted when a child has been activated by the user.

###### Gtk.FlowBox::move-cursor

Emitted when the user initiates a cursor movement.

###### Gtk.FlowBox::select-all

Emitted to select all children of the box, if the selection mode permits it.

###### Gtk.FlowBox::selected-children-changed

Emitted when the set of selected children changes.

###### Gtk.FlowBox::toggle-cursor-child

Emitted to toggle the selection of the child that has the focus.

###### Gtk.FlowBox::unselect-all

Emitted to unselect all children of the box, if the selection mode permits it.

##### Signals inherited from GtkWidget (13)

###### GtkWidget::destroy

Signals that all holders of a reference to the widget should release the reference that they hold.

###### GtkWidget::direction-changed

Emitted when the text direction of a widget changes.

###### GtkWidget::hide

Emitted when `widget` is hidden.

###### GtkWidget::keynav-failed

Emitted if keyboard navigation fails.

###### GtkWidget::map

Emitted when `widget` is going to be mapped.

###### GtkWidget::mnemonic-activate

Emitted when a widget is activated via a mnemonic.

###### GtkWidget::move-focus

Emitted when the focus is moved.

###### GtkWidget::query-tooltip

Emitted when the widget’s tooltip is about to be shown.

###### GtkWidget::realize

Emitted when `widget` is associated with a `GdkSurface`.

###### GtkWidget::show

Emitted when `widget` is shown.

###### GtkWidget::state-flags-changed

Emitted when the widget state changes.

###### GtkWidget::unmap

Emitted when `widget` is going to be unmapped.

###### GtkWidget::unrealize

Emitted when the `GdkSurface` associated with `widget` is destroyed.

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.