From 02a99d25623997e59fbc82f6ae70b3f2a862d71f Mon Sep 17 00:00:00 2001 From: Eric Gregory Date: Tue, 15 Nov 2011 18:37:59 -0800 Subject: [PATCH] Fixes conversation jumble. Closes #4384 --- src/client/ui/main-window.vala | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/client/ui/main-window.vala b/src/client/ui/main-window.vala index cd040676..b3358dd0 100644 --- a/src/client/ui/main-window.vala +++ b/src/client/ui/main-window.vala @@ -216,7 +216,7 @@ public class MainWindow : Gtk.Window { public void on_scan_completed() { debug("on scan completed"); - do_fetch_previews.begin(cancellable_message); + do_fetch_previews.begin(cancellable_folder); message_list_view.enable_load_more = true; } @@ -298,25 +298,28 @@ public class MainWindow : Gtk.Window { } private void on_conversation_selected(Geary.Conversation? conversation) { + cancel_message(); + message_viewer.clear(); + if (conversation != null) - do_select_message.begin(conversation, on_select_message_completed); - else - message_viewer.clear(); + do_select_message.begin(conversation, cancellable_message, on_select_message_completed); } - private async void do_select_message(Geary.Conversation conversation) throws Error { + private async void do_select_message(Geary.Conversation conversation, Cancellable? + cancellable = null) throws Error { if (current_folder == null) { debug("Conversation selected with no folder selected"); return; } - cancel_message(); - message_viewer.clear(); foreach (Geary.Email email in conversation.get_pool_sorted(compare_email)) { Geary.Email full_email = yield current_folder.fetch_email_async(email.id, - MessageViewer.REQUIRED_FIELDS, cancellable_message); - + MessageViewer.REQUIRED_FIELDS, cancellable); + + if (cancellable.is_cancelled()) + break; + message_viewer.add_message(full_email); } }