+ if (model != NULL)
+ {
+ GtkTreeModel *new_model = gtk_tree_model_filter_new (model, NULL);
+
+ g_object_set_data (G_OBJECT (source), "model-copy", new_model);
+
+ gtk_tree_view_set_model (source, new_model);
+
+ gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (new_model),
+ is_source_item_visible,
+ selector,
+ NULL);
+
+ g_signal_connect_swapped (new_model,
+ "row-deleted",
+ G_CALLBACK (on_row_deleted), selector);
+
+ g_signal_connect_swapped (new_model,
+ "row-inserted",
+ G_CALLBACK (on_row_inserted), selector);
+
+ g_object_unref (new_model);
+ }