[PATCH 21/22] Fix issue with odd message lists. Validate them (cherry picked from commit a94f43582faef69317469c34dac8d0fc5985a5f6)
[email protected] Mon, 28 Dec 2009 13:32:53 +0800
| Newsgroups | gmane.comp.gnome.evolution.patches |
|---|---|
| Message-ID | <0666336267e5a150542c161dc68e9d588ba3ece0.1261976200.git.yanli@infradead.org> |
From: Srinivasa Ragavan <[email protected]> Signed-off-by: Yan Li <[email protected]> --- src/em-tree-store.c | 21 ++++++++++++++++++++- 1 files changed, 20 insertions(+), 1 deletions(-) diff --git a/src/em-tree-store.c b/src/em-tree-store.c index 6e60f8c..e2f5b64 100644 --- a/src/em-tree-store.c +++ b/src/em-tree-store.c @@ -218,6 +218,22 @@ emts_calc_path(EMTreeNode *node, GtkTreePath *path) } } +static gboolean +validate_path (EMTreeNode *node) +{ + EMTreeNode *save = node, *next; + gboolean valid = TRUE; + next = node->parent; + + while (valid && next) { + if (next == save) + valid = FALSE; + next = next->parent; + } + + return valid; +} + static GtkTreePath * emts_get_path(GtkTreeModel *tree_model, GtkTreeIter *iter) { @@ -228,7 +244,10 @@ emts_get_path(GtkTreeModel *tree_model, GtkTreeIter *iter) g_return_val_if_fail (iter->stamp == EMTS (tree_model)->stamp, NULL); path = gtk_tree_path_new(); - emts_calc_path((EMTreeNode *)iter->user_data, path); + if (validate_path ((EMTreeNode *)iter->user_data)) + emts_calc_path((EMTreeNode *)iter->user_data, path); + else + gtk_tree_path_append_index(path, 0); return path; } -- 1.6.5.7