<?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 index-Objects-Grouped SYSTEM "objects_grouped.sgml"-->
<refentry id="GtkTreeModelSort">
<refmeta>
<refentrytitle role="top_of_page" id="GtkTreeModelSort.top_of_page">GtkTreeModelSort</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>GTK Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>GtkTreeModelSort</refname>
<refpurpose>A GtkTreeModel which makes an underlying tree model sortable</refpurpose>
</refnamediv>

<refsynopsisdiv id="GtkTreeModelSort.synopsis" role="synopsis">
<title role="synopsis.title">Synopsis</title>

<synopsis>

#include &lt;gtk/gtk.h&gt;

                    <link linkend="GtkTreeModelSort-struct">GtkTreeModelSort</link>;
<link linkend="GtkTreeModel">GtkTreeModel</link> *      <link linkend="gtk-tree-model-sort-new-with-model">gtk_tree_model_sort_new_with_model</link>  (<link linkend="GtkTreeModel">GtkTreeModel</link> *child_model);
<link linkend="GtkTreeModel">GtkTreeModel</link> *      <link linkend="gtk-tree-model-sort-get-model">gtk_tree_model_sort_get_model</link>       (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model);
<link linkend="GtkTreePath">GtkTreePath</link> *       <link linkend="gtk-tree-model-sort-convert-child-path-to-path">gtk_tree_model_sort_convert_child_path_to_path</link>
                                                        (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model_sort,
                                                         <link linkend="GtkTreePath">GtkTreePath</link> *child_path);
<link linkend="gboolean">gboolean</link>            <link linkend="gtk-tree-model-sort-convert-child-iter-to-iter">gtk_tree_model_sort_convert_child_iter_to_iter</link>
                                                        (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model_sort,
                                                         <link linkend="GtkTreeIter">GtkTreeIter</link> *sort_iter,
                                                         <link linkend="GtkTreeIter">GtkTreeIter</link> *child_iter);
<link linkend="GtkTreePath">GtkTreePath</link> *       <link linkend="gtk-tree-model-sort-convert-path-to-child-path">gtk_tree_model_sort_convert_path_to_child_path</link>
                                                        (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model_sort,
                                                         <link linkend="GtkTreePath">GtkTreePath</link> *sorted_path);
<link linkend="void">void</link>                <link linkend="gtk-tree-model-sort-convert-iter-to-child-iter">gtk_tree_model_sort_convert_iter_to_child_iter</link>
                                                        (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model_sort,
                                                         <link linkend="GtkTreeIter">GtkTreeIter</link> *child_iter,
                                                         <link linkend="GtkTreeIter">GtkTreeIter</link> *sorted_iter);
<link linkend="void">void</link>                <link linkend="gtk-tree-model-sort-reset-default-sort-func">gtk_tree_model_sort_reset_default_sort_func</link>
                                                        (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model_sort);
<link linkend="void">void</link>                <link linkend="gtk-tree-model-sort-clear-cache">gtk_tree_model_sort_clear_cache</link>     (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model_sort);
<link linkend="gboolean">gboolean</link>            <link linkend="gtk-tree-model-sort-iter-is-valid">gtk_tree_model_sort_iter_is_valid</link>   (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model_sort,
                                                         <link linkend="GtkTreeIter">GtkTreeIter</link> *iter);
</synopsis>
</refsynopsisdiv>

<refsect1 id="GtkTreeModelSort.object-hierarchy" role="object_hierarchy">
<title role="object_hierarchy.title">Object Hierarchy</title>
<synopsis>
  <link linkend="GObject">GObject</link>
   +----GtkTreeModelSort
</synopsis>
</refsect1>



<refsect1 id="GtkTreeModelSort.implemented-interfaces" role="impl_interfaces">
<title role="impl_interfaces.title">Implemented Interfaces</title>
<para>
GtkTreeModelSort implements
 <link linkend="GtkTreeModel">GtkTreeModel</link>,  <link linkend="GtkTreeDragSource">GtkTreeDragSource</link> and  <link linkend="GtkTreeSortable">GtkTreeSortable</link>.</para>
</refsect1>


<refsect1 id="GtkTreeModelSort.properties" role="properties">
<title role="properties.title">Properties</title>
<synopsis>
  &quot;<link linkend="GtkTreeModelSort--model">model</link>&quot;                    <link linkend="GtkTreeModel">GtkTreeModel</link>*         : Read / Write / Construct Only
</synopsis>
</refsect1>



<refsect1 id="GtkTreeModelSort.description" role="desc">
<title role="desc.title">Description</title>
<para>
The <link linkend="GtkTreeModelSort"><type>GtkTreeModelSort</type></link> is a model which implements the <link linkend="GtkTreeSortable"><type>GtkTreeSortable</type></link>
interface.  It does not hold any data itself, but rather is created with
a child model and proxies its data.  It has identical column types to
this child model, and the changes in the child are propagated.  The
primary purpose of this model is to provide a way to sort a different
model without modifying it. Note that the sort function used by
<link linkend="GtkTreeModelSort"><type>GtkTreeModelSort</type></link> is not guaranteed to be stable.
</para>
<para>
The use of this is best demonstrated through an example.  In the
following sample code we create two <link linkend="GtkTreeView"><type>GtkTreeView</type></link> widgets each with a
view of the same data.  As the model is wrapped here by a
<link linkend="GtkTreeModelSort"><type>GtkTreeModelSort</type></link>, the two <link linkend="GtkTreeView"><type>GtkTreeView</type></link><!-- -->s can each sort their
view of the data without affecting the other.  By contrast, if we
simply put the same model in each widget, then sorting the first would
sort the second.
</para>
<para>
<example>
<title>Using a <structname>GtkTreeModelSort</structname></title>
<programlisting>
{
  GtkTreeView *tree_view1;
  GtkTreeView *tree_view2;
  GtkTreeModel *sort_model1;
  GtkTreeModel *sort_model2;
  GtkTreeModel *child_model;
  /* get the child model */
  child_model = get_my_model ();
  /* Create the first tree */
  sort_model1 = gtk_tree_model_sort_new_with_model (child_model);
  tree_view1 = gtk_tree_view_new_with_model (sort_model1);
  /* Create the second tree */
  sort_model2 = gtk_tree_model_sort_new_with_model (child_model);
  tree_view2 = gtk_tree_view_new_with_model (sort_model2);
  /* Now we can sort the two models independently */
  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model1),
                                        COLUMN_1, GTK_SORT_ASCENDING);
  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model2),
                                        COLUMN_1, GTK_SORT_DESCENDING);
}
</programlisting>
</example>
</para>
<para>
To demonstrate how to access the underlying child model from the sort
model, the next example will be a callback for the <link linkend="GtkTreeSelection"><type>GtkTreeSelection</type></link>
"changed" signal.  In this callback, we get a string from COLUMN_1 of
the model.  We then modify the string, find the same selected row on the
child model, and change the row there.
</para>
<para>
<example>
<title>Accessing the child model of in a selection changed callback</title>
<programlisting>
void
selection_changed (GtkTreeSelection *selection, gpointer data)
{
  GtkTreeModel *sort_model = NULL;
  GtkTreeModel *child_model;
  GtkTreeIter sort_iter;
  GtkTreeIter child_iter;
  char *some_data = NULL;
  char *modified_data;
  /* Get the current selected row and the model. */
  if (! gtk_tree_selection_get_selected (selection,
                                         &amp;sort_model,
                                         &amp;sort_iter))
    return;
  /* Look up the current value on the selected row and get a new value
   * to change it to.
   */
  gtk_tree_model_get (GTK_TREE_MODEL (sort_model), &amp;sort_iter,
                      COLUMN_1, &amp;some_data,
                      -1);
  modified_data = change_the_data (some_data);
  g_free (some_data);
  /* Get an iterator on the child model, instead of the sort model. */
  gtk_tree_model_sort_convert_iter_to_child_iter (GTK_TREE_MODEL_SORT (sort_model),
                                                  &amp;child_iter,
                                                  &amp;sort_iter);
  /* Get the child model and change the value of the row.  In this
   * example, the child model is a GtkListStore.  It could be any other
   * type of model, though.
   */
  child_model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (sort_model));
  gtk_list_store_set (GTK_LIST_STORE (child_model), &amp;child_iter,
                      COLUMN_1, &amp;modified_data,
                      -1);
  g_free (modified_data);
}
</programlisting>
</example>
</para>
</refsect1>

<refsect1 id="GtkTreeModelSort.details" role="details">
<title role="details.title">Details</title>
<refsect2 id="GtkTreeModelSort-struct" role="struct">
<title>GtkTreeModelSort</title>
<indexterm zone="GtkTreeModelSort-struct"><primary sortas="TreeModelSort">GtkTreeModelSort</primary></indexterm><programlisting>typedef struct _GtkTreeModelSort GtkTreeModelSort;</programlisting>
<para>
This should not be accessed directly.  Use the accessor functions below.
</para></refsect2>
<refsect2 id="gtk-tree-model-sort-new-with-model" role="function">
<title>gtk_tree_model_sort_new_with_model ()</title>
<indexterm zone="gtk-tree-model-sort-new-with-model"><primary sortas="tree_model_sort_new_with_model">gtk_tree_model_sort_new_with_model</primary></indexterm><programlisting><link linkend="GtkTreeModel">GtkTreeModel</link> *      gtk_tree_model_sort_new_with_model  (<link linkend="GtkTreeModel">GtkTreeModel</link> *child_model);</programlisting>
<para>
Creates a new <link linkend="GtkTreeModel"><type>GtkTreeModel</type></link>, with <parameter>child_model</parameter> as the child model.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>child_model</parameter>&#160;:</term>
<listitem><simpara> A <link linkend="GtkTreeModel"><type>GtkTreeModel</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> A new <link linkend="GtkTreeModel"><type>GtkTreeModel</type></link>.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gtk-tree-model-sort-get-model" role="function">
<title>gtk_tree_model_sort_get_model ()</title>
<indexterm zone="gtk-tree-model-sort-get-model"><primary sortas="tree_model_sort_get_model">gtk_tree_model_sort_get_model</primary></indexterm><programlisting><link linkend="GtkTreeModel">GtkTreeModel</link> *      gtk_tree_model_sort_get_model       (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model);</programlisting>
<para>
Returns the model the <link linkend="GtkTreeModelSort"><type>GtkTreeModelSort</type></link> is sorting.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>tree_model</parameter>&#160;:</term>
<listitem><simpara> a <link linkend="GtkTreeModelSort"><type>GtkTreeModelSort</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the "child model" being sorted
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gtk-tree-model-sort-convert-child-path-to-path" role="function">
<title>gtk_tree_model_sort_convert_child_path_to_path ()</title>
<indexterm zone="gtk-tree-model-sort-convert-child-path-to-path"><primary sortas="tree_model_sort_convert_child_path_to_path">gtk_tree_model_sort_convert_child_path_to_path</primary></indexterm><programlisting><link linkend="GtkTreePath">GtkTreePath</link> *       gtk_tree_model_sort_convert_child_path_to_path
                                                        (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model_sort,
                                                         <link linkend="GtkTreePath">GtkTreePath</link> *child_path);</programlisting>
<para>
Converts <parameter>child_path</parameter> to a path relative to <parameter>tree_model_sort</parameter>.  That is,
<parameter>child_path</parameter> points to a path in the child model.  The returned path will
point to the same row in the sorted model.  If <parameter>child_path</parameter> isn't a valid 
path on the child model, then <link linkend="NULL--CAPS"><literal>NULL</literal></link> is returned.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>tree_model_sort</parameter>&#160;:</term>
<listitem><simpara> A <link linkend="GtkTreeModelSort"><type>GtkTreeModelSort</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>child_path</parameter>&#160;:</term>
<listitem><simpara> A <link linkend="GtkTreePath"><type>GtkTreePath</type></link> to convert
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> A newly allocated <link linkend="GtkTreePath"><type>GtkTreePath</type></link>, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gtk-tree-model-sort-convert-child-iter-to-iter" role="function">
<title>gtk_tree_model_sort_convert_child_iter_to_iter ()</title>
<indexterm zone="gtk-tree-model-sort-convert-child-iter-to-iter"><primary sortas="tree_model_sort_convert_child_iter_to_iter">gtk_tree_model_sort_convert_child_iter_to_iter</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            gtk_tree_model_sort_convert_child_iter_to_iter
                                                        (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model_sort,
                                                         <link linkend="GtkTreeIter">GtkTreeIter</link> *sort_iter,
                                                         <link linkend="GtkTreeIter">GtkTreeIter</link> *child_iter);</programlisting>
<para>
Sets <parameter>sort_iter</parameter> to point to the row in <parameter>tree_model_sort</parameter> that corresponds to
the row pointed at by <parameter>child_iter</parameter>.  If <parameter>sort_iter</parameter> was not set, <link linkend="FALSE--CAPS"><literal>FALSE</literal></link>
is returned.  Note: a boolean is only returned since 2.14.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>tree_model_sort</parameter>&#160;:</term>
<listitem><simpara> A <link linkend="GtkTreeModelSort"><type>GtkTreeModelSort</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>sort_iter</parameter>&#160;:</term>
<listitem><simpara> An uninitialized <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>child_iter</parameter>&#160;:</term>
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link> pointing to a row on the child model
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> <link linkend="TRUE--CAPS"><literal>TRUE</literal></link>, if <parameter>sort_iter</parameter> was set, i.e. if <parameter>sort_iter</parameter> is a
valid iterator pointer to a visible row in the child model.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gtk-tree-model-sort-convert-path-to-child-path" role="function">
<title>gtk_tree_model_sort_convert_path_to_child_path ()</title>
<indexterm zone="gtk-tree-model-sort-convert-path-to-child-path"><primary sortas="tree_model_sort_convert_path_to_child_path">gtk_tree_model_sort_convert_path_to_child_path</primary></indexterm><programlisting><link linkend="GtkTreePath">GtkTreePath</link> *       gtk_tree_model_sort_convert_path_to_child_path
                                                        (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model_sort,
                                                         <link linkend="GtkTreePath">GtkTreePath</link> *sorted_path);</programlisting>
<para>
Converts <parameter>sorted_path</parameter> to a path on the child model of <parameter>tree_model_sort</parameter>.  
That is, <parameter>sorted_path</parameter> points to a location in <parameter>tree_model_sort</parameter>.  The 
returned path will point to the same location in the model not being 
sorted.  If <parameter>sorted_path</parameter> does not point to a location in the child model, 
<link linkend="NULL--CAPS"><literal>NULL</literal></link> is returned.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>tree_model_sort</parameter>&#160;:</term>
<listitem><simpara> A <link linkend="GtkTreeModelSort"><type>GtkTreeModelSort</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>sorted_path</parameter>&#160;:</term>
<listitem><simpara> A <link linkend="GtkTreePath"><type>GtkTreePath</type></link> to convert
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> A newly allocated <link linkend="GtkTreePath"><type>GtkTreePath</type></link>, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gtk-tree-model-sort-convert-iter-to-child-iter" role="function">
<title>gtk_tree_model_sort_convert_iter_to_child_iter ()</title>
<indexterm zone="gtk-tree-model-sort-convert-iter-to-child-iter"><primary sortas="tree_model_sort_convert_iter_to_child_iter">gtk_tree_model_sort_convert_iter_to_child_iter</primary></indexterm><programlisting><link linkend="void">void</link>                gtk_tree_model_sort_convert_iter_to_child_iter
                                                        (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model_sort,
                                                         <link linkend="GtkTreeIter">GtkTreeIter</link> *child_iter,
                                                         <link linkend="GtkTreeIter">GtkTreeIter</link> *sorted_iter);</programlisting>
<para>
Sets <parameter>child_iter</parameter> to point to the row pointed to by <parameter>sorted_iter</parameter>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>tree_model_sort</parameter>&#160;:</term>
<listitem><simpara> A <link linkend="GtkTreeModelSort"><type>GtkTreeModelSort</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>child_iter</parameter>&#160;:</term>
<listitem><simpara> An uninitialized <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>sorted_iter</parameter>&#160;:</term>
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link> pointing to a row on <parameter>tree_model_sort</parameter>.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gtk-tree-model-sort-reset-default-sort-func" role="function">
<title>gtk_tree_model_sort_reset_default_sort_func ()</title>
<indexterm zone="gtk-tree-model-sort-reset-default-sort-func"><primary sortas="tree_model_sort_reset_default_sort_func">gtk_tree_model_sort_reset_default_sort_func</primary></indexterm><programlisting><link linkend="void">void</link>                gtk_tree_model_sort_reset_default_sort_func
                                                        (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model_sort);</programlisting>
<para>
This resets the default sort function to be in the 'unsorted' state.  That
is, it is in the same order as the child model. It will re-sort the model
to be in the same order as the child model only if the <link linkend="GtkTreeModelSort"><type>GtkTreeModelSort</type></link>
is in 'unsorted' state.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>tree_model_sort</parameter>&#160;:</term>
<listitem><simpara> A <link linkend="GtkTreeModelSort"><type>GtkTreeModelSort</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gtk-tree-model-sort-clear-cache" role="function">
<title>gtk_tree_model_sort_clear_cache ()</title>
<indexterm zone="gtk-tree-model-sort-clear-cache"><primary sortas="tree_model_sort_clear_cache">gtk_tree_model_sort_clear_cache</primary></indexterm><programlisting><link linkend="void">void</link>                gtk_tree_model_sort_clear_cache     (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model_sort);</programlisting>
<para>
This function should almost never be called.  It clears the <parameter>tree_model_sort</parameter>
of any cached iterators that haven't been reffed with
<link linkend="gtk-tree-model-ref-node"><function>gtk_tree_model_ref_node()</function></link>.  This might be useful if the child model being
sorted is static (and doesn't change often) and there has been a lot of
unreffed access to nodes.  As a side effect of this function, all unreffed
iters will be invalid.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>tree_model_sort</parameter>&#160;:</term>
<listitem><simpara> A <link linkend="GtkTreeModelSort"><type>GtkTreeModelSort</type></link>
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="gtk-tree-model-sort-iter-is-valid" role="function" condition="since:2.2">
<title>gtk_tree_model_sort_iter_is_valid ()</title>
<indexterm zone="gtk-tree-model-sort-iter-is-valid" role="2.2"><primary sortas="tree_model_sort_iter_is_valid">gtk_tree_model_sort_iter_is_valid</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>            gtk_tree_model_sort_iter_is_valid   (<link linkend="GtkTreeModelSort">GtkTreeModelSort</link> *tree_model_sort,
                                                         <link linkend="GtkTreeIter">GtkTreeIter</link> *iter);</programlisting>
<para>
<warning><para>
This function is slow. Only use it for debugging and/or testing purposes.
</para></warning>
</para>
<para>
Checks if the given iter is a valid iter for this <link linkend="GtkTreeModelSort"><type>GtkTreeModelSort</type></link>.</para>
<para>
</para><variablelist role="params">
<varlistentry><term><parameter>tree_model_sort</parameter>&#160;:</term>
<listitem><simpara> A <link linkend="GtkTreeModelSort"><type>GtkTreeModelSort</type></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>iter</parameter>&#160;:</term>
<listitem><simpara> A <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> <link linkend="TRUE--CAPS"><literal>TRUE</literal></link> if the iter is valid, <link linkend="FALSE--CAPS"><literal>FALSE</literal></link> if the iter is invalid.

</simpara></listitem></varlistentry>
</variablelist><para role="since">Since 2.2</para></refsect2>

</refsect1>
<refsect1 id="GtkTreeModelSort.property-details" role="property_details">
<title role="property_details.title">Property Details</title>
<refsect2 id="GtkTreeModelSort--model" role="property"><title>The <literal>&quot;model&quot;</literal> property</title>
<indexterm zone="GtkTreeModelSort--model"><primary sortas="TreeModelSort:model">GtkTreeModelSort:model</primary></indexterm><programlisting>  &quot;model&quot;                    <link linkend="GtkTreeModel">GtkTreeModel</link>*         : Read / Write / Construct Only</programlisting>
<para>The model for the TreeModelSort to sort.</para></refsect2>
</refsect1>



<refsect1 id="GtkTreeModelSort.see-also">
<title>See Also</title>
<para>
<link linkend="GtkTreeModel"><type>GtkTreeModel</type></link>, <link linkend="GtkListStore"><type>GtkListStore</type></link>, <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>, <link linkend="GtkTreeSortable"><type>GtkTreeSortable</type></link>, <link linkend="GtkTreeModelFilter"><type>GtkTreeModelFilter</type></link>
</para>
</refsect1>

</refentry>
