diff options
author | Not Zed <NotZed@Ximian.com> | 2005-08-02 11:10:09 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2005-08-02 11:10:09 +0800 |
commit | 09741a2eb5188392855e96538cf957e492f38c3d (patch) | |
tree | 7a355e5970a2af2134e2a2c79ea6c0da99d3cd87 /mail/em-subscribe-editor.c | |
parent | 4fbcddb3957b4c3fff2c61ea854f67d843b00b79 (diff) | |
download | gsoc2013-evolution-09741a2eb5188392855e96538cf957e492f38c3d.tar.gz gsoc2013-evolution-09741a2eb5188392855e96538cf957e492f38c3d.tar.zst gsoc2013-evolution-09741a2eb5188392855e96538cf957e492f38c3d.zip |
always process all nodes we have, even if we have already seen the top
2005-08-01 Not Zed <NotZed@Ximian.com>
* em-subscribe-editor.c (sub_fill_level): always process all nodes
we have, even if we have already seen the top result.
svn path=/trunk/; revision=29949
Diffstat (limited to 'mail/em-subscribe-editor.c')
-rw-r--r-- | mail/em-subscribe-editor.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/mail/em-subscribe-editor.c b/mail/em-subscribe-editor.c index 92588c76f9..205776e858 100644 --- a/mail/em-subscribe-editor.c +++ b/mail/em-subscribe-editor.c @@ -294,7 +294,7 @@ sub_fill_level(EMSubscribe *sub, CamelFolderInfo *info, GtkTreeIter *parent, in /* first, fill a level up */ fi = info; while (fi) { - if (g_hash_table_lookup(sub->folders, fi->full_name) == NULL) { + if ((node = g_hash_table_lookup(sub->folders, fi->full_name)) == NULL) { gboolean state; gtk_tree_store_append(treestore, &iter, parent); @@ -302,20 +302,23 @@ sub_fill_level(EMSubscribe *sub, CamelFolderInfo *info, GtkTreeIter *parent, in node->info = fi; state = (fi->flags & CAMEL_FOLDER_SUBSCRIBED) != 0; gtk_tree_store_set(treestore, &iter, 0, state, 1, fi->name, 2, node, -1); - if ((fi->flags & CAMEL_FOLDER_NOINFERIORS) == 0) { + if ((fi->flags & CAMEL_FOLDER_NOINFERIORS) == 0) node->path = gtk_tree_model_get_path((GtkTreeModel *)treestore, &iter); - if (node->path) { - /* save time, if we have any children alread, dont re-scan */ - if (fi->child) { - d(printf("scanning child '%s'\n", fi->child->full_name)); - sub_fill_level(sub, fi->child, &iter, FALSE); - } else { - if (pending) - e_dlist_addtail(&sub->pending, (EDListNode *)node); - } - } - } g_hash_table_insert(sub->folders, fi->full_name, node); + } else if (node->path) { + gtk_tree_model_get_iter(gtk_tree_view_get_model(sub->tree), &iter, node->path); + } + + if ((fi->flags & CAMEL_FOLDER_NOINFERIORS) == 0 + && node->path) { + /* save time, if we have any children alread, dont re-scan */ + if (fi->child) { + d(printf("scanning child '%s'\n", fi->child->full_name)); + sub_fill_level(sub, fi->child, &iter, FALSE); + } else { + if (pending) + e_dlist_addtail(&sub->pending, (EDListNode *)node); + } } fi = fi->next; } |