## GtkTreeModelFilter

GtkTreeModelFilter —

## Synopsis

    #include <gtk/gtk.h>

    struct      GtkTreeModelFilter;
    gboolean    (*GtkTreeModelFilterVisibleFunc)
                                                (GtkTreeModel *model,
                                                 GtkTreeIter *iter,
                                                 gpointer data);
    void        (*GtkTreeModelFilterModifyFunc) (GtkTreeModel *model,
                                                 GtkTreeIter *iter,
                                                 GValue *value,
                                                 gint column,
                                                 gpointer data);
    GtkTreeModel* gtk_tree_model_filter_new     (GtkTreeModel *child_model,
                                                 GtkTreePath *root);
    void        gtk_tree_model_filter_set_visible_func
                                                (GtkTreeModelFilter *filter,
                                                 GtkTreeModelFilterVisibleFunc func,
                                                 gpointer data,
                                                 GtkDestroyNotify destroy);
    void        gtk_tree_model_filter_set_modify_func
                                                (GtkTreeModelFilter *filter,
                                                 gint n_columns,
                                                 GType *types,
                                                 GtkTreeModelFilterModifyFunc func,
                                                 gpointer data,
                                                 GtkDestroyNotify destroy);
    void        gtk_tree_model_filter_set_visible_column
                                                (GtkTreeModelFilter *filter,
                                                 gint column);
    GtkTreeModel* gtk_tree_model_filter_get_model
                                                (GtkTreeModelFilter *filter);
    void        gtk_tree_model_filter_convert_child_iter_to_iter
                                                (GtkTreeModelFilter *filter,
                                                 GtkTreeIter *filter_iter,
                                                 GtkTreeIter *child_iter);
    void        gtk_tree_model_filter_convert_iter_to_child_iter
                                                (GtkTreeModelFilter *filter,
                                                 GtkTreeIter *child_iter,
                                                 GtkTreeIter *filter_iter);
    GtkTreePath* gtk_tree_model_filter_convert_child_path_to_path
                                                (GtkTreeModelFilter *filter,
                                                 GtkTreePath *child_path);
    GtkTreePath* gtk_tree_model_filter_convert_path_to_child_path
                                                (GtkTreeModelFilter *filter,
                                                 GtkTreePath *filter_path);
    void        gtk_tree_model_filter_refilter  (GtkTreeModelFilter *filter);
    void        gtk_tree_model_filter_clear_cache
                                                (GtkTreeModelFilter *filter);

## Object Hierarchy

      GObject
       +----GtkTreeModelFilter

## Implemented Interfaces

GtkTreeModelFilter implements GtkTreeModel and GtkTreeDragSource.

## Properties

      "child-model"          GtkTreeModel         : Read / Write / Construct Only
      "virtual-root"         GtkTreePath          : Read / Write / Construct Only

## Description

## Details

### struct GtkTreeModelFilter

    struct GtkTreeModelFilter;

### GtkTreeModelFilterVisibleFunc ()

    gboolean    (*GtkTreeModelFilterVisibleFunc)
                                                (GtkTreeModel *model,
                                                 GtkTreeIter *iter,
                                                 gpointer data);

`model` : |
`iter` : |
`data` : |
Returns : |

### GtkTreeModelFilterModifyFunc ()

    void        (*GtkTreeModelFilterModifyFunc) (GtkTreeModel *model,
                                                 GtkTreeIter *iter,
                                                 GValue *value,
                                                 gint column,
                                                 gpointer data);

`model` : |
`iter` : |
`value` : |
`column` : |
`data` : |

### gtk_tree_model_filter_new ()

    GtkTreeModel* gtk_tree_model_filter_new     (GtkTreeModel *child_model,
                                                 GtkTreePath *root);

Creates a new GtkTreeModel, with `child_model` as the child_model and `root` as the virtual root.

`child_model` : | A GtkTreeModel.
`root` : | A GtkTreePath or `NULL`.
Returns : | A new GtkTreeModel.

Since 2.4

### gtk_tree_model_filter_set_visible_func ()

    void        gtk_tree_model_filter_set_visible_func
                                                (GtkTreeModelFilter *filter,
                                                 GtkTreeModelFilterVisibleFunc func,
                                                 gpointer data,
                                                 GtkDestroyNotify destroy);

Sets the visible function used when filtering the `filter` to be `func`. The function should return `TRUE` if the given row should be visible and `FALSE` otherwise.

`filter` : | A GtkTreeModelFilter.
`func` : | A GtkTreeModelFilterVisibleFunc, the visible function.
`data` : | User data to pass to the visible function, or `NULL`.
`destroy` : | Destroy notifier of `data`, or `NULL`.

Since 2.4

### gtk_tree_model_filter_set_modify_func ()

    void        gtk_tree_model_filter_set_modify_func
                                                (GtkTreeModelFilter *filter,
                                                 gint n_columns,
                                                 GType *types,
                                                 GtkTreeModelFilterModifyFunc func,
                                                 gpointer data,
                                                 GtkDestroyNotify destroy);

Sets the `filter` to have `n_columns` columns with `types`. If `func` is not `NULL`, it will set `func` to be the modify function of `filter`.

`filter` : | A GtkTreeModelFilter.
`n_columns` : | The number of columns in the filter model.
`types` : | The GTypes of the columns.
`func` : | A GtkTreeModelFilterModifyFunc, or `NULL`.
`data` : | User data to pass to the modify function, or `NULL`.
`destroy` : | Destroy notifier of `data`, or `NULL`.

Since 2.4

### gtk_tree_model_filter_set_visible_column ()

    void        gtk_tree_model_filter_set_visible_column
                                                (GtkTreeModelFilter *filter,
                                                 gint column);

Sets `column` of the child_model to be the column where `filter` should look for visibility information. `columns` should be a column of type `G_TYPE_BOOLEAN`, where `TRUE` means that a row is visible, and `FALSE` if not.

`filter` : | A GtkTreeModelFilter.
`column` : | A gint which is the column containing the visible information.

Since 2.4

### gtk_tree_model_filter_get_model ()

    GtkTreeModel* gtk_tree_model_filter_get_model
                                                (GtkTreeModelFilter *filter);

Returns a pointer to the child model of `filter`.

`filter` : | A GtkTreeModelFilter.
Returns : | A pointer to a GtkTreeModel.

Since 2.4

### gtk_tree_model_filter_convert_child_iter_to_iter ()

    void        gtk_tree_model_filter_convert_child_iter_to_iter
                                                (GtkTreeModelFilter *filter,
                                                 GtkTreeIter *filter_iter,
                                                 GtkTreeIter *child_iter);

Sets `filter_iter` to point to the row in `filter` that corresponds to the row pointed at by `child_iter`.

`filter` : | A GtkTreeModelFilter.
`filter_iter` : | An uninitialized GtkTreeIter.
`child_iter` : | A valid GtkTreeIter pointing to a row on the child model.

Since 2.4

### gtk_tree_model_filter_convert_iter_to_child_iter ()

    void        gtk_tree_model_filter_convert_iter_to_child_iter
                                                (GtkTreeModelFilter *filter,
                                                 GtkTreeIter *child_iter,
                                                 GtkTreeIter *filter_iter);

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

`filter` : | A GtkTreeModelFilter.
`child_iter` : | An uninitialized GtkTreeIter.
`filter_iter` : | A valid GtkTreeIter pointing to a row on `filter`.

Since 2.4

### gtk_tree_model_filter_convert_child_path_to_path ()

    GtkTreePath* gtk_tree_model_filter_convert_child_path_to_path
                                                (GtkTreeModelFilter *filter,
                                                 GtkTreePath *child_path);

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

`filter` : | A GtkTreeModelFilter.
`child_path` : | A GtkTreePath to convert.
Returns : | A newly allocated GtkTreePath, or `NULL`.

Since 2.4

### gtk_tree_model_filter_convert_path_to_child_path ()

    GtkTreePath* gtk_tree_model_filter_convert_path_to_child_path
                                                (GtkTreeModelFilter *filter,
                                                 GtkTreePath *filter_path);

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

`filter` : | A GtkTreeModelFilter.
`filter_path` : | A GtkTreePath to convert.
Returns : | A newly allocated GtkTreePath, or `NULL`.

Since 2.4

### gtk_tree_model_filter_refilter ()

    void        gtk_tree_model_filter_refilter  (GtkTreeModelFilter *filter);

Emits ::row_changed for each row in the child model, which causes the filter to re-evaluate whether a row is visible or not.

`filter` : | A GtkTreeModelFilter.

Since 2.4

### gtk_tree_model_filter_clear_cache ()

    void        gtk_tree_model_filter_clear_cache
                                                (GtkTreeModelFilter *filter);

This function should almost never be called. It clears the `filter` of any cached iterators that haven't been reffed with `gtk_tree_model_ref_node()`. This might be useful if the child model being filtered 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 itters will be invalid.

`filter` : | A GtkTreeModelFilter.

Since 2.4

## Properties

"`child-model`" (GtkTreeModel : Read / Write / Construct Only) | The model for the filtermodel to filter.
"`virtual-root`" (GtkTreePath : Read / Write / Construct Only) | The virtual root (relative to the child model) for this filtermodel.