<?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="GtkTreeListModel">
<refmeta>
<refentrytitle role="top_of_page" id="GtkTreeListModel.top_of_page">GtkTreeListModel</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>GTK4 Library</refmiscinfo>
</refmeta>
<refnamediv>
<refname>GtkTreeListModel</refname>
<refpurpose>A list model that can create child models on demand</refpurpose>
</refnamediv>

<refsect1 id="GtkTreeListModel.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="GListModel"><returnvalue>GListModel</returnvalue></link>&#160;*
</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="GtkTreeListModelCreateModelFunc">*GtkTreeListModelCreateModelFunc</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkTreeListModel"><returnvalue>GtkTreeListModel</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-tree-list-model-new">gtk_tree_list_model_new</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GListModel"><returnvalue>GListModel</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-tree-list-model-get-model">gtk_tree_list_model_get_model</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-tree-list-model-get-passthrough">gtk_tree_list_model_get_passthrough</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-tree-list-model-set-autoexpand">gtk_tree_list_model_set_autoexpand</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-tree-list-model-get-autoexpand">gtk_tree_list_model_get_autoexpand</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkTreeListRow"><returnvalue>GtkTreeListRow</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-tree-list-model-get-child-row">gtk_tree_list_model_get_child_row</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GtkTreeListRow"><returnvalue>GtkTreeListRow</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gtk-tree-list-model-get-row">gtk_tree_list_model_get_row</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="GtkTreeListModel.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="GtkTreeListModel--autoexpand">autoexpand</link></entry><entry role="property_flags">Read / Write</entry></row>
<row><entry role="property_type"><link linkend="GListModel"><type>GListModel</type></link>&#160;*</entry><entry role="property_name"><link linkend="GtkTreeListModel--model">model</link></entry><entry role="property_flags">Read</entry></row>
<row><entry role="property_type"><link linkend="gboolean"><type>gboolean</type></link></entry><entry role="property_name"><link linkend="GtkTreeListModel--passthrough">passthrough</link></entry><entry role="property_flags">Read / Write / Construct&#160;Only</entry></row>
<row><entry role="property_type"><link linkend="GListModel"><type>GListModel</type></link>&#160;*</entry><entry role="property_name"><link linkend="GtkTreeListRow--children">children</link></entry><entry role="property_flags">Read</entry></row>
<row><entry role="property_type"><link linkend="guint"><type>guint</type></link></entry><entry role="property_name"><link linkend="GtkTreeListRow--depth">depth</link></entry><entry role="property_flags">Read</entry></row>
<row><entry role="property_type"><link linkend="gboolean"><type>gboolean</type></link></entry><entry role="property_name"><link linkend="GtkTreeListRow--expandable">expandable</link></entry><entry role="property_flags">Read</entry></row>
<row><entry role="property_type"><link linkend="gboolean"><type>gboolean</type></link></entry><entry role="property_name"><link linkend="GtkTreeListRow--expanded">expanded</link></entry><entry role="property_flags">Read / Write</entry></row>
<row><entry role="property_type"><link linkend="GObject"><type>GObject</type></link>&#160;*</entry><entry role="property_name"><link linkend="GtkTreeListRow--item">item</link></entry><entry role="property_flags">Read</entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<anchor id="GtkTreeListRow"/><refsect1 id="GtkTreeListModel.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="GtkTreeListModel-struct">GtkTreeListModel</link></entry></row>
<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="GtkTreeListRow-struct">GtkTreeListRow</link></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="GtkTreeListModel.object-hierarchy" role="object_hierarchy">
<title role="object_hierarchy.title">Object Hierarchy</title>
<screen>    <link linkend="GObject">GObject</link>
    <phrase role="lineart">&#9500;&#9472;&#9472;</phrase> GtkTreeListModel
    <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> GtkTreeListRow
</screen>
</refsect1>
<refsect1 id="GtkTreeListModel.implemented-interfaces" role="impl_interfaces">
<title role="impl_interfaces.title">Implemented Interfaces</title>
<para>
GtkTreeListModel implements
 <link linkend="GListModel">GListModel</link>.</para>

</refsect1>

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

<refsect1 id="GtkTreeListModel.description" role="desc">
<title role="desc.title">Description</title>
<para><link linkend="GtkTreeListModel"><type>GtkTreeListModel</type></link> is a <link linkend="GListModel"><type>GListModel</type></link> implementation that can expand rows
by creating new child list models on demand.</para>

</refsect1>
<refsect1 id="GtkTreeListModel.functions_details" role="details">
<title role="details.title">Functions</title>
<refsect2 id="GtkTreeListModelCreateModelFunc" role="function">
<title>GtkTreeListModelCreateModelFunc&#160;()</title>
<indexterm zone="GtkTreeListModelCreateModelFunc"><primary>GtkTreeListModelCreateModelFunc</primary></indexterm>
<programlisting language="C"><link linkend="GListModel"><returnvalue>GListModel</returnvalue></link>&#160;*
<phrase role="c_punctuation">(</phrase>*GtkTreeListModelCreateModelFunc<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>Prototype of the function called to create new child models when
<link linkend="gtk-tree-list-row-set-expanded"><function>gtk_tree_list_row_set_expanded()</function></link> is called.</para>
<para>This function can return <link linkend="NULL:CAPS"><literal>NULL</literal></link> to indicate that <parameter>item</parameter>
 is guaranteed to be
a leave node and will never have children.  
If it does not have children but may get children later, it should return
an empty model that is filled once children arrive.</para>
<refsect3 id="GtkTreeListModelCreateModelFunc.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 that is being expanded. </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 passed when registering the function</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="GtkTreeListModelCreateModelFunc.returns" role="returns">
<title>Returns</title>
<para>The model tracking the children of <parameter>item</parameter>
or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if
<parameter>item</parameter>
can never have children. </para>
<para><emphasis role="annotation">[<acronym>nullable</acronym>][<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-tree-list-model-new" role="function">
<title>gtk_tree_list_model_new&#160;()</title>
<indexterm zone="gtk-tree-list-model-new"><primary>gtk_tree_list_model_new</primary></indexterm>
<programlisting language="C"><link linkend="GtkTreeListModel"><returnvalue>GtkTreeListModel</returnvalue></link>&#160;*
gtk_tree_list_model_new (<parameter><link linkend="gboolean"><type>gboolean</type></link> passthrough</parameter>,
                         <parameter><link linkend="GListModel"><type>GListModel</type></link> *root</parameter>,
                         <parameter><link linkend="gboolean"><type>gboolean</type></link> autoexpand</parameter>,
                         <parameter><link linkend="GtkTreeListModelCreateModelFunc"><type>GtkTreeListModelCreateModelFunc</type></link> create_func</parameter>,
                         <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>,
                         <parameter><link linkend="GDestroyNotify"><type>GDestroyNotify</type></link> user_destroy</parameter>);</programlisting>
<para>Creates a new empty <link linkend="GtkTreeListModel"><type>GtkTreeListModel</type></link> displaying <parameter>root</parameter>
 with all rows collapsed.</para>
<refsect3 id="gtk-tree-list-model-new.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>passthrough</para></entry>
<entry role="parameter_description"><para><link linkend="TRUE:CAPS"><literal>TRUE</literal></link> to pass through items from the models</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>root</para></entry>
<entry role="parameter_description"><para>The <link linkend="GListModel"><type>GListModel</type></link> to use as root</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>autoexpand</para></entry>
<entry role="parameter_description"><para><link linkend="TRUE:CAPS"><literal>TRUE</literal></link> to set the autoexpand property and expand the <parameter>root</parameter>
model</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>create_func</para></entry>
<entry role="parameter_description"><para>Function to call to create the <link linkend="GListModel"><type>GListModel</type></link> for the children
of an item</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>user_data</para></entry>
<entry role="parameter_description"><para>Data to pass to <parameter>create_func</parameter>
. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>closure</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>user_destroy</para></entry>
<entry role="parameter_description"><para>Function to call to free <parameter>user_data</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-tree-list-model-new.returns" role="returns">
<title>Returns</title>
<para> a newly created <link linkend="GtkTreeListModel"><type>GtkTreeListModel</type></link>. </para>
</refsect3></refsect2>
<refsect2 id="gtk-tree-list-model-get-model" role="function">
<title>gtk_tree_list_model_get_model&#160;()</title>
<indexterm zone="gtk-tree-list-model-get-model"><primary>gtk_tree_list_model_get_model</primary></indexterm>
<programlisting language="C"><link linkend="GListModel"><returnvalue>GListModel</returnvalue></link>&#160;*
gtk_tree_list_model_get_model (<parameter><link linkend="GtkTreeListModel"><type>GtkTreeListModel</type></link> *self</parameter>);</programlisting>
<para>Gets the root model that <parameter>self</parameter>
 was created with.</para>
<refsect3 id="gtk-tree-list-model-get-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>self</para></entry>
<entry role="parameter_description"><para>a <link linkend="GtkTreeListModel"><type>GtkTreeListModel</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-tree-list-model-get-model.returns" role="returns">
<title>Returns</title>
<para>the root model. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-tree-list-model-get-passthrough" role="function">
<title>gtk_tree_list_model_get_passthrough&#160;()</title>
<indexterm zone="gtk-tree-list-model-get-passthrough"><primary>gtk_tree_list_model_get_passthrough</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gtk_tree_list_model_get_passthrough (<parameter><link linkend="GtkTreeListModel"><type>GtkTreeListModel</type></link> *self</parameter>);</programlisting>
<para>If this function returns <link linkend="FALSE:CAPS"><literal>FALSE</literal></link>, the <link linkend="GListModel"><type>GListModel</type></link> functions for <parameter>self</parameter>

return custom <link linkend="GtkTreeListRow"><type>GtkTreeListRow</type></link> objects. You need to call
<link linkend="gtk-tree-list-row-get-item"><function>gtk_tree_list_row_get_item()</function></link> on these objects to get the original
item.</para>
<para>If <link linkend="TRUE:CAPS"><literal>TRUE</literal></link>, the values of the child models are passed through in their
original state. You then need to call <link linkend="gtk-tree-list-model-get-row"><function>gtk_tree_list_model_get_row()</function></link>
to get the custom <link linkend="GtkTreeListRows"><type>GtkTreeListRows</type></link>.</para>
<refsect3 id="gtk-tree-list-model-get-passthrough.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="GtkTreeListModel"><type>GtkTreeListModel</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-tree-list-model-get-passthrough.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the model is passing through original row items</para>
</refsect3></refsect2>
<refsect2 id="gtk-tree-list-model-set-autoexpand" role="function">
<title>gtk_tree_list_model_set_autoexpand&#160;()</title>
<indexterm zone="gtk-tree-list-model-set-autoexpand"><primary>gtk_tree_list_model_set_autoexpand</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gtk_tree_list_model_set_autoexpand (<parameter><link linkend="GtkTreeListModel"><type>GtkTreeListModel</type></link> *self</parameter>,
                                    <parameter><link linkend="gboolean"><type>gboolean</type></link> autoexpand</parameter>);</programlisting>
<para>If set to <link linkend="TRUE:CAPS"><literal>TRUE</literal></link>, the model will recursively expand all rows that
get added to the model. This can be either rows added by changes
to the underlying models or via <link linkend="gtk-tree-list-model-set-expanded"><function>gtk_tree_list_model_set_expanded()</function></link>.</para>
<refsect3 id="gtk-tree-list-model-set-autoexpand.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="GtkTreeListModel"><type>GtkTreeListModel</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>autoexpand</para></entry>
<entry role="parameter_description"><para><link linkend="TRUE:CAPS"><literal>TRUE</literal></link> to make the model autoexpand its rows</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gtk-tree-list-model-get-autoexpand" role="function">
<title>gtk_tree_list_model_get_autoexpand&#160;()</title>
<indexterm zone="gtk-tree-list-model-get-autoexpand"><primary>gtk_tree_list_model_get_autoexpand</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gtk_tree_list_model_get_autoexpand (<parameter><link linkend="GtkTreeListModel"><type>GtkTreeListModel</type></link> *self</parameter>);</programlisting>
<para>Gets whether the model is set to automatically expand new rows
that get added. This can be either rows added by changes to the
underlying models or via <link linkend="gtk-tree-list-model-set-expanded"><function>gtk_tree_list_model_set_expanded()</function></link>.</para>
<refsect3 id="gtk-tree-list-model-get-autoexpand.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="GtkTreeListModel"><type>GtkTreeListModel</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-tree-list-model-get-autoexpand.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the model is set to autoexpand</para>
</refsect3></refsect2>
<refsect2 id="gtk-tree-list-model-get-child-row" role="function">
<title>gtk_tree_list_model_get_child_row&#160;()</title>
<indexterm zone="gtk-tree-list-model-get-child-row"><primary>gtk_tree_list_model_get_child_row</primary></indexterm>
<programlisting language="C"><link linkend="GtkTreeListRow"><returnvalue>GtkTreeListRow</returnvalue></link>&#160;*
gtk_tree_list_model_get_child_row (<parameter><link linkend="GtkTreeListModel"><type>GtkTreeListModel</type></link> *self</parameter>,
                                   <parameter><link linkend="guint"><type>guint</type></link> position</parameter>);</programlisting>
<para>Gets the row item corresponding to the child at index <parameter>position</parameter>
 for
<parameter>self</parameter>
's root model.</para>
<para>If <parameter>position</parameter>
 is greater than the number of children in the root model,
<link linkend="NULL:CAPS"><literal>NULL</literal></link> is returned.</para>
<para>Do not confuse this function with <link linkend="gtk-tree-list-model-get-row"><function>gtk_tree_list_model_get_row()</function></link>.</para>
<refsect3 id="gtk-tree-list-model-get-child-row.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="GtkTreeListModel"><type>GtkTreeListModel</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>position</para></entry>
<entry role="parameter_description"><para>position of the child to get</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-tree-list-model-get-child-row.returns" role="returns">
<title>Returns</title>
<para>the child in <parameter>position</parameter>
. </para>
<para><emphasis role="annotation">[<acronym>nullable</acronym>][<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gtk-tree-list-model-get-row" role="function">
<title>gtk_tree_list_model_get_row&#160;()</title>
<indexterm zone="gtk-tree-list-model-get-row"><primary>gtk_tree_list_model_get_row</primary></indexterm>
<programlisting language="C"><link linkend="GtkTreeListRow"><returnvalue>GtkTreeListRow</returnvalue></link>&#160;*
gtk_tree_list_model_get_row (<parameter><link linkend="GtkTreeListModel"><type>GtkTreeListModel</type></link> *self</parameter>,
                             <parameter><link linkend="guint"><type>guint</type></link> position</parameter>);</programlisting>
<para>Gets the row object for the given row. If <parameter>position</parameter>
 is greater than
the number of items in <parameter>self</parameter>
, <link linkend="NULL:CAPS"><literal>NULL</literal></link> is returned.</para>
<para>The row object can be used to expand and collapse rows as well as
to inspect its position in the tree. See its documentation for details.</para>
<para>This row object is persistent and will refer to the current item as
long as the row is present in <parameter>self</parameter>
, independent of other rows being
added or removed.</para>
<para>If <parameter>self</parameter>
 is set to not be passthrough, this function is equivalent
to calling <link linkend="g-list-model-get-item"><function>g_list_model_get_item()</function></link>.</para>
<para>Do not confuse this function with <link linkend="gtk-tree-list-model-get-child-row"><function>gtk_tree_list_model_get_child_row()</function></link>.</para>
<refsect3 id="gtk-tree-list-model-get-row.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="GtkTreeListModel"><type>GtkTreeListModel</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>position</para></entry>
<entry role="parameter_description"><para>the position of the row to fetch</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gtk-tree-list-model-get-row.returns" role="returns">
<title>Returns</title>
<para>The row item. </para>
<para><emphasis role="annotation">[<acronym>nullable</acronym>][<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>

</refsect1>
<refsect1 id="GtkTreeListModel.other_details" role="details">
<title role="details.title">Types and Values</title>
<refsect2 id="GtkTreeListModel-struct" role="struct">
<title>GtkTreeListModel</title>
<indexterm zone="GtkTreeListModel-struct"><primary>GtkTreeListModel</primary></indexterm>
<programlisting language="C">typedef struct _GtkTreeListModel GtkTreeListModel;</programlisting>
</refsect2>
<refsect2 id="GtkTreeListRow-struct" role="struct">
<title>GtkTreeListRow</title>
<indexterm zone="GtkTreeListRow-struct"><primary>GtkTreeListRow</primary></indexterm>
<programlisting language="C">typedef struct _GtkTreeListRow GtkTreeListRow;</programlisting>
</refsect2>

</refsect1>
<refsect1 id="GtkTreeListModel.property-details" role="property_details">
<title role="property_details.title">Property Details</title>
<refsect2 id="GtkTreeListModel--autoexpand" role="property"><title>The <literal>“autoexpand”</literal> property</title>
<indexterm zone="GtkTreeListModel--autoexpand"><primary>GtkTreeListModel:autoexpand</primary></indexterm>
<programlisting>  “autoexpand”               <link linkend="gboolean"><type>gboolean</type></link></programlisting>
<para>If all rows should be expanded by default</para>
<para>Owner: GtkTreeListModel</para>
<para>Flags: Read / Write</para>
<para>Default value: FALSE</para>
</refsect2>
<refsect2 id="GtkTreeListModel--model" role="property"><title>The <literal>“model”</literal> property</title>
<indexterm zone="GtkTreeListModel--model"><primary>GtkTreeListModel:model</primary></indexterm>
<programlisting>  “model”                    <link linkend="GListModel"><type>GListModel</type></link>&#160;*</programlisting>
<para>The root model displayed</para>
<para>Owner: GtkTreeListModel</para>
<para>Flags: Read</para>
</refsect2>
<refsect2 id="GtkTreeListModel--passthrough" role="property"><title>The <literal>“passthrough”</literal> property</title>
<indexterm zone="GtkTreeListModel--passthrough"><primary>GtkTreeListModel:passthrough</primary></indexterm>
<programlisting>  “passthrough”              <link linkend="gboolean"><type>gboolean</type></link></programlisting>
<para>If <link linkend="FALSE:CAPS"><literal>FALSE</literal></link>, the <link linkend="GListModel"><type>GListModel</type></link> functions for this object return custom
<link linkend="GtkTreeListRow"><type>GtkTreeListRow</type></link> objects.
If <link linkend="TRUE:CAPS"><literal>TRUE</literal></link>, the values of the child models are pass through unmodified.</para>
<para>Owner: GtkTreeListModel</para>
<para>Flags: Read / Write / Construct&#160;Only</para>
<para>Default value: FALSE</para>
</refsect2>
<refsect2 id="GtkTreeListRow--children" role="property"><title>The <literal>“children”</literal> property</title>
<indexterm zone="GtkTreeListRow--children"><primary>GtkTreeListRow:children</primary></indexterm>
<programlisting>  “children”                 <link linkend="GListModel"><type>GListModel</type></link>&#160;*</programlisting>
<para>The model holding the row's children.</para>
<para>Owner: GtkTreeListRow</para>
<para>Flags: Read</para>
</refsect2>
<refsect2 id="GtkTreeListRow--depth" role="property"><title>The <literal>“depth”</literal> property</title>
<indexterm zone="GtkTreeListRow--depth"><primary>GtkTreeListRow:depth</primary></indexterm>
<programlisting>  “depth”                    <link linkend="guint"><type>guint</type></link></programlisting>
<para>The depth in the tree of this row</para>
<para>Owner: GtkTreeListRow</para>
<para>Flags: Read</para>
<para>Default value: 0</para>
</refsect2>
<refsect2 id="GtkTreeListRow--expandable" role="property"><title>The <literal>“expandable”</literal> property</title>
<indexterm zone="GtkTreeListRow--expandable"><primary>GtkTreeListRow:expandable</primary></indexterm>
<programlisting>  “expandable”               <link linkend="gboolean"><type>gboolean</type></link></programlisting>
<para>If this row can ever be expanded</para>
<para>Owner: GtkTreeListRow</para>
<para>Flags: Read</para>
<para>Default value: FALSE</para>
</refsect2>
<refsect2 id="GtkTreeListRow--expanded" role="property"><title>The <literal>“expanded”</literal> property</title>
<indexterm zone="GtkTreeListRow--expanded"><primary>GtkTreeListRow:expanded</primary></indexterm>
<programlisting>  “expanded”                 <link linkend="gboolean"><type>gboolean</type></link></programlisting>
<para>If this row is currently expanded</para>
<para>Owner: GtkTreeListRow</para>
<para>Flags: Read / Write</para>
<para>Default value: FALSE</para>
</refsect2>
<refsect2 id="GtkTreeListRow--item" role="property"><title>The <literal>“item”</literal> property</title>
<indexterm zone="GtkTreeListRow--item"><primary>GtkTreeListRow:item</primary></indexterm>
<programlisting>  “item”                     <link linkend="GObject"><type>GObject</type></link>&#160;*</programlisting>
<para>The item held in this row</para>
<para>Owner: GtkTreeListRow</para>
<para>Flags: Read</para>
</refsect2>

</refsect1>
<refsect1 id="GtkTreeListModel.see-also">
<title>See Also</title>
<para><link linkend="GListModel"><type>GListModel</type></link></para>

</refsect1>

</refentry>
