[geary/wip/730682-refine-convo-list] Ensure preview loader gets cancelled when main window's folder changes.
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/wip/730682-refine-convo-list] Ensure preview loader gets cancelled when main window's folder changes.
- Date: Fri, 5 Jan 2018 05:31:35 +0000 (UTC)
commit dbb14401d11a3165fdeeeb0ec5dfa2302342f126
Author: Michael James Gratton <mike vee net>
Date: Fri Jan 5 16:10:08 2018 +1100
Ensure preview loader gets cancelled when main window's folder changes.
src/client/components/main-window.vala | 4 ++--
.../conversation-list/conversation-list.vala | 5 +++--
src/client/conversation-list/preview-loader.vala | 2 ++
3 files changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/src/client/components/main-window.vala b/src/client/components/main-window.vala
index 2226276..50661e4 100644
--- a/src/client/components/main-window.vala
+++ b/src/client/components/main-window.vala
@@ -746,6 +746,7 @@ public class MainWindow : Gtk.ApplicationWindow {
folder, folder.get_support_types()
);
this.highlighted_policy = null;
+ this.load_cancellable = new Cancellable();
// Set up a new conversation monitor for the folder
Geary.App.ConversationMonitor monitor = new Geary.App.ConversationMonitor(
@@ -764,7 +765,7 @@ public class MainWindow : Gtk.ApplicationWindow {
monitor.email_flags_changed.connect(on_conversation_flags_changed);
this.current_conversations = monitor;
- this.conversation_list.bind_model(monitor);
+ this.conversation_list.bind_model(monitor, this.load_cancellable);
// Update the UI
this.conversation_list_actions.set_account(folder.account);
@@ -778,7 +779,6 @@ public class MainWindow : Gtk.ApplicationWindow {
this.progress_monitor.add(this.conversation_list.model.previews.progress);
// Finally, start the folder loading
- this.load_cancellable = new Cancellable();
monitor.start_monitoring_async.begin(this.load_cancellable);
this.conversation_list.thaw_selection();
}
diff --git a/src/client/conversation-list/conversation-list.vala
b/src/client/conversation-list/conversation-list.vala
index 27ee235..704d000 100644
--- a/src/client/conversation-list/conversation-list.vala
+++ b/src/client/conversation-list/conversation-list.vala
@@ -164,10 +164,11 @@ public class ConversationList : Gtk.ListBox {
return this.marked.keys.read_only_view;
}
- public new void bind_model(Geary.App.ConversationMonitor monitor) {
+ public new void bind_model(Geary.App.ConversationMonitor monitor,
+ Cancellable cancellable) {
Geary.Folder displayed = monitor.base_folder;
Geary.App.EmailStore store = new Geary.App.EmailStore(displayed.account);
- PreviewLoader loader = new PreviewLoader(store, new Cancellable()); // XXX
+ PreviewLoader loader = new PreviewLoader(store, cancellable);
monitor.scan_started.connect(on_scan_started);
monitor.scan_completed.connect(on_scan_completed);
diff --git a/src/client/conversation-list/preview-loader.vala
b/src/client/conversation-list/preview-loader.vala
index b840582..356543d 100644
--- a/src/client/conversation-list/preview-loader.vala
+++ b/src/client/conversation-list/preview-loader.vala
@@ -56,6 +56,8 @@ public class PreviewLoader : Geary.BaseObject {
this.load_timer = new Geary.TimeoutManager.seconds(
1, () => { this.do_load.begin(); }
);
+
+ cancellable.cancelled.connect(() => { this.load_timer.reset(); });
}
~PreviewLoader() {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]