diff options
Diffstat (limited to 'mail')
-rw-r--r-- | mail/ChangeLog | 8 | ||||
-rw-r--r-- | mail/folder-browser.c | 12 |
2 files changed, 16 insertions, 4 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index 3878a64aa2..467616f0f4 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,11 @@ +2003-06-19 Not Zed <NotZed@Ximian.com> + + ** See bug #45063 + + * folder-browser.c (do_message_selected): dont re-load if the same + message gets selected again as one we've already shown. Etree + sends out selection changed events even when when it hasn't. + 2003-06-18 Jeffrey Stedfast <fejj@ximian.com> * message-list.c (hide_save_state): Only save state if we have a diff --git a/mail/folder-browser.c b/mail/folder-browser.c index 6ec4bf14e0..0f09f8b7fd 100644 --- a/mail/folder-browser.c +++ b/mail/folder-browser.c @@ -2473,12 +2473,16 @@ do_message_selected (FolderBrowser *fb) /* if we are loading, then set a pending, but leave the loading, coudl cancel here (?) */ if (fb->loading_uid) { - g_free (fb->pending_uid); - fb->pending_uid = g_strdup (fb->new_uid); + if (fb->new_uid == NULL || strcmp(fb->pending_uid, fb->new_uid) != 0) { + g_free (fb->pending_uid); + fb->pending_uid = g_strdup (fb->new_uid); + } } else { if (fb->new_uid) { - fb->loading_uid = g_strdup (fb->new_uid); - mail_get_message (fb->folder, fb->loading_uid, done_message_selected, fb, mail_thread_new); + if (fb->loaded_uid == NULL || strcmp(fb->new_uid, fb->loaded_uid) != 0) { + fb->loading_uid = g_strdup (fb->new_uid); + mail_get_message (fb->folder, fb->loading_uid, done_message_selected, fb, mail_thread_new); + } } else { mail_display_set_message (fb->mail_display, NULL, NULL, NULL); } |