summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Rietveld <kris@gtk.org>2011-05-09 09:06:25 +0200
committerKristian Rietveld <kris@gtk.org>2011-08-22 21:30:29 +0200
commit56f83ad197c9e286ab6d69aae14c482a7b4accba (patch)
treedfe17399122bc76e6e0143ae3cfd208229679a8f
parentcb8c608e499ebb78fe660a2946ef7637bb26e29c (diff)
downloadgtk+-56f83ad197c9e286ab6d69aae14c482a7b4accba.tar.gz
Further reduce variable shadowing by factoring code out into functions
-rw-r--r--gtk/gtktreemodelfilter.c111
1 files changed, 60 insertions, 51 deletions
diff --git a/gtk/gtktreemodelfilter.c b/gtk/gtktreemodelfilter.c
index 6a348ae74d..c76514ecd5 100644
--- a/gtk/gtktreemodelfilter.c
+++ b/gtk/gtktreemodelfilter.c
@@ -1775,6 +1775,60 @@ gtk_tree_model_filter_row_has_child_toggled (GtkTreeModel *c_model,
}
static void
+gtk_tree_model_filter_virtual_root_deleted (GtkTreeModelFilter *filter)
+{
+ gint i;
+ GtkTreePath *path;
+ FilterLevel *level = FILTER_LEVEL (filter->priv->root);
+
+ gtk_tree_model_filter_unref_path (filter, filter->priv->virtual_root);
+ filter->priv->virtual_root_deleted = TRUE;
+
+ if (!level)
+ return;
+
+ /* remove everything in the filter model
+ *
+ * For now, we just iterate over the root level and emit a
+ * row_deleted for each FilterElt. Not sure if this is correct.
+ */
+
+ gtk_tree_model_filter_increment_stamp (filter);
+ path = gtk_tree_path_new ();
+ gtk_tree_path_append_index (path, 0);
+
+ for (i = 0; i < level->visible_nodes; i++)
+ gtk_tree_model_row_deleted (GTK_TREE_MODEL (filter), path);
+
+ gtk_tree_path_free (path);
+ gtk_tree_model_filter_free_level (filter, filter->priv->root);
+}
+
+static void
+gtk_tree_model_filter_adjust_virtual_root (GtkTreeModelFilter *filter,
+ GtkTreePath *c_path)
+{
+ gint i;
+ gint level;
+ gint *v_indices, *c_indices;
+ gboolean common_prefix = TRUE;
+
+ level = gtk_tree_path_get_depth (c_path) - 1;
+ v_indices = gtk_tree_path_get_indices (filter->priv->virtual_root);
+ c_indices = gtk_tree_path_get_indices (c_path);
+
+ for (i = 0; i < level; i++)
+ if (v_indices[i] != c_indices[i])
+ {
+ common_prefix = FALSE;
+ break;
+ }
+
+ if (common_prefix && v_indices[level] > c_indices[level])
+ (v_indices[level])--;
+}
+
+static void
gtk_tree_model_filter_row_deleted (GtkTreeModel *c_model,
GtkTreePath *c_path,
gpointer data)
@@ -1797,60 +1851,15 @@ gtk_tree_model_filter_row_deleted (GtkTreeModel *c_model,
(gtk_tree_path_is_ancestor (c_path, filter->priv->virtual_root) ||
!gtk_tree_path_compare (c_path, filter->priv->virtual_root)))
{
- gint i;
- GtkTreePath *path2;
- FilterLevel *level2 = FILTER_LEVEL (filter->priv->root);
-
- gtk_tree_model_filter_unref_path (filter, filter->priv->virtual_root);
- filter->priv->virtual_root_deleted = TRUE;
-
- if (!level2)
- return;
-
- /* remove everything in the filter model
- *
- * For now, we just iterate over the root level and emit a
- * row_deleted for each FilterElt. Not sure if this is correct.
- */
-
- gtk_tree_model_filter_increment_stamp (filter);
- path2 = gtk_tree_path_new ();
- gtk_tree_path_append_index (path2, 0);
-
- for (i = 0; i < level2->visible_nodes; i++)
- gtk_tree_model_row_deleted (GTK_TREE_MODEL (data), path2);
-
- gtk_tree_path_free (path2);
- gtk_tree_model_filter_free_level (filter, filter->priv->root);
-
+ gtk_tree_model_filter_virtual_root_deleted (filter);
return;
}
- /* fixup virtual root */
- if (filter->priv->virtual_root)
- {
- if (gtk_tree_path_get_depth (filter->priv->virtual_root) >=
- gtk_tree_path_get_depth (c_path))
- {
- gint level2;
- gint *v_indices, *c_indices;
- gboolean common_prefix = TRUE;
-
- level2 = gtk_tree_path_get_depth (c_path) - 1;
- v_indices = gtk_tree_path_get_indices (filter->priv->virtual_root);
- c_indices = gtk_tree_path_get_indices (c_path);
-
- for (i = 0; i < level2; i++)
- if (v_indices[i] != c_indices[i])
- {
- common_prefix = FALSE;
- break;
- }
-
- if (common_prefix && v_indices[level2] > c_indices[level2])
- (v_indices[level2])--;
- }
- }
+ /* adjust the virtual root for the deleted row */
+ if (filter->priv->virtual_root &&
+ gtk_tree_path_get_depth (filter->priv->virtual_root) >=
+ gtk_tree_path_get_depth (c_path))
+ gtk_tree_model_filter_adjust_virtual_root (filter, c_path);
path = gtk_real_tree_model_filter_convert_child_path_to_path (filter,
c_path,