## GtkTreeModelSort

GtkTreeModelSort — A wrapper which makes an underlying tree model sortable

## Synopsis

    #include <gtk/gtk.h>

    struct      GtkTreeModelSort;
    GtkTreeModel* gtk_tree_model_sort_new_with_model
                                                (GtkTreeModel *child_model);
    GtkTreeModel* gtk_tree_model_sort_get_model (GtkTreeModelSort *tree_model);
    GtkTreePath* gtk_tree_model_sort_convert_child_path_to_path
                                                (GtkTreeModelSort *tree_model_sort,
                                                 GtkTreePath *child_path);
    void        gtk_tree_model_sort_convert_child_iter_to_iter
                                                (GtkTreeModelSort *tree_model_sort,
                                                 GtkTreeIter *sort_iter,
                                                 GtkTreeIter *child_iter);
    GtkTreePath* gtk_tree_model_sort_convert_path_to_child_path
                                                (GtkTreeModelSort *tree_model_sort,
                                                 GtkTreePath *sorted_path);
    void        gtk_tree_model_sort_convert_iter_to_child_iter
                                                (GtkTreeModelSort *tree_model_sort,
                                                 GtkTreeIter *child_iter,
                                                 GtkTreeIter *sorted_iter);
    void        gtk_tree_model_sort_reset_default_sort_func
                                                (GtkTreeModelSort *tree_model_sort);
    void        gtk_tree_model_sort_clear_cache (GtkTreeModelSort *tree_model_sort);
    gboolean    gtk_tree_model_sort_iter_is_valid
                                                (GtkTreeModelSort *tree_model_sort,
                                                 GtkTreeIter *iter);

## Object Hierarchy

      GObject
       +----GtkTreeModelSort

## Implemented Interfaces

GtkTreeModelSort implements GtkTreeModel and GtkTreeSortable.

## Properties

      "model"                GtkTreeModel         : Read / Write / Construct Only

## Description

## Details

### struct GtkTreeModelSort

    struct GtkTreeModelSort;

### gtk_tree_model_sort_new_with_model ()

    GtkTreeModel* gtk_tree_model_sort_new_with_model
                                                (GtkTreeModel *child_model);

Creates a new GtkTreeModel, with `child_model` as the child_model.

`child_model` : | A GtkTreeModel
Returns : | A new GtkTreeModel.

### gtk_tree_model_sort_get_model ()

    GtkTreeModel* gtk_tree_model_sort_get_model (GtkTreeModelSort *tree_model);

Returns the model the GtkTreeModelSort is sorting.

`tree_model` : | a GtkTreeModelSort
Returns : | the "child model" being sorted

### gtk_tree_model_sort_convert_child_path_to_path ()

    GtkTreePath* gtk_tree_model_sort_convert_child_path_to_path
                                                (GtkTreeModelSort *tree_model_sort,
                                                 GtkTreePath *child_path);

Converts `child_path` to a path relative to `tree_model_sort`. That is, `child_path` points to a path in the child model. The returned path will point to the same row in the sorted model. If `child_path` isn't a valid path on the child model, then `NULL` is returned.

`tree_model_sort` : | A GtkTreeModelSort
`child_path` : | A GtkTreePath to convert
Returns : | A newly allocated GtkTreePath, or `NULL`

### gtk_tree_model_sort_convert_child_iter_to_iter ()

    void        gtk_tree_model_sort_convert_child_iter_to_iter
                                                (GtkTreeModelSort *tree_model_sort,
                                                 GtkTreeIter *sort_iter,
                                                 GtkTreeIter *child_iter);

Sets `sort_iter` to point to the row in `tree_model_sort` that corresponds to the row pointed at by `child_iter`.

`tree_model_sort` : | A GtkTreeModelSort
`sort_iter` : | An uninitialized GtkTreeIter.
`child_iter` : | A valid GtkTreeIter pointing to a row on the child model

### gtk_tree_model_sort_convert_path_to_child_path ()

    GtkTreePath* gtk_tree_model_sort_convert_path_to_child_path
                                                (GtkTreeModelSort *tree_model_sort,
                                                 GtkTreePath *sorted_path);

Converts `sorted_path` to a path on the child model of `tree_model_sort`. That is, `sorted_path` points to a location in `tree_model_sort`. The returned path will point to the same location in the model not being sorted. If `sorted_path` does not point to a location in the child model, `NULL` is returned.

`tree_model_sort` : | A GtkTreeModelSort
`sorted_path` : | A GtkTreePath to convert
Returns : | A newly allocated GtkTreePath, or `NULL`

### gtk_tree_model_sort_convert_iter_to_child_iter ()

    void        gtk_tree_model_sort_convert_iter_to_child_iter
                                                (GtkTreeModelSort *tree_model_sort,
                                                 GtkTreeIter *child_iter,
                                                 GtkTreeIter *sorted_iter);

Sets `child_iter` to point to the row pointed to by `sorted_iter`.

`tree_model_sort` : | A GtkTreeModelSort
`child_iter` : | An uninitialized GtkTreeIter
`sorted_iter` : | A valid GtkTreeIter pointing to a row on `tree_model_sort`.

### gtk_tree_model_sort_reset_default_sort_func ()

    void        gtk_tree_model_sort_reset_default_sort_func
                                                (GtkTreeModelSort *tree_model_sort);

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 GtkTreeModelSort is in 'unsorted' state.

`tree_model_sort` : | A GtkTreeModelSort

### gtk_tree_model_sort_clear_cache ()

    void        gtk_tree_model_sort_clear_cache (GtkTreeModelSort *tree_model_sort);

This function should almost never be called. It clears the `tree_model_sort` of any cached iterators that haven't been reffed with `gtk_tree_model_ref_node()`. 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.

`tree_model_sort` : | A GtkTreeModelSort

### gtk_tree_model_sort_iter_is_valid ()

    gboolean    gtk_tree_model_sort_iter_is_valid
                                                (GtkTreeModelSort *tree_model_sort,
                                                 GtkTreeIter *iter);

WARNING: This function is slow. Only use it for debugging and/or testing purposes.

Checks if the given iter is a valid iter for this GtkTreeModelSort.

`tree_model_sort` : | A GtkTreeModelSort.
`iter` : | A GtkTreeIter.
Returns : | `TRUE` if the iter is valid, `FALSE` if the iter is invalid.

Since 2.2

## Properties

"`model`" (GtkTreeModel : Read / Write / Construct Only) | The model for the TreeModelSort to sort.