From a100a1588a2a880da482f4bbc15aa02d7abab312 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 19 Jun 2013 10:48:21 -0400 Subject: Add e_tree_model_node_get_n_nodes(). Returns the total number of nodes in the tree model, including hidden nodes in collapsed tree branches. --- mail/message-list.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'mail') diff --git a/mail/message-list.c b/mail/message-list.c index ada7f11871..d6a22485ea 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -2703,6 +2703,23 @@ message_list_is_expandable (ETreeModel *tree_model, return (g_node_first_child ((GNode *) path) != NULL); } +static guint +message_list_get_n_nodes (ETreeModel *tree_model) +{ + ETreePath root; + guint n_nodes = 0; + + root = e_tree_model_get_root (tree_model); + + if (root == NULL) + return 0; + + /* The root node is an empty placeholder, so + * subtract one from the count to exclude it. */ + + return g_node_n_nodes ((GNode *) root, G_TRAVERSE_ALL) - 1; +} + static guint message_list_get_n_children (ETreeModel *tree_model, ETreePath path) @@ -3154,6 +3171,7 @@ message_list_tree_model_init (ETreeModelInterface *interface) interface->get_next = message_list_get_next; interface->is_root = message_list_is_root; interface->is_expandable = message_list_is_expandable; + interface->get_n_nodes = message_list_get_n_nodes; interface->get_n_children = message_list_get_n_children; interface->depth = message_list_depth; interface->get_expanded_default = message_list_get_expanded_default; -- cgit v1.2.3