aboutsummaryrefslogtreecommitdiffstats
path: root/mail/message-list.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/message-list.c')
-rw-r--r--mail/message-list.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/mail/message-list.c b/mail/message-list.c
index 09645debe4..d5c61ff554 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -1270,19 +1270,19 @@ static void
message_list_destroy(GtkObject *object)
{
MessageList *message_list = MESSAGE_LIST (object);
-
+
if (message_list->async_event) {
mail_async_event_destroy(message_list->async_event);
message_list->async_event = NULL;
}
-
+
if (message_list->folder) {
/* need to do this before removing folder, folderinfo's might not exist after */
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);
}
-
+
save_tree_state(message_list);
hide_save_state(message_list);
camel_object_unhook_event(message_list->folder, "folder_changed", folder_changed, message_list);
@@ -1290,27 +1290,29 @@ message_list_destroy(GtkObject *object)
camel_object_unref (message_list->folder);
message_list->folder = NULL;
}
-
+
if (message_list->extras) {
g_object_unref((message_list->extras));
message_list->extras = NULL;
}
-
+
if (message_list->model) {
g_object_unref((message_list->model));
message_list->model = NULL;
}
-
+
if (message_list->idle_id != 0) {
g_source_remove (message_list->idle_id);
message_list->idle_id = 0;
}
-
+
if (message_list->seen_id) {
g_source_remove (message_list->seen_id);
message_list->seen_id = 0;
}
-
+
+ message_list->destroyed = TRUE;
+
GTK_OBJECT_CLASS (message_list_parent_class)->destroy(object);
}
@@ -2741,10 +2743,9 @@ regen_list_regened (struct _mail_msg *mm)
{
struct _regen_list_msg *m = (struct _regen_list_msg *)mm;
-#warning "GTK_OBJECT_DESTROYED replacement"
- /*if (GTK_OBJECT_DESTROYED(m->ml))
- return;*/
-
+ if (m->ml->destroyed)
+ return;
+
if (!m->complete)
return;