Gtk.TreeModelFilter.set_visible_func

### Method

# Gtk TreeModelFilterset_visible_func

#### Declaration [src]

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

#### Description [src]

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.

If the condition calculated by the function changes over time (e.g. because it depends on some global parameters), you must call `gtk_tree_model_filter_refilter()` to keep the visibility information of the model up-to-date.

Note that `func` is called whenever a row is inserted, when it may still be empty. The visible function should therefore take special care of empty rows, like in the example below.

    static gboolean
    visible_func (GtkTreeModel *model,
                  GtkTreeIter  *iter,
                  gpointer      data)
    {
      // Visible if row is non-empty and first column is “HI”
      char *str;
      gboolean visible = FALSE;

      gtk_tree_model_get (model, iter, 0, &str, -1);
      if (str && strcmp (str, "HI") == 0)
        visible = TRUE;
      g_free (str);

      return visible;
    }

Note that `gtk_tree_model_filter_set_visible_func()` or `gtk_tree_model_filter_set_visible_column()` can only be called once for a given filter model.

#### Parameters

`func` | `GtkTreeModelFilterVisibleFunc`
| A `GtkTreeModelFilterVisibleFunc`, the visible function.
`data` | `gpointer`
| User data to pass to the visible function.
`destroy` | `GDestroyNotify`
| Destroy notifier of `data`.