diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2004-05-04 02:59:05 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2004-05-04 02:59:05 +0800 |
commit | 77c5ed36148a3a83099ecc17bf48ad8d5068773a (patch) | |
tree | a1fe17dd8df81c4ef0e01ecba475e8f28a76a720 /mail/message-list.c | |
parent | 697c34cf89935ae92ab52a61f2db9730092144f2 (diff) | |
download | gsoc2013-evolution-77c5ed36148a3a83099ecc17bf48ad8d5068773a.tar gsoc2013-evolution-77c5ed36148a3a83099ecc17bf48ad8d5068773a.tar.gz gsoc2013-evolution-77c5ed36148a3a83099ecc17bf48ad8d5068773a.tar.bz2 gsoc2013-evolution-77c5ed36148a3a83099ecc17bf48ad8d5068773a.tar.lz gsoc2013-evolution-77c5ed36148a3a83099ecc17bf48ad8d5068773a.tar.xz gsoc2013-evolution-77c5ed36148a3a83099ecc17bf48ad8d5068773a.tar.zst gsoc2013-evolution-77c5ed36148a3a83099ecc17bf48ad8d5068773a.zip |
Fix for bug #57968
2004-05-03 Jeffrey Stedfast <fejj@ximian.com>
Fix for bug #57968
* message-list.c (message_list_set_folder): Save the tree/hide
state of the current folder before clearing the message-list.
(message_list_set_folder): Note that a new folder has just been
set (now needed by the regen code to tell whether or not it should
save the tree state before clearing the tree).
(message_list_destroy): Save the tree/hide state before destroying
the message-info's, not after.
(regen_list_regened): If the regen is being performed in response
to a message_list_set_folder, don't save the tree state before
clearing the tree or we'll clobber the real state with bogus data.
svn path=/trunk/; revision=25767
Diffstat (limited to 'mail/message-list.c')
-rw-r--r-- | mail/message-list.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/mail/message-list.c b/mail/message-list.c index c34a1444b1..138832c007 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -1625,14 +1625,15 @@ message_list_destroy(GtkObject *object) if (message_list->folder) { /* need to do this before removing folder, folderinfo's might not exist after */ + save_tree_state(message_list); + save_hide_state(message_list); + if (message_list->uid_nodemap) { g_hash_table_foreach(message_list->uid_nodemap, (GHFunc)clear_info, message_list); g_hash_table_destroy (message_list->uid_nodemap); message_list->uid_nodemap = NULL; } - save_tree_state(message_list); - save_hide_state(message_list); camel_object_unhook_event(message_list->folder, "folder_changed", folder_changed, message_list); camel_object_unref (message_list->folder); message_list->folder = NULL; @@ -2543,10 +2544,14 @@ message_list_set_folder (MessageList *message_list, CamelFolder *folder, const c } } + if (message_list->folder != NULL) { + save_tree_state (message_list); + save_hide_state (message_list); + } + clear_tree (message_list); if (message_list->folder) { - save_hide_state(message_list); camel_object_unhook_event((CamelObject *)message_list->folder, "folder_changed", folder_changed, message_list); camel_object_unref (message_list->folder); @@ -2575,6 +2580,7 @@ message_list_set_folder (MessageList *message_list, CamelFolder *folder, const c camel_object_ref (folder); message_list->folder = folder; + message_list->just_set_folder = TRUE; /* Setup the strikeout effect for non-trash folders */ if (!(folder->folder_flags & CAMEL_FOLDER_IS_TRASH)) @@ -2681,10 +2687,8 @@ on_click (ETree *tree, gint row, ETreePath path, gint col, GdkEvent *event, Mess else return FALSE; - info = get_message_info (list, path); - if (info == NULL) { + if (!(info = get_message_info (list, path))) return FALSE; - } /* If a message was marked as deleted and the user flags it as important, marks it as needing a reply, marks it as unread, @@ -3286,7 +3290,10 @@ regen_list_regened (struct _mail_msg *mm) return; if (m->dotree) { - save_tree_state (m->ml); + if (m->ml->just_set_folder) + m->ml->just_set_folder = FALSE; + else + save_tree_state (m->ml); build_tree (m->ml, m->tree, m->changes); if (m->ml->thread_tree) |