diff options
-rw-r--r-- | mail/ChangeLog | 40 | ||||
-rw-r--r-- | mail/mail-callbacks.c | 35 |
2 files changed, 50 insertions, 25 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index d738f076bd..a4118fd31d 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,10 @@ +2001-07-12 Jeffrey Stedfast <fejj@ximian.com> + + * mail-callbacks.c (expunge_folder): Force-hide all deleted + messages before expunging. + (expunged_folder): Restore the user's "hide deleted messages" + preference. + 2001-07-12 Jason Leach <jleach@ximian.com> * mail-callbacks.c (expunge_folder): Only blank the mail display @@ -18,9 +25,9 @@ 2001-07-10 Federico Mena Quintero <federico@ximian.com> - * mail-display.c (link_copy_location): Set the CLIPBOARD - selection as well as the primary selection so that Edit/Paste will - work in other programs (e.g. Netscape). + * mail-display.c (link_copy_location): Set the CLIPBOARD selection + as well as the primary selection so that Edit/Paste will work in + other programs (e.g. Netscape). (mail_display_new): Add the target for the CLIPBOARD selection. 2001-07-10 Jason Leach <jleach@ximian.com> @@ -48,20 +55,23 @@ 2001-07-10 Peter Williams <peterw@ximian.com> - * mail-format.c (attachment_header): Took the logic of whether or not - to make the attachment header out of the actual function. - (mail_part_is_displayed_inline): Return if the part is being displayed - inline (regardless of whether it is actually inline). - (mail_part_toggle_displayed): Toggle whether it's displayed inline or not. - (get_inline_flags): Determine whether the part is displayed inline and whether - it is actually inline. - (mail_format_mime_message): Initialize the attachment_status hash table. - - * mail-display.c (inline_cb): Instead of modifying the CamelMimePart, - use mail_part_toggle_displayed + * mail-format.c (attachment_header): Took the logic of whether or + not to make the attachment header out of the actual function. + (mail_part_is_displayed_inline): Return if the part is being + displayed inline (regardless of whether it is actually inline). + (mail_part_toggle_displayed): Toggle whether it's displayed inline + or not. + (get_inline_flags): Determine whether the part is displayed inline + and whether it is actually inline. + (mail_format_mime_message): Initialize the attachment_status hash + table. + + * mail-display.c (inline_cb): Instead of modifying the + CamelMimePart, use mail_part_toggle_displayed (button_press): As above. (pixmap_press): Use mail_part_is_displayed_inline instead of - mail_part_is_inline. Get the MailDisplay from the popup to do this. + mail_part_is_inline. Get the MailDisplay from the popup to do + this. * mail.h: Add prototypes. diff --git a/mail/mail-callbacks.c b/mail/mail-callbacks.c index f67f1a08a1..0800886a7f 100644 --- a/mail/mail-callbacks.c +++ b/mail/mail-callbacks.c @@ -1618,32 +1618,47 @@ previous_flagged_msg (GtkWidget *button, gpointer user_data) CAMEL_MESSAGE_FLAGGED, CAMEL_MESSAGE_FLAGGED); } +struct _expunged_folder_data { + FolderBrowser *fb; + gboolean hidedeleted; +}; + static void expunged_folder (CamelFolder *f, void *data) { - FolderBrowser *fb = data; - + FolderBrowser *fb = ((struct _expunged_folder_data *) data)->fb; + gboolean hidedeleted = ((struct _expunged_folder_data *) data)->hidedeleted; + fb->expunging = NULL; + message_list_set_hidedeleted (fb->message_list, hidedeleted); + + g_free (data); } void expunge_folder (BonoboUIComponent *uih, void *user_data, const char *path) { - FolderBrowser *fb = FOLDER_BROWSER(user_data); - - if (fb->folder - && (fb->expunging == NULL - || fb->folder != fb->expunging)) { + FolderBrowser *fb = FOLDER_BROWSER (user_data); + + if (fb->folder && (fb->expunging == NULL || fb->folder != fb->expunging)) { + struct _expunged_folder_data *data; CamelMessageInfo *info; - + + data = g_malloc (sizeof (*data)); + data->fb = fb; + data->hidedeleted = fb->message_list->hidedeleted; + + /* hide the deleted messages so user can't click on them while we expunge */ + message_list_set_hidedeleted (fb->message_list, TRUE); + /* Only blank the mail display if the message being viewed is one of those to be expunged */ info = camel_folder_get_message_info (fb->folder, fb->loaded_uid); if (info->flags & CAMEL_MESSAGE_DELETED) mail_display_set_message (fb->mail_display, NULL); - + fb->expunging = fb->folder; - mail_expunge_folder(fb->folder, expunged_folder, fb); + mail_expunge_folder (fb->folder, expunged_folder, data); } } |