<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
<!ENTITY version SYSTEM "version.xml">
<!ENTITY pi "&#960;">
<!ENTITY solidus "&#8260;">
]>
<refentry id="GtkFlowBox">
<refmeta>
<refentrytitle role="top_of_page" id="GtkFlowBox.top_of_page">GtkFlowBox</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>GTK4 Library</refmiscinfo>
</refmeta>
<refnamediv>
<refname>GtkFlowBox</refname>
<refpurpose>A container that allows reflowing its children</refpurpose>
</refnamediv>

<refsect1 id="GtkFlowBox.functions" role="functions_proto">
<title role="functions_proto.title">Functions</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="functions_proto_type" colwidth="150px"/>
<colspec colname="functions_proto_name"/>
<tbody>
<row><entry role="function_type"><link linkend="GtkWidget"><returnvalue>GtkWidget</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-flow-box-new">gtk_flow_box_new</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-insert">gtk_flow_box_insert</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-remove">gtk_flow_box_remove</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkFlowBoxChild"><returnvalue>GtkFlowBoxChild</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-flow-box-get-child-at-index">gtk_flow_box_get_child_at_index</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkFlowBoxChild"><returnvalue>GtkFlowBoxChild</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-flow-box-get-child-at-pos">gtk_flow_box_get_child_at_pos</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-set-hadjustment">gtk_flow_box_set_hadjustment</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-set-vadjustment">gtk_flow_box_set_vadjustment</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-set-homogeneous">gtk_flow_box_set_homogeneous</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-get-homogeneous">gtk_flow_box_get_homogeneous</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-set-row-spacing">gtk_flow_box_set_row_spacing</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="guint"><returnvalue>guint</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-get-row-spacing">gtk_flow_box_get_row_spacing</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-set-column-spacing">gtk_flow_box_set_column_spacing</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="guint"><returnvalue>guint</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-get-column-spacing">gtk_flow_box_get_column_spacing</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-set-min-children-per-line">gtk_flow_box_set_min_children_per_line</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="guint"><returnvalue>guint</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-get-min-children-per-line">gtk_flow_box_get_min_children_per_line</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-set-max-children-per-line">gtk_flow_box_set_max_children_per_line</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="guint"><returnvalue>guint</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-get-max-children-per-line">gtk_flow_box_get_max_children_per_line</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-set-activate-on-single-click">gtk_flow_box_set_activate_on_single_click</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-get-activate-on-single-click">gtk_flow_box_get_activate_on_single_click</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="GtkFlowBoxForeachFunc">*GtkFlowBoxForeachFunc</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-selected-foreach">gtk_flow_box_selected_foreach</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GList"><returnvalue>GList</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-flow-box-get-selected-children">gtk_flow_box_get_selected_children</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-select-child">gtk_flow_box_select_child</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-unselect-child">gtk_flow_box_unselect_child</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-select-all">gtk_flow_box_select_all</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-unselect-all">gtk_flow_box_unselect_all</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-set-selection-mode">gtk_flow_box_set_selection_mode</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkSelectionMode"><returnvalue>GtkSelectionMode</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-get-selection-mode">gtk_flow_box_get_selection_mode</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="GtkFlowBoxFilterFunc">*GtkFlowBoxFilterFunc</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-set-filter-func">gtk_flow_box_set_filter_func</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-invalidate-filter">gtk_flow_box_invalidate_filter</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gint"><returnvalue>gint</returnvalue></link>
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="GtkFlowBoxSortFunc">*GtkFlowBoxSortFunc</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-set-sort-func">gtk_flow_box_set_sort_func</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-invalidate-sort">gtk_flow_box_invalidate_sort</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkWidget"><returnvalue>GtkWidget</returnvalue></link>&#160;*
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="GtkFlowBoxCreateWidgetFunc">*GtkFlowBoxCreateWidgetFunc</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-bind-model">gtk_flow_box_bind_model</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

<row><entry role="function_type"><link linkend="GtkWidget"><returnvalue>GtkWidget</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-flow-box-child-new">gtk_flow_box_child_new</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-child-set-child">gtk_flow_box_child_set_child</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkWidget"><returnvalue>GtkWidget</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-flow-box-child-get-child">gtk_flow_box_child_get_child</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gint"><returnvalue>gint</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-child-get-index">gtk_flow_box_child_get_index</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-child-is-selected">gtk_flow_box_child_is_selected</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gtk-flow-box-child-changed">gtk_flow_box_child_changed</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="GtkFlowBox.properties" role="properties">
<title role="properties.title">Properties</title>
<informaltable frame="none">
<tgroup cols="3">
<colspec colname="properties_type" colwidth="150px"/>
<colspec colname="properties_name" colwidth="300px"/>
<colspec colname="properties_flags" colwidth="200px"/>
<tbody>
<row><entry role="property_type"><link linkend="gboolean"><type>gboolean</type></link></entry><entry role="property_name"><link linkend="GtkFlowBox--accept-unpaired-release">accept-unpaired-release</link></entry><entry role="property_flags">Read / Write</entry></row>
<row><entry role="property_type"><link linkend="gboolean"><type>gboolean</type></link></entry><entry role="property_name"><link linkend="GtkFlowBox--activate-on-single-click">activate-on-single-click</link></entry><entry role="property_flags">Read / Write</entry></row>
<row><entry role="property_type"><link linkend="guint"><type>guint</type></link></entry><entry role="property_name"><link linkend="GtkFlowBox--column-spacing">column-spacing</link></entry><entry role="property_flags">Read / Write</entry></row>
<row><entry role="property_type"><link linkend="gboolean"><type>gboolean</type></link></entry><entry role="property_name"><link linkend="GtkFlowBox--homogeneous">homogeneous</link></entry><entry role="property_flags">Read / Write</entry></row>
<row><entry role="property_type"><link linkend="guint"><type>guint</type></link></entry><entry role="property_name"><link linkend="GtkFlowBox--max-children-per-line">max-children-per-line</link></entry><entry role="property_flags">Read / Write</entry></row>
<row><entry role="property_type"><link linkend="guint"><type>guint</type></link></entry><entry role="property_name"><link linkend="GtkFlowBox--min-children-per-line">min-children-per-line</link></entry><entry role="property_flags">Read / Write</entry></row>
<row><entry role="property_type"><link linkend="guint"><type>guint</type></link></entry><entry role="property_name"><link linkend="GtkFlowBox--row-spacing">row-spacing</link></entry><entry role="property_flags">Read / Write</entry></row>
<row><entry role="property_type"><link linkend="GtkSelectionMode"><type>GtkSelectionMode</type></link></entry><entry role="property_name"><link linkend="GtkFlowBox--selection-mode">selection-mode</link></entry><entry role="property_flags">Read / Write</entry></row>
<row><entry role="property_type"><link linkend="GtkWidget"><type>GtkWidget</type></link>&#160;*</entry><entry role="property_name"><link linkend="GtkFlowBoxChild--child">child</link></entry><entry role="property_flags">Read / Write</entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="GtkFlowBox.signals" role="signal_proto">
<title role="signal_proto.title">Signals</title>
<informaltable frame="none">
<tgroup cols="3">
<colspec colname="signal_proto_type" colwidth="150px"/>
<colspec colname="signal_proto_name" colwidth="300px"/>
<colspec colname="signal_proto_flags" colwidth="200px"/>
<tbody>
<row><entry role="signal_type"><link linkend="void"><returnvalue>void</returnvalue></link></entry><entry role="signal_name"><link linkend="GtkFlowBox-activate-cursor-child">activate-cursor-child</link></entry><entry role="signal_flags"><link linkend="G-SIGNAL-ACTION:CAPS">Action</link></entry></row>
<row><entry role="signal_type"><link linkend="void"><returnvalue>void</returnvalue></link></entry><entry role="signal_name"><link linkend="GtkFlowBox-child-activated">child-activated</link></entry><entry role="signal_flags"><link linkend="G-SIGNAL-RUN-LAST:CAPS">Run Last</link></entry></row>
<row><entry role="signal_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link></entry><entry role="signal_name"><link linkend="GtkFlowBox-move-cursor">move-cursor</link></entry><entry role="signal_flags"><link linkend="G-SIGNAL-ACTION:CAPS">Action</link></entry></row>
<row><entry role="signal_type"><link linkend="void"><returnvalue>void</returnvalue></link></entry><entry role="signal_name"><link linkend="GtkFlowBox-select-all">select-all</link></entry><entry role="signal_flags"><link linkend="G-SIGNAL-ACTION:CAPS">Action</link></entry></row>
<row><entry role="signal_type"><link linkend="void"><returnvalue>void</returnvalue></link></entry><entry role="signal_name"><link linkend="GtkFlowBox-selected-children-changed">selected-children-changed</link></entry><entry role="signal_flags"><link linkend="G-SIGNAL-RUN-FIRST:CAPS">Run First</link></entry></row>
<row><entry role="signal_type"><link linkend="void"><returnvalue>void</returnvalue></link></entry><entry role="signal_name"><link linkend="GtkFlowBox-toggle-cursor-child">toggle-cursor-child</link></entry><entry role="signal_flags"><link linkend="G-SIGNAL-ACTION:CAPS">Action</link></entry></row>
<row><entry role="signal_type"><link linkend="void"><returnvalue>void</returnvalue></link></entry><entry role="signal_name"><link linkend="GtkFlowBox-unselect-all">unselect-all</link></entry><entry role="signal_flags"><link linkend="G-SIGNAL-ACTION:CAPS">Action</link></entry></row>
<row><entry role="signal_type"><link linkend="void"><returnvalue>void</returnvalue></link></entry><entry role="signal_name"><link linkend="GtkFlowBoxChild-activate">activate</link></entry><entry role="signal_flags"><link linkend="G-SIGNAL-ACTION:CAPS">Action</link></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<anchor id="GtkFlowBoxChild"/><refsect1 id="GtkFlowBox.other" role="other_proto">
<title role="other_proto.title">Types and Values</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="other_proto_type" colwidth="150px"/>
<colspec colname="other_proto_name"/>
<tbody>
<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="GtkFlowBox-struct">GtkFlowBox</link></entry></row>

<row><entry role="datatype_keyword">struct</entry><entry role="function_name"><link linkend="GtkFlowBoxChild-struct">GtkFlowBoxChild</link></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="GtkFlowBox.object-hierarchy" role="object_hierarchy">
<title role="object_hierarchy.title">Object Hierarchy</title>
<screen>    <link linkend="GObject">GObject</link>
    <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> <link linkend="GInitiallyUnowned">GInitiallyUnowned</link>
        <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> <link linkend="GtkWidget">GtkWidget</link>
            <phrase role="lineart">&#9500;&#9472;&#9472;</phrase> GtkFlowBox
            <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> GtkFlowBoxChild
</screen>
</refsect1>
<refsect1 id="GtkFlowBox.implemented-interfaces" role="impl_interfaces">
<title role="impl_interfaces.title">Implemented Interfaces</title>
<para>
GtkFlowBox implements
 <link linkend="AtkImplementorIface">AtkImplementorIface</link>,  <link linkend="GtkBuildable">GtkBuildable</link>,  <link linkend="GtkConstraintTarget">GtkConstraintTarget</link> and  <link linkend="GtkOrientable">GtkOrientable</link>.</para>
<para>
GtkFlowBoxChild implements
 <link linkend="AtkImplementorIface">AtkImplementorIface</link>,  <link linkend="GtkBuildable">GtkBuildable</link> and  <link linkend="GtkConstraintTarget">GtkConstraintTarget</link>.</para>

</refsect1>

<refsect1 id="GtkFlowBox.includes"><title>Includes</title><synopsis>#include &lt;gtk/gtk.h&gt;
</synopsis></refsect1>

<refsect1 id="GtkFlowBox.description" role="desc">
<title role="desc.title">Description</title>
<para>A GtkFlowBox positions child widgets in sequence according to its
orientation.</para>
<para>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.</para>
<para>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.</para>
<para>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 <link linkend="GtkScrolledWindow"><type>GtkScrolledWindow</type></link> to enable that.</para>
<para>The children of a GtkFlowBox can be dynamically sorted and filtered.</para>
<para>Although a GtkFlowBox must have only <link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> children,
you can add any kind of widget to it via <link linkend="gtk-container-add"><function>gtk_container_add()</function></link>, and
a GtkFlowBoxChild widget will automatically be inserted between
the box and the widget.</para>
<para>Also see <link linkend="GtkListBox"><type>GtkListBox</type></link>.</para>
<para>GtkFlowBox was added in GTK+ 3.12.</para>
<refsect2><title>CSS nodes</title><informalexample><programlisting role="example"><![CDATA[
flowbox
├── flowboxchild
│   ╰── <child>
├── flowboxchild
│   ╰── <child>
┊
╰── [rubberband]
]]></programlisting></informalexample>
<para></para>
<para>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.</para>
</refsect2>

</refsect1>
<refsect1 id="GtkFlowBox.functions_details" role="details">
<title role="details.title">Functions</title>
<refsect2 id="gtk-flow-box-new" role="function">
<title>gtk_flow_box_new&#160;()</title>
<indexterm zone="gtk-flow-box-new"><primary>gtk_flow_box_new</primary></indexterm>
<programlisting language="C"><link linkend="GtkWidget"><returnvalue>GtkWidget</returnvalue></link>&#160;*
gtk_flow_box_new (<parameter><type>void</type></parameter>);</programlisting>
<para>Creates a GtkFlowBox.</para>
<refsect3 id="gtk-flow-box-new.returns" role="returns">
<title>Returns</title>
<para> a new <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> container</para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-insert" role="function">
<title>gtk_flow_box_insert&#160;()</title>
<indexterm zone="gtk-flow-box-insert"><primary>gtk_flow_box_insert</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_insert (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                     <parameter><link linkend="GtkWidget"><type>GtkWidget</type></link> *widget</parameter>,
                     <parameter><link linkend="gint"><type>gint</type></link> position</parameter>);</programlisting>
<para>Inserts the <parameter>widget</parameter>
 into <parameter>box</parameter>
 at <parameter>position</parameter>
.</para>
<para>If a sort function is set, the widget will actually be inserted
at the calculated position and this function has the same effect
as <link linkend="gtk-container-add"><function>gtk_container_add()</function></link>.</para>
<para>If <parameter>position</parameter>
 is -1, or larger than the total number of children
in the <parameter>box</parameter>
, then the <parameter>widget</parameter>
 will be appended to the end.</para>
<refsect3 id="gtk-flow-box-insert.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>widget</para></entry>
<entry role="parameter_description"><para>the <link linkend="GtkWidget"><type>GtkWidget</type></link> to add</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>position</para></entry>
<entry role="parameter_description"><para>the position to insert <parameter>child</parameter>
in</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-remove" role="function">
<title>gtk_flow_box_remove&#160;()</title>
<indexterm zone="gtk-flow-box-remove"><primary>gtk_flow_box_remove</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_remove (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                     <parameter><link linkend="GtkWidget"><type>GtkWidget</type></link> *widget</parameter>);</programlisting>
<para>Removes a child from <parameter>box</parameter>
.</para>
<refsect3 id="gtk-flow-box-remove.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>widget</para></entry>
<entry role="parameter_description"><para>the child widget to remove</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-get-child-at-index" role="function">
<title>gtk_flow_box_get_child_at_index&#160;()</title>
<indexterm zone="gtk-flow-box-get-child-at-index"><primary>gtk_flow_box_get_child_at_index</primary></indexterm>
<programlisting language="C"><link linkend="GtkFlowBoxChild"><returnvalue>GtkFlowBoxChild</returnvalue></link>&#160;*
gtk_flow_box_get_child_at_index (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                                 <parameter><link linkend="gint"><type>gint</type></link> idx</parameter>);</programlisting>
<para>Gets the nth child in the <parameter>box</parameter>
.</para>
<refsect3 id="gtk-flow-box-get-child-at-index.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>idx</para></entry>
<entry role="parameter_description"><para>the position of the child</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-flow-box-get-child-at-index.returns" role="returns">
<title>Returns</title>
<para>the child widget, which will
always be a <link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> or <link linkend="NULL:CAPS"><literal>NULL</literal></link> in case no child widget
with the given index exists. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>][<acronym>nullable</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-get-child-at-pos" role="function">
<title>gtk_flow_box_get_child_at_pos&#160;()</title>
<indexterm zone="gtk-flow-box-get-child-at-pos"><primary>gtk_flow_box_get_child_at_pos</primary></indexterm>
<programlisting language="C"><link linkend="GtkFlowBoxChild"><returnvalue>GtkFlowBoxChild</returnvalue></link>&#160;*
gtk_flow_box_get_child_at_pos (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                               <parameter><link linkend="gint"><type>gint</type></link> x</parameter>,
                               <parameter><link linkend="gint"><type>gint</type></link> y</parameter>);</programlisting>
<para>Gets the child in the (<parameter>x</parameter>
, <parameter>y</parameter>
) position. Both <parameter>x</parameter>
 and <parameter>y</parameter>
 are
assumed to be relative to the origin of <parameter>box</parameter>
.</para>
<refsect3 id="gtk-flow-box-get-child-at-pos.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>the x coordinate of the child</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>the y coordinate of the child</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-flow-box-get-child-at-pos.returns" role="returns">
<title>Returns</title>
<para>the child widget, which will
always be a <link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> or <link linkend="NULL:CAPS"><literal>NULL</literal></link> in case no child widget
exists for the given x and y coordinates. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>][<acronym>nullable</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-set-hadjustment" role="function">
<title>gtk_flow_box_set_hadjustment&#160;()</title>
<indexterm zone="gtk-flow-box-set-hadjustment"><primary>gtk_flow_box_set_hadjustment</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_set_hadjustment (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                              <parameter><link linkend="GtkAdjustment"><type>GtkAdjustment</type></link> *adjustment</parameter>);</programlisting>
<para>Hooks up an adjustment to focus handling in <parameter>box</parameter>
.
The adjustment is also used for autoscrolling during
rubberband selection. See <link linkend="gtk-scrolled-window-get-hadjustment"><function>gtk_scrolled_window_get_hadjustment()</function></link>
for a typical way of obtaining the adjustment, and
<link linkend="gtk-flow-box-set-vadjustment"><function>gtk_flow_box_set_vadjustment()</function></link>for setting the vertical
adjustment.</para>
<para>The adjustments have to be in pixel units and in the same
coordinate system as the allocation for immediate children
of the box.</para>
<refsect3 id="gtk-flow-box-set-hadjustment.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>adjustment</para></entry>
<entry role="parameter_description"><para>an adjustment which should be adjusted
when the focus is moved among the descendents of <parameter>container</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-set-vadjustment" role="function">
<title>gtk_flow_box_set_vadjustment&#160;()</title>
<indexterm zone="gtk-flow-box-set-vadjustment"><primary>gtk_flow_box_set_vadjustment</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_set_vadjustment (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                              <parameter><link linkend="GtkAdjustment"><type>GtkAdjustment</type></link> *adjustment</parameter>);</programlisting>
<para>Hooks up an adjustment to focus handling in <parameter>box</parameter>
.
The adjustment is also used for autoscrolling during
rubberband selection. See <link linkend="gtk-scrolled-window-get-vadjustment"><function>gtk_scrolled_window_get_vadjustment()</function></link>
for a typical way of obtaining the adjustment, and
<link linkend="gtk-flow-box-set-hadjustment"><function>gtk_flow_box_set_hadjustment()</function></link>for setting the horizontal
adjustment.</para>
<para>The adjustments have to be in pixel units and in the same
coordinate system as the allocation for immediate children
of the box.</para>
<refsect3 id="gtk-flow-box-set-vadjustment.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>adjustment</para></entry>
<entry role="parameter_description"><para>an adjustment which should be adjusted
when the focus is moved among the descendents of <parameter>container</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-set-homogeneous" role="function">
<title>gtk_flow_box_set_homogeneous&#160;()</title>
<indexterm zone="gtk-flow-box-set-homogeneous"><primary>gtk_flow_box_set_homogeneous</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_set_homogeneous (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                              <parameter><link linkend="gboolean"><type>gboolean</type></link> homogeneous</parameter>);</programlisting>
<para>Sets the <link linkend="GtkFlowBox--homogeneous"><type>“homogeneous”</type></link> property of <parameter>box</parameter>
, controlling
whether or not all children of <parameter>box</parameter>
 are given equal space
in the box.</para>
<refsect3 id="gtk-flow-box-set-homogeneous.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>homogeneous</para></entry>
<entry role="parameter_description"><para><link linkend="TRUE:CAPS"><literal>TRUE</literal></link> to create equal allotments,
<link linkend="FALSE:CAPS"><literal>FALSE</literal></link> for variable allotments</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-get-homogeneous" role="function">
<title>gtk_flow_box_get_homogeneous&#160;()</title>
<indexterm zone="gtk-flow-box-get-homogeneous"><primary>gtk_flow_box_get_homogeneous</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gtk_flow_box_get_homogeneous (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>);</programlisting>
<para>Returns whether the box is homogeneous (all children are the
same size). See <link linkend="gtk-box-set-homogeneous"><function>gtk_box_set_homogeneous()</function></link>.</para>
<refsect3 id="gtk-flow-box-get-homogeneous.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-flow-box-get-homogeneous.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the box is homogeneous.</para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-set-row-spacing" role="function">
<title>gtk_flow_box_set_row_spacing&#160;()</title>
<indexterm zone="gtk-flow-box-set-row-spacing"><primary>gtk_flow_box_set_row_spacing</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_set_row_spacing (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                              <parameter><link linkend="guint"><type>guint</type></link> spacing</parameter>);</programlisting>
<para>Sets the vertical space to add between children.
See the <link linkend="GtkFlowBox--row-spacing"><type>“row-spacing”</type></link> property.</para>
<refsect3 id="gtk-flow-box-set-row-spacing.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>spacing</para></entry>
<entry role="parameter_description"><para>the spacing to use</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-get-row-spacing" role="function">
<title>gtk_flow_box_get_row_spacing&#160;()</title>
<indexterm zone="gtk-flow-box-get-row-spacing"><primary>gtk_flow_box_get_row_spacing</primary></indexterm>
<programlisting language="C"><link linkend="guint"><returnvalue>guint</returnvalue></link>
gtk_flow_box_get_row_spacing (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>);</programlisting>
<para>Gets the vertical spacing.</para>
<refsect3 id="gtk-flow-box-get-row-spacing.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-flow-box-get-row-spacing.returns" role="returns">
<title>Returns</title>
<para> the vertical spacing</para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-set-column-spacing" role="function">
<title>gtk_flow_box_set_column_spacing&#160;()</title>
<indexterm zone="gtk-flow-box-set-column-spacing"><primary>gtk_flow_box_set_column_spacing</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_set_column_spacing (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                                 <parameter><link linkend="guint"><type>guint</type></link> spacing</parameter>);</programlisting>
<para>Sets the horizontal space to add between children.
See the <link linkend="GtkFlowBox--column-spacing"><type>“column-spacing”</type></link> property.</para>
<refsect3 id="gtk-flow-box-set-column-spacing.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>spacing</para></entry>
<entry role="parameter_description"><para>the spacing to use</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-get-column-spacing" role="function">
<title>gtk_flow_box_get_column_spacing&#160;()</title>
<indexterm zone="gtk-flow-box-get-column-spacing"><primary>gtk_flow_box_get_column_spacing</primary></indexterm>
<programlisting language="C"><link linkend="guint"><returnvalue>guint</returnvalue></link>
gtk_flow_box_get_column_spacing (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>);</programlisting>
<para>Gets the horizontal spacing.</para>
<refsect3 id="gtk-flow-box-get-column-spacing.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-flow-box-get-column-spacing.returns" role="returns">
<title>Returns</title>
<para> the horizontal spacing</para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-set-min-children-per-line" role="function">
<title>gtk_flow_box_set_min_children_per_line&#160;()</title>
<indexterm zone="gtk-flow-box-set-min-children-per-line"><primary>gtk_flow_box_set_min_children_per_line</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_set_min_children_per_line
                               (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                                <parameter><link linkend="guint"><type>guint</type></link> n_children</parameter>);</programlisting>
<para>Sets the minimum number of children to line up
in <parameter>box</parameter>
’s orientation before flowing.</para>
<refsect3 id="gtk-flow-box-set-min-children-per-line.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>n_children</para></entry>
<entry role="parameter_description"><para>the minimum number of children per line</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-get-min-children-per-line" role="function">
<title>gtk_flow_box_get_min_children_per_line&#160;()</title>
<indexterm zone="gtk-flow-box-get-min-children-per-line"><primary>gtk_flow_box_get_min_children_per_line</primary></indexterm>
<programlisting language="C"><link linkend="guint"><returnvalue>guint</returnvalue></link>
gtk_flow_box_get_min_children_per_line
                               (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>);</programlisting>
<para>Gets the minimum number of children per line.</para>
<refsect3 id="gtk-flow-box-get-min-children-per-line.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-flow-box-get-min-children-per-line.returns" role="returns">
<title>Returns</title>
<para> the minimum number of children per line</para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-set-max-children-per-line" role="function">
<title>gtk_flow_box_set_max_children_per_line&#160;()</title>
<indexterm zone="gtk-flow-box-set-max-children-per-line"><primary>gtk_flow_box_set_max_children_per_line</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_set_max_children_per_line
                               (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                                <parameter><link linkend="guint"><type>guint</type></link> n_children</parameter>);</programlisting>
<para>Sets the maximum number of children to request and
allocate space for in <parameter>box</parameter>
’s orientation.</para>
<para>Setting the maximum number of children per line
limits the overall natural size request to be no more
than <parameter>n_children</parameter>
 children long in the given orientation.</para>
<refsect3 id="gtk-flow-box-set-max-children-per-line.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>n_children</para></entry>
<entry role="parameter_description"><para>the maximum number of children per line</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-get-max-children-per-line" role="function">
<title>gtk_flow_box_get_max_children_per_line&#160;()</title>
<indexterm zone="gtk-flow-box-get-max-children-per-line"><primary>gtk_flow_box_get_max_children_per_line</primary></indexterm>
<programlisting language="C"><link linkend="guint"><returnvalue>guint</returnvalue></link>
gtk_flow_box_get_max_children_per_line
                               (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>);</programlisting>
<para>Gets the maximum number of children per line.</para>
<refsect3 id="gtk-flow-box-get-max-children-per-line.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-flow-box-get-max-children-per-line.returns" role="returns">
<title>Returns</title>
<para> the maximum number of children per line</para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-set-activate-on-single-click" role="function">
<title>gtk_flow_box_set_activate_on_single_click&#160;()</title>
<indexterm zone="gtk-flow-box-set-activate-on-single-click"><primary>gtk_flow_box_set_activate_on_single_click</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_set_activate_on_single_click
                               (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                                <parameter><link linkend="gboolean"><type>gboolean</type></link> single</parameter>);</programlisting>
<para>If <parameter>single</parameter>
 is <link linkend="TRUE:CAPS"><literal>TRUE</literal></link>, children will be activated when you click
on them, otherwise you need to double-click.</para>
<refsect3 id="gtk-flow-box-set-activate-on-single-click.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>single</para></entry>
<entry role="parameter_description"><para><link linkend="TRUE:CAPS"><literal>TRUE</literal></link> to emit child-activated on a single click</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-get-activate-on-single-click" role="function">
<title>gtk_flow_box_get_activate_on_single_click&#160;()</title>
<indexterm zone="gtk-flow-box-get-activate-on-single-click"><primary>gtk_flow_box_get_activate_on_single_click</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gtk_flow_box_get_activate_on_single_click
                               (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>);</programlisting>
<para>Returns whether children activate on single clicks.</para>
<refsect3 id="gtk-flow-box-get-activate-on-single-click.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-flow-box-get-activate-on-single-click.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if children are activated on single click,
<link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise</para>
</refsect3></refsect2>
<refsect2 id="GtkFlowBoxForeachFunc" role="function">
<title>GtkFlowBoxForeachFunc&#160;()</title>
<indexterm zone="GtkFlowBoxForeachFunc"><primary>GtkFlowBoxForeachFunc</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*GtkFlowBoxForeachFunc<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                          <parameter><link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> *child</parameter>,
                          <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>);</programlisting>
<para>A function used by <link linkend="gtk-flow-box-selected-foreach"><function>gtk_flow_box_selected_foreach()</function></link>.
It will be called on every selected child of the <parameter>box</parameter>
.</para>
<refsect3 id="GtkFlowBoxForeachFunc.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>child</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>user_data</para></entry>
<entry role="parameter_description"><para>user data. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>closure</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-selected-foreach" role="function">
<title>gtk_flow_box_selected_foreach&#160;()</title>
<indexterm zone="gtk-flow-box-selected-foreach"><primary>gtk_flow_box_selected_foreach</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_selected_foreach (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                               <parameter><link linkend="GtkFlowBoxForeachFunc"><type>GtkFlowBoxForeachFunc</type></link> func</parameter>,
                               <parameter><link linkend="gpointer"><type>gpointer</type></link> data</parameter>);</programlisting>
<para>Calls a function for each selected child.</para>
<para>Note that the selection cannot be modified from within
this function.</para>
<refsect3 id="gtk-flow-box-selected-foreach.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>func</para></entry>
<entry role="parameter_description"><para>the function to call for each selected child. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>scope call</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>data</para></entry>
<entry role="parameter_description"><para>user data to pass to the function</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-get-selected-children" role="function">
<title>gtk_flow_box_get_selected_children&#160;()</title>
<indexterm zone="gtk-flow-box-get-selected-children"><primary>gtk_flow_box_get_selected_children</primary></indexterm>
<programlisting language="C"><link linkend="GList"><returnvalue>GList</returnvalue></link>&#160;*
gtk_flow_box_get_selected_children (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>);</programlisting>
<para>Creates a list of all selected children.</para>
<refsect3 id="gtk-flow-box-get-selected-children.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-flow-box-get-selected-children.returns" role="returns">
<title>Returns</title>
<para>A <link linkend="GList"><type>GList</type></link> containing the <link linkend="GtkWidget"><type>GtkWidget</type></link> for each selected child.
Free with <link linkend="g-list-free"><function>g_list_free()</function></link> when done. </para>
<para><emphasis role="annotation">[<acronym>element-type</acronym> GtkFlowBoxChild][<acronym>transfer container</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-select-child" role="function">
<title>gtk_flow_box_select_child&#160;()</title>
<indexterm zone="gtk-flow-box-select-child"><primary>gtk_flow_box_select_child</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_select_child (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                           <parameter><link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> *child</parameter>);</programlisting>
<para>Selects a single child of <parameter>box</parameter>
, if the selection
mode allows it.</para>
<refsect3 id="gtk-flow-box-select-child.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>child</para></entry>
<entry role="parameter_description"><para>a child of <parameter>box</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-unselect-child" role="function">
<title>gtk_flow_box_unselect_child&#160;()</title>
<indexterm zone="gtk-flow-box-unselect-child"><primary>gtk_flow_box_unselect_child</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_unselect_child (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                             <parameter><link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> *child</parameter>);</programlisting>
<para>Unselects a single child of <parameter>box</parameter>
, if the selection
mode allows it.</para>
<refsect3 id="gtk-flow-box-unselect-child.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>child</para></entry>
<entry role="parameter_description"><para>a child of <parameter>box</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-select-all" role="function">
<title>gtk_flow_box_select_all&#160;()</title>
<indexterm zone="gtk-flow-box-select-all"><primary>gtk_flow_box_select_all</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_select_all (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>);</programlisting>
<para>Select all children of <parameter>box</parameter>
, if the selection
mode allows it.</para>
<refsect3 id="gtk-flow-box-select-all.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-unselect-all" role="function">
<title>gtk_flow_box_unselect_all&#160;()</title>
<indexterm zone="gtk-flow-box-unselect-all"><primary>gtk_flow_box_unselect_all</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_unselect_all (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>);</programlisting>
<para>Unselect all children of <parameter>box</parameter>
, if the selection
mode allows it.</para>
<refsect3 id="gtk-flow-box-unselect-all.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-set-selection-mode" role="function">
<title>gtk_flow_box_set_selection_mode&#160;()</title>
<indexterm zone="gtk-flow-box-set-selection-mode"><primary>gtk_flow_box_set_selection_mode</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_set_selection_mode (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                                 <parameter><link linkend="GtkSelectionMode"><type>GtkSelectionMode</type></link> mode</parameter>);</programlisting>
<para>Sets how selection works in <parameter>box</parameter>
.
See <link linkend="GtkSelectionMode"><type>GtkSelectionMode</type></link> for details.</para>
<refsect3 id="gtk-flow-box-set-selection-mode.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>mode</para></entry>
<entry role="parameter_description"><para>the new selection mode</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-get-selection-mode" role="function">
<title>gtk_flow_box_get_selection_mode&#160;()</title>
<indexterm zone="gtk-flow-box-get-selection-mode"><primary>gtk_flow_box_get_selection_mode</primary></indexterm>
<programlisting language="C"><link linkend="GtkSelectionMode"><returnvalue>GtkSelectionMode</returnvalue></link>
gtk_flow_box_get_selection_mode (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>);</programlisting>
<para>Gets the selection mode of <parameter>box</parameter>
.</para>
<refsect3 id="gtk-flow-box-get-selection-mode.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-flow-box-get-selection-mode.returns" role="returns">
<title>Returns</title>
<para> the <link linkend="GtkSelectionMode"><type>GtkSelectionMode</type></link></para>
</refsect3></refsect2>
<refsect2 id="GtkFlowBoxFilterFunc" role="function">
<title>GtkFlowBoxFilterFunc&#160;()</title>
<indexterm zone="GtkFlowBoxFilterFunc"><primary>GtkFlowBoxFilterFunc</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*GtkFlowBoxFilterFunc<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> *child</parameter>,
                         <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>);</programlisting>
<para>A function that will be called whenever a child changes
or is added. It lets you control if the child should be
visible or not.</para>
<refsect3 id="GtkFlowBoxFilterFunc.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>child</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> that may be filtered</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>user_data</para></entry>
<entry role="parameter_description"><para>user data. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>closure</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="GtkFlowBoxFilterFunc.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the row should be visible, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise</para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-set-filter-func" role="function">
<title>gtk_flow_box_set_filter_func&#160;()</title>
<indexterm zone="gtk-flow-box-set-filter-func"><primary>gtk_flow_box_set_filter_func</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_set_filter_func (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                              <parameter><link linkend="GtkFlowBoxFilterFunc"><type>GtkFlowBoxFilterFunc</type></link> filter_func</parameter>,
                              <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>,
                              <parameter><link linkend="GDestroyNotify"><type>GDestroyNotify</type></link> destroy</parameter>);</programlisting>
<para>By setting a filter function on the <parameter>box</parameter>
 one can decide dynamically
which of the children to show. For instance, to implement a search
function that only shows the children matching the search terms.</para>
<para>The <parameter>filter_func</parameter>
 will be called for each child after the call, and
it will continue to be called each time a child changes (via
<link linkend="gtk-flow-box-child-changed"><function>gtk_flow_box_child_changed()</function></link>) or when <link linkend="gtk-flow-box-invalidate-filter"><function>gtk_flow_box_invalidate_filter()</function></link>
is called.</para>
<para>Note that using a filter function is incompatible with using a model
(see <link linkend="gtk-flow-box-bind-model"><function>gtk_flow_box_bind_model()</function></link>).</para>
<refsect3 id="gtk-flow-box-set-filter-func.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>filter_func</para></entry>
<entry role="parameter_description"><para>callback that
lets you filter which children to show. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>user_data</para></entry>
<entry role="parameter_description"><para>user data passed to <parameter>filter_func</parameter>
. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>closure</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>destroy</para></entry>
<entry role="parameter_description"><para>destroy notifier for <parameter>user_data</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-invalidate-filter" role="function">
<title>gtk_flow_box_invalidate_filter&#160;()</title>
<indexterm zone="gtk-flow-box-invalidate-filter"><primary>gtk_flow_box_invalidate_filter</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_invalidate_filter (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>);</programlisting>
<para>Updates the filtering for all children.</para>
<para>Call this function when the result of the filter
function on the <parameter>box</parameter>
 is changed due ot an external
factor. For instance, this would be used if the
filter function just looked for a specific search
term, and the entry with the string has changed.</para>
<refsect3 id="gtk-flow-box-invalidate-filter.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="GtkFlowBoxSortFunc" role="function">
<title>GtkFlowBoxSortFunc&#160;()</title>
<indexterm zone="GtkFlowBoxSortFunc"><primary>GtkFlowBoxSortFunc</primary></indexterm>
<programlisting language="C"><link linkend="gint"><returnvalue>gint</returnvalue></link>
<phrase role="c_punctuation">(</phrase>*GtkFlowBoxSortFunc<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> *child1</parameter>,
                       <parameter><link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> *child2</parameter>,
                       <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>);</programlisting>
<para>A function to compare two children to determine which
should come first.</para>
<refsect3 id="GtkFlowBoxSortFunc.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>child1</para></entry>
<entry role="parameter_description"><para>the first child</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>child2</para></entry>
<entry role="parameter_description"><para>the second child</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>user_data</para></entry>
<entry role="parameter_description"><para>user data. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>closure</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="GtkFlowBoxSortFunc.returns" role="returns">
<title>Returns</title>
<para> &lt; 0 if <parameter>child1</parameter>
should be before <parameter>child2</parameter>
, 0 if
the are equal, and &gt; 0 otherwise</para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-set-sort-func" role="function">
<title>gtk_flow_box_set_sort_func&#160;()</title>
<indexterm zone="gtk-flow-box-set-sort-func"><primary>gtk_flow_box_set_sort_func</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_set_sort_func (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                            <parameter><link linkend="GtkFlowBoxSortFunc"><type>GtkFlowBoxSortFunc</type></link> sort_func</parameter>,
                            <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>,
                            <parameter><link linkend="GDestroyNotify"><type>GDestroyNotify</type></link> destroy</parameter>);</programlisting>
<para>By setting a sort function on the <parameter>box</parameter>
, one can dynamically
reorder the children of the box, based on the contents of
the children.</para>
<para>The <parameter>sort_func</parameter>
 will be called for each child after the call,
and will continue to be called each time a child changes (via
<link linkend="gtk-flow-box-child-changed"><function>gtk_flow_box_child_changed()</function></link>) and when <link linkend="gtk-flow-box-invalidate-sort"><function>gtk_flow_box_invalidate_sort()</function></link>
is called.</para>
<para>Note that using a sort function is incompatible with using a model
(see <link linkend="gtk-flow-box-bind-model"><function>gtk_flow_box_bind_model()</function></link>).</para>
<refsect3 id="gtk-flow-box-set-sort-func.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>sort_func</para></entry>
<entry role="parameter_description"><para>the sort function. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>user_data</para></entry>
<entry role="parameter_description"><para>user data passed to <parameter>sort_func</parameter>
. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>closure</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>destroy</para></entry>
<entry role="parameter_description"><para>destroy notifier for <parameter>user_data</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-invalidate-sort" role="function">
<title>gtk_flow_box_invalidate_sort&#160;()</title>
<indexterm zone="gtk-flow-box-invalidate-sort"><primary>gtk_flow_box_invalidate_sort</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_invalidate_sort (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>);</programlisting>
<para>Updates the sorting for all children.</para>
<para>Call this when the result of the sort function on
<parameter>box</parameter>
 is changed due to an external factor.</para>
<refsect3 id="gtk-flow-box-invalidate-sort.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="GtkFlowBoxCreateWidgetFunc" role="function">
<title>GtkFlowBoxCreateWidgetFunc&#160;()</title>
<indexterm zone="GtkFlowBoxCreateWidgetFunc"><primary>GtkFlowBoxCreateWidgetFunc</primary></indexterm>
<programlisting language="C"><link linkend="GtkWidget"><returnvalue>GtkWidget</returnvalue></link>&#160;*
<phrase role="c_punctuation">(</phrase>*GtkFlowBoxCreateWidgetFunc<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="gpointer"><type>gpointer</type></link> item</parameter>,
                               <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>);</programlisting>
<para>Called for flow boxes that are bound to a <link linkend="GListModel"><type>GListModel</type></link> with
<link linkend="gtk-flow-box-bind-model"><function>gtk_flow_box_bind_model()</function></link> for each item that gets added to the model.</para>
<refsect3 id="GtkFlowBoxCreateWidgetFunc.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>item</para></entry>
<entry role="parameter_description"><para>the item from the model for which to create a widget for. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>type</acronym> GObject]</emphasis></entry></row>
<row><entry role="parameter_name"><para>user_data</para></entry>
<entry role="parameter_description"><para>user data from <link linkend="gtk-flow-box-bind-model"><function>gtk_flow_box_bind_model()</function></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>closure</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="GtkFlowBoxCreateWidgetFunc.returns" role="returns">
<title>Returns</title>
<para>a <link linkend="GtkWidget"><type>GtkWidget</type></link> that represents <parameter>item</parameter>
. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-bind-model" role="function">
<title>gtk_flow_box_bind_model&#160;()</title>
<indexterm zone="gtk-flow-box-bind-model"><primary>gtk_flow_box_bind_model</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_bind_model (<parameter><link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box</parameter>,
                         <parameter><link linkend="GListModel"><type>GListModel</type></link> *model</parameter>,
                         <parameter><link linkend="GtkFlowBoxCreateWidgetFunc"><type>GtkFlowBoxCreateWidgetFunc</type></link> create_widget_func</parameter>,
                         <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>,
                         <parameter><link linkend="GDestroyNotify"><type>GDestroyNotify</type></link> user_data_free_func</parameter>);</programlisting>
<para>Binds <parameter>model</parameter>
 to <parameter>box</parameter>
.</para>
<para>If <parameter>box</parameter>
 was already bound to a model, that previous binding is
destroyed.</para>
<para>The contents of <parameter>box</parameter>
 are cleared and then filled with widgets that
represent items from <parameter>model</parameter>
. <parameter>box</parameter>
 is updated whenever <parameter>model</parameter>
 changes.
If <parameter>model</parameter>
 is <link linkend="NULL:CAPS"><literal>NULL</literal></link>, <parameter>box</parameter>
 is left empty.</para>
<para>It is undefined to add or remove widgets directly (for example, with
<link linkend="gtk-flow-box-insert"><function>gtk_flow_box_insert()</function></link> or <link linkend="gtk-container-add"><function>gtk_container_add()</function></link>) while <parameter>box</parameter>
 is bound to a
model.</para>
<para>Note that using a model is incompatible with the filtering and sorting
functionality in GtkFlowBox. When using a model, filtering and sorting
should be implemented by the model.</para>
<refsect3 id="gtk-flow-box-bind-model.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>model</para></entry>
<entry role="parameter_description"><para>the <link linkend="GListModel"><type>GListModel</type></link> to be bound to <parameter>box</parameter>
. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>create_widget_func</para></entry>
<entry role="parameter_description"><para>a function that creates widgets for items</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>user_data</para></entry>
<entry role="parameter_description"><para>user data passed to <parameter>create_widget_func</parameter>
. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>closure</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>user_data_free_func</para></entry>
<entry role="parameter_description"><para>function for freeing <parameter>user_data</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-child-new" role="function">
<title>gtk_flow_box_child_new&#160;()</title>
<indexterm zone="gtk-flow-box-child-new"><primary>gtk_flow_box_child_new</primary></indexterm>
<programlisting language="C"><link linkend="GtkWidget"><returnvalue>GtkWidget</returnvalue></link>&#160;*
gtk_flow_box_child_new (<parameter><type>void</type></parameter>);</programlisting>
<para>Creates a new <link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link>, to be used as a child
of a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link>.</para>
<refsect3 id="gtk-flow-box-child-new.returns" role="returns">
<title>Returns</title>
<para> a new <link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link></para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-child-set-child" role="function">
<title>gtk_flow_box_child_set_child&#160;()</title>
<indexterm zone="gtk-flow-box-child-set-child"><primary>gtk_flow_box_child_set_child</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_child_set_child (<parameter><link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> *self</parameter>,
                              <parameter><link linkend="GtkWidget"><type>GtkWidget</type></link> *child</parameter>);</programlisting>
<para>Sets the child widget of <parameter>self</parameter>
.</para>
<refsect3 id="gtk-flow-box-child-set-child.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>self</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>child</para></entry>
<entry role="parameter_description"><para>the child widget. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-child-get-child" role="function">
<title>gtk_flow_box_child_get_child&#160;()</title>
<indexterm zone="gtk-flow-box-child-get-child"><primary>gtk_flow_box_child_get_child</primary></indexterm>
<programlisting language="C"><link linkend="GtkWidget"><returnvalue>GtkWidget</returnvalue></link>&#160;*
gtk_flow_box_child_get_child (<parameter><link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> *self</parameter>);</programlisting>
<para>Gets the child widget of <parameter>self</parameter>
.</para>
<refsect3 id="gtk-flow-box-child-get-child.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>self</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-flow-box-child-get-child.returns" role="returns">
<title>Returns</title>
<para>the child widget of <parameter>self</parameter>
. </para>
<para><emphasis role="annotation">[<acronym>nullable</acronym>][<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-child-get-index" role="function">
<title>gtk_flow_box_child_get_index&#160;()</title>
<indexterm zone="gtk-flow-box-child-get-index"><primary>gtk_flow_box_child_get_index</primary></indexterm>
<programlisting language="C"><link linkend="gint"><returnvalue>gint</returnvalue></link>
gtk_flow_box_child_get_index (<parameter><link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> *child</parameter>);</programlisting>
<para>Gets the current index of the <parameter>child</parameter>
 in its <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> container.</para>
<refsect3 id="gtk-flow-box-child-get-index.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>child</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-flow-box-child-get-index.returns" role="returns">
<title>Returns</title>
<para> the index of the <parameter>child</parameter>
, or -1 if the <parameter>child</parameter>
is not
in a flow box.</para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-child-is-selected" role="function">
<title>gtk_flow_box_child_is_selected&#160;()</title>
<indexterm zone="gtk-flow-box-child-is-selected"><primary>gtk_flow_box_child_is_selected</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gtk_flow_box_child_is_selected (<parameter><link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> *child</parameter>);</programlisting>
<para>Returns whether the <parameter>child</parameter>
 is currently selected in its
<link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> container.</para>
<refsect3 id="gtk-flow-box-child-is-selected.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>child</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-flow-box-child-is-selected.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>child</parameter>
is selected</para>
</refsect3></refsect2>
<refsect2 id="gtk-flow-box-child-changed" role="function">
<title>gtk_flow_box_child_changed&#160;()</title>
<indexterm zone="gtk-flow-box-child-changed"><primary>gtk_flow_box_child_changed</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_flow_box_child_changed (<parameter><link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> *child</parameter>);</programlisting>
<para>Marks <parameter>child</parameter>
 as changed, causing any state that depends on this
to be updated. This affects sorting and filtering.</para>
<para>Note that calls to this method must be in sync with the data
used for the sorting and filtering functions. For instance, if
the list is mirroring some external data set, and *two* children
changed in the external data set when you call
<link linkend="gtk-flow-box-child-changed"><function>gtk_flow_box_child_changed()</function></link> on the first child, the sort function
must only read the new data for the first of the two changed
children, otherwise the resorting of the children will be wrong.</para>
<para>This generally means that if you don’t fully control the data
model, you have to duplicate the data that affects the sorting
and filtering functions into the widgets themselves. Another
alternative is to call <link linkend="gtk-flow-box-invalidate-sort"><function>gtk_flow_box_invalidate_sort()</function></link> on any
model change, but that is more expensive.</para>
<refsect3 id="gtk-flow-box-child-changed.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>child</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>

</refsect1>
<refsect1 id="GtkFlowBox.other_details" role="details">
<title role="details.title">Types and Values</title>
<refsect2 id="GtkFlowBox-struct" role="struct">
<title>GtkFlowBox</title>
<indexterm zone="GtkFlowBox-struct"><primary>GtkFlowBox</primary></indexterm>
<programlisting language="C">typedef struct _GtkFlowBox GtkFlowBox;</programlisting>
</refsect2>
<refsect2 id="GtkFlowBoxChild-struct" role="struct">
<title>struct GtkFlowBoxChild</title>
<indexterm zone="GtkFlowBoxChild-struct"><primary>GtkFlowBoxChild</primary></indexterm>
<programlisting language="C">struct GtkFlowBoxChild;</programlisting>
</refsect2>

</refsect1>
<refsect1 id="GtkFlowBox.property-details" role="property_details">
<title role="property_details.title">Property Details</title>
<refsect2 id="GtkFlowBox--accept-unpaired-release" role="property"><title>The <literal>“accept-unpaired-release”</literal> property</title>
<indexterm zone="GtkFlowBox--accept-unpaired-release"><primary>GtkFlowBox:accept-unpaired-release</primary></indexterm>
<programlisting>  “accept-unpaired-release”  <link linkend="gboolean"><type>gboolean</type></link></programlisting>
<para>Accept an unpaired release event.</para><para>Owner: GtkFlowBox</para>
<para>Flags: Read / Write</para>
<para>Default value: FALSE</para>
</refsect2>
<refsect2 id="GtkFlowBox--activate-on-single-click" role="property"><title>The <literal>“activate-on-single-click”</literal> property</title>
<indexterm zone="GtkFlowBox--activate-on-single-click"><primary>GtkFlowBox:activate-on-single-click</primary></indexterm>
<programlisting>  “activate-on-single-click” <link linkend="gboolean"><type>gboolean</type></link></programlisting>
<para>Determines whether children can be activated with a single
click, or require a double-click.</para>
<para>Owner: GtkFlowBox</para>
<para>Flags: Read / Write</para>
<para>Default value: TRUE</para>
</refsect2>
<refsect2 id="GtkFlowBox--column-spacing" role="property"><title>The <literal>“column-spacing”</literal> property</title>
<indexterm zone="GtkFlowBox--column-spacing"><primary>GtkFlowBox:column-spacing</primary></indexterm>
<programlisting>  “column-spacing”           <link linkend="guint"><type>guint</type></link></programlisting>
<para>The amount of horizontal space between two children.</para>
<para>Owner: GtkFlowBox</para>
<para>Flags: Read / Write</para>
<para>Default value: 0</para>
</refsect2>
<refsect2 id="GtkFlowBox--homogeneous" role="property"><title>The <literal>“homogeneous”</literal> property</title>
<indexterm zone="GtkFlowBox--homogeneous"><primary>GtkFlowBox:homogeneous</primary></indexterm>
<programlisting>  “homogeneous”              <link linkend="gboolean"><type>gboolean</type></link></programlisting>
<para>Determines whether all children should be allocated the
same size.</para>
<para>Owner: GtkFlowBox</para>
<para>Flags: Read / Write</para>
<para>Default value: FALSE</para>
</refsect2>
<refsect2 id="GtkFlowBox--max-children-per-line" role="property"><title>The <literal>“max-children-per-line”</literal> property</title>
<indexterm zone="GtkFlowBox--max-children-per-line"><primary>GtkFlowBox:max-children-per-line</primary></indexterm>
<programlisting>  “max-children-per-line”    <link linkend="guint"><type>guint</type></link></programlisting>
<para>The maximum amount of children to request space for consecutively
in the given orientation.</para>
<para>Owner: GtkFlowBox</para>
<para>Flags: Read / Write</para>
<para>Allowed values: &gt;= 1</para>
<para>Default value: 7</para>
</refsect2>
<refsect2 id="GtkFlowBox--min-children-per-line" role="property"><title>The <literal>“min-children-per-line”</literal> property</title>
<indexterm zone="GtkFlowBox--min-children-per-line"><primary>GtkFlowBox:min-children-per-line</primary></indexterm>
<programlisting>  “min-children-per-line”    <link linkend="guint"><type>guint</type></link></programlisting>
<para>The minimum number of children to allocate consecutively
in the given orientation.</para>
<para>Setting the minimum children per line ensures
that a reasonably small height will be requested
for the overall minimum width of the box.</para>
<para>Owner: GtkFlowBox</para>
<para>Flags: Read / Write</para>
<para>Default value: 0</para>
</refsect2>
<refsect2 id="GtkFlowBox--row-spacing" role="property"><title>The <literal>“row-spacing”</literal> property</title>
<indexterm zone="GtkFlowBox--row-spacing"><primary>GtkFlowBox:row-spacing</primary></indexterm>
<programlisting>  “row-spacing”              <link linkend="guint"><type>guint</type></link></programlisting>
<para>The amount of vertical space between two children.</para>
<para>Owner: GtkFlowBox</para>
<para>Flags: Read / Write</para>
<para>Default value: 0</para>
</refsect2>
<refsect2 id="GtkFlowBox--selection-mode" role="property"><title>The <literal>“selection-mode”</literal> property</title>
<indexterm zone="GtkFlowBox--selection-mode"><primary>GtkFlowBox:selection-mode</primary></indexterm>
<programlisting>  “selection-mode”           <link linkend="GtkSelectionMode"><type>GtkSelectionMode</type></link></programlisting>
<para>The selection mode used by the flow  box.</para>
<para>Owner: GtkFlowBox</para>
<para>Flags: Read / Write</para>
<para>Default value: GTK_SELECTION_SINGLE</para>
</refsect2>
<refsect2 id="GtkFlowBoxChild--child" role="property"><title>The <literal>“child”</literal> property</title>
<indexterm zone="GtkFlowBoxChild--child"><primary>GtkFlowBoxChild:child</primary></indexterm>
<programlisting>  “child”                    <link linkend="GtkWidget"><type>GtkWidget</type></link>&#160;*</programlisting>
<para>The child widget.</para><para>Owner: GtkFlowBoxChild</para>
<para>Flags: Read / Write</para>
</refsect2>

</refsect1>
<refsect1 id="GtkFlowBox.signal-details" role="signals">
<title role="signals.title">Signal Details</title>
<refsect2 id="GtkFlowBox-activate-cursor-child" role="signal"><title>The <literal>“activate-cursor-child”</literal> signal</title>
<indexterm zone="GtkFlowBox-activate-cursor-child"><primary>GtkFlowBox::activate-cursor-child</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
user_function (<link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box,
               <link linkend="gpointer"><type>gpointer</type></link>    user_data)</programlisting>
<para>The ::activate-cursor-child signal is a
<link linkend="GtkBindingSignal">keybinding signal</link>
which gets emitted when the user activates the <parameter>box</parameter>
.</para>
<refsect3 id="GtkFlowBox-activate-cursor-child.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>the <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> on which the signal is emitted</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><simpara>user_data</simpara></entry>
<entry role="parameter_description"><simpara>user data set when the signal handler was connected.</simpara></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para>Flags: <link linkend="G-SIGNAL-ACTION:CAPS">Action</link></para>
</refsect2><refsect2 id="GtkFlowBox-child-activated" role="signal"><title>The <literal>“child-activated”</literal> signal</title>
<indexterm zone="GtkFlowBox-child-activated"><primary>GtkFlowBox::child-activated</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
user_function (<link linkend="GtkFlowBox"><type>GtkFlowBox</type></link>      *box,
               <link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> *child,
               <link linkend="gpointer"><type>gpointer</type></link>         user_data)</programlisting>
<para>The ::child-activated signal is emitted when a child has been
activated by the user.</para>
<refsect3 id="GtkFlowBox-child-activated.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>the <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> on which the signal is emitted</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>child</para></entry>
<entry role="parameter_description"><para>the child that is activated</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><simpara>user_data</simpara></entry>
<entry role="parameter_description"><simpara>user data set when the signal handler was connected.</simpara></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para>Flags: <link linkend="G-SIGNAL-RUN-LAST:CAPS">Run Last</link></para>
</refsect2><refsect2 id="GtkFlowBox-move-cursor" role="signal"><title>The <literal>“move-cursor”</literal> signal</title>
<indexterm zone="GtkFlowBox-move-cursor"><primary>GtkFlowBox::move-cursor</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
user_function (<link linkend="GtkFlowBox"><type>GtkFlowBox</type></link>     *box,
               <link linkend="GtkMovementStep"><type>GtkMovementStep</type></link> step,
               <link linkend="gint"><type>gint</type></link>            count,
               <link linkend="gboolean"><type>gboolean</type></link>        extend,
               <link linkend="gboolean"><type>gboolean</type></link>        modify,
               <link linkend="gpointer"><type>gpointer</type></link>        user_data)</programlisting>
<para>The ::move-cursor signal is a
<link linkend="GtkBindingSignal">keybinding signal</link>
which gets emitted when the user initiates a cursor movement.</para>
<para>Applications should not connect to it, but may emit it with
<link linkend="g-signal-emit-by-name"><function>g_signal_emit_by_name()</function></link> if they need to control the cursor
programmatically.</para>
<para>The default bindings for this signal come in two variants,
the variant with the Shift modifier extends the selection,
the variant without the Shift modifer does not.
There are too many key combinations to list them all here.</para>
<itemizedlist>
<listitem><para>Arrow keys move by individual children</para></listitem>
<listitem><para>Home/End keys move to the ends of the box</para></listitem>
<listitem><para>PageUp/PageDown keys move vertically by pages</para></listitem>
</itemizedlist>
<refsect3 id="GtkFlowBox-move-cursor.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>the <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> on which the signal is emitted</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>step</para></entry>
<entry role="parameter_description"><para>the granularity fo the move, as a <link linkend="GtkMovementStep"><type>GtkMovementStep</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>count</para></entry>
<entry role="parameter_description"><para>the number of <parameter>step</parameter>
units to move</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>extend</para></entry>
<entry role="parameter_description"><para>whether to extend the selection</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>modify</para></entry>
<entry role="parameter_description"><para>whether to modify the selection</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><simpara>user_data</simpara></entry>
<entry role="parameter_description"><simpara>user data set when the signal handler was connected.</simpara></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="GtkFlowBox-move-cursor.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> to stop other handlers from being invoked for the event.
<link linkend="FALSE:CAPS"><literal>FALSE</literal></link> to propagate the event further.</para>
</refsect3><para>Flags: <link linkend="G-SIGNAL-ACTION:CAPS">Action</link></para>
</refsect2><refsect2 id="GtkFlowBox-select-all" role="signal"><title>The <literal>“select-all”</literal> signal</title>
<indexterm zone="GtkFlowBox-select-all"><primary>GtkFlowBox::select-all</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
user_function (<link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box,
               <link linkend="gpointer"><type>gpointer</type></link>    user_data)</programlisting>
<para>The ::select-all signal is a
<link linkend="GtkBindingSignal">keybinding signal</link>
which gets emitted to select all children of the box, if
the selection mode permits it.</para>
<para>The default bindings for this signal is Ctrl-a.</para>
<refsect3 id="GtkFlowBox-select-all.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>the <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> on which the signal is emitted</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><simpara>user_data</simpara></entry>
<entry role="parameter_description"><simpara>user data set when the signal handler was connected.</simpara></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para>Flags: <link linkend="G-SIGNAL-ACTION:CAPS">Action</link></para>
</refsect2><refsect2 id="GtkFlowBox-selected-children-changed" role="signal"><title>The <literal>“selected-children-changed”</literal> signal</title>
<indexterm zone="GtkFlowBox-selected-children-changed"><primary>GtkFlowBox::selected-children-changed</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
user_function (<link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box,
               <link linkend="gpointer"><type>gpointer</type></link>    user_data)</programlisting>
<para>The ::selected-children-changed signal is emitted when the
set of selected children changes.</para>
<para>Use <link linkend="gtk-flow-box-selected-foreach"><function>gtk_flow_box_selected_foreach()</function></link> or
<link linkend="gtk-flow-box-get-selected-children"><function>gtk_flow_box_get_selected_children()</function></link> to obtain the
selected children.</para>
<refsect3 id="GtkFlowBox-selected-children-changed.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>the <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> on wich the signal is emitted</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><simpara>user_data</simpara></entry>
<entry role="parameter_description"><simpara>user data set when the signal handler was connected.</simpara></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para>Flags: <link linkend="G-SIGNAL-RUN-FIRST:CAPS">Run First</link></para>
</refsect2><refsect2 id="GtkFlowBox-toggle-cursor-child" role="signal"><title>The <literal>“toggle-cursor-child”</literal> signal</title>
<indexterm zone="GtkFlowBox-toggle-cursor-child"><primary>GtkFlowBox::toggle-cursor-child</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
user_function (<link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box,
               <link linkend="gpointer"><type>gpointer</type></link>    user_data)</programlisting>
<para>The ::toggle-cursor-child signal is a
<link linkend="GtkBindingSignal">keybinding signal</link>
which toggles the selection of the child that has the focus.</para>
<para>The default binding for this signal is Ctrl-Space.</para>
<refsect3 id="GtkFlowBox-toggle-cursor-child.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>the <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> on which the signal is emitted</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><simpara>user_data</simpara></entry>
<entry role="parameter_description"><simpara>user data set when the signal handler was connected.</simpara></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para>Flags: <link linkend="G-SIGNAL-ACTION:CAPS">Action</link></para>
</refsect2><refsect2 id="GtkFlowBox-unselect-all" role="signal"><title>The <literal>“unselect-all”</literal> signal</title>
<indexterm zone="GtkFlowBox-unselect-all"><primary>GtkFlowBox::unselect-all</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
user_function (<link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> *box,
               <link linkend="gpointer"><type>gpointer</type></link>    user_data)</programlisting>
<para>The ::unselect-all signal is a
<link linkend="GtkBindingSignal">keybinding signal</link>
which gets emitted to unselect all children of the box, if
the selection mode permits it.</para>
<para>The default bindings for this signal is Ctrl-Shift-a.</para>
<refsect3 id="GtkFlowBox-unselect-all.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>box</para></entry>
<entry role="parameter_description"><para>the <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link> on which the signal is emitted</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><simpara>user_data</simpara></entry>
<entry role="parameter_description"><simpara>user data set when the signal handler was connected.</simpara></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para>Flags: <link linkend="G-SIGNAL-ACTION:CAPS">Action</link></para>
</refsect2><refsect2 id="GtkFlowBoxChild-activate" role="signal"><title>The <literal>“activate”</literal> signal</title>
<indexterm zone="GtkFlowBoxChild-activate"><primary>GtkFlowBoxChild::activate</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
user_function (<link linkend="GtkFlowBoxChild"><type>GtkFlowBoxChild</type></link> *child,
               <link linkend="gpointer"><type>gpointer</type></link>         user_data)</programlisting>
<para>The ::activate signal is emitted when the user activates
a child widget in a <link linkend="GtkFlowBox"><type>GtkFlowBox</type></link>, either by clicking or
double-clicking, or by using the Space or Enter key.</para>
<para>While this signal is used as a
<link linkend="GtkBindingSignal">keybinding signal</link>,
it can be used by applications for their own purposes.</para>
<refsect3 id="GtkFlowBoxChild-activate.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>child</para></entry>
<entry role="parameter_description"><para>The child on which the signal is emitted</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><simpara>user_data</simpara></entry>
<entry role="parameter_description"><simpara>user data set when the signal handler was connected.</simpara></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para>Flags: <link linkend="G-SIGNAL-ACTION:CAPS">Action</link></para>
</refsect2>
</refsect1>

</refentry>
