summaryrefslogtreecommitdiff
path: root/gtk/gtktreemodelfilter.c
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2012-07-15 21:14:33 -0400
committerJasper St. Pierre <jstpierre@mecheye.net>2012-12-05 13:43:19 -0500
commit7ee5e7af702a6b2794ee6529a617e8dd7af1944a (patch)
tree52ac13974db7ec0f165b3a3613596d03907b0cf1 /gtk/gtktreemodelfilter.c
parenta61b3594987d7cf91bcff071f3b8181c4a3a27de (diff)
downloadgtk+-7ee5e7af702a6b2794ee6529a617e8dd7af1944a.tar.gz
treemodelfilter: Make the constructor binding friendly
This means reffing the root in the set property implementation, rather than in the constructor. We don't need to unref the root on set, as it's a CONSTRUCT_ONLY property. https://bugzilla.gnome.org/show_bug.cgi?id=680065
Diffstat (limited to 'gtk/gtktreemodelfilter.c')
-rw-r--r--gtk/gtktreemodelfilter.c30
1 files changed, 11 insertions, 19 deletions
diff --git a/gtk/gtktreemodelfilter.c b/gtk/gtktreemodelfilter.c
index a8ef24b826..45281c298a 100644
--- a/gtk/gtktreemodelfilter.c
+++ b/gtk/gtktreemodelfilter.c
@@ -3758,10 +3758,14 @@ gtk_tree_model_filter_set_root (GtkTreeModelFilter *filter,
{
g_return_if_fail (GTK_IS_TREE_MODEL_FILTER (filter));
- if (!root)
- filter->priv->virtual_root = NULL;
+ if (root)
+ {
+ filter->priv->virtual_root = gtk_tree_path_copy (root);
+ gtk_tree_model_filter_ref_path (filter, filter->priv->virtual_root);
+ filter->priv->virtual_root_deleted = FALSE;
+ }
else
- filter->priv->virtual_root = gtk_tree_path_copy (root);
+ filter->priv->virtual_root = NULL;
}
/* public API */
@@ -3782,24 +3786,12 @@ GtkTreeModel *
gtk_tree_model_filter_new (GtkTreeModel *child_model,
GtkTreePath *root)
{
- GtkTreeModel *retval;
- GtkTreeModelFilter *filter;
-
g_return_val_if_fail (GTK_IS_TREE_MODEL (child_model), NULL);
- retval = g_object_new (GTK_TYPE_TREE_MODEL_FILTER,
- "child-model", child_model,
- "virtual-root", root,
- NULL);
-
- filter = GTK_TREE_MODEL_FILTER (retval);
- if (filter->priv->virtual_root)
- {
- gtk_tree_model_filter_ref_path (filter, filter->priv->virtual_root);
- filter->priv->virtual_root_deleted = FALSE;
- }
-
- return retval;
+ return g_object_new (GTK_TYPE_TREE_MODEL_FILTER,
+ "child-model", child_model,
+ "virtual-root", root,
+ NULL);
}
/**