From cdb641800827669bdde0ade2e3efd08fd3a2b405 Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Tue, 11 Feb 2003 21:20:43 +0000 Subject: Register a destroy virtual method. (mail_accounts_tab_destroy): Set 2003-02-11 Jeffrey Stedfast * mail-accounts.c (mail_accounts_tab_class_init): Register a destroy virtual method. (mail_accounts_tab_destroy): Set mail_display->destroyed = TRUE. * message-list.c (message_list_destroy): Set mail_display->destroyed = TRUE. This is a workaround for the GTK_OBJECT_DESTROYED() macro that we used to use before. svn path=/trunk/; revision=19884 --- mail/message-list.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'mail/message-list.c') 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; -- cgit v1.2.3