aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
Diffstat (limited to 'mail')
-rw-r--r--mail/ChangeLog8
-rw-r--r--mail/folder-browser.c12
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);
}