Ensure ConversationMessage.web_view load stops when message load cancelled.
* src/client/conversation-viewer/conversation-message.vala: Load message body from ::start_loading, pass the cancellable through so the web_view load can be stopped. Make ::load_message_body async so the UI can be updated before attempting the page load.
This commit is contained in:
parent
47134cb61c
commit
deacbca1ec
1 changed files with 7 additions and 7 deletions
|
|
@ -205,8 +205,6 @@ public class ConversationMessage : Gtk.Box {
|
|||
body_box.set_has_tooltip(true); // Used to show link URLs
|
||||
body_box.pack_start(web_view, true, true, 0);
|
||||
|
||||
load_message_body();
|
||||
|
||||
// if (email.from != null && email.from.contains_normalized(current_account_information.email)) {
|
||||
// // XXX set a RO property?
|
||||
// get_style_context().add_class("sent");
|
||||
|
|
@ -243,6 +241,7 @@ public class ConversationMessage : Gtk.Box {
|
|||
}
|
||||
|
||||
public async void start_loading(Cancellable load_cancelled) {
|
||||
yield load_message_body(load_cancelled);
|
||||
yield load_attachments(email.attachments, load_cancelled);
|
||||
}
|
||||
|
||||
|
|
@ -423,7 +422,7 @@ public class ConversationMessage : Gtk.Box {
|
|||
// Geary.SpecialFolderType.SENT.get_display_name()));
|
||||
}
|
||||
|
||||
private void load_message_body() {
|
||||
private async void load_message_body(Cancellable load_cancelled) {
|
||||
bool load_images = false;
|
||||
string? body_text = null;
|
||||
try {
|
||||
|
|
@ -436,8 +435,8 @@ public class ConversationMessage : Gtk.Box {
|
|||
debug("Could not get message text. %s", err.message);
|
||||
}
|
||||
|
||||
body_text = clean_html_markup(body_text ?? "", message, out remote_images);
|
||||
if (remote_images) {
|
||||
body_text = clean_html_markup(body_text ?? "", message, out load_images);
|
||||
if (load_images) {
|
||||
Geary.Contact contact =
|
||||
contact_store.get_by_rfc822(email.get_primary_originator());
|
||||
bool always_load = contact != null && contact.always_load_remote_images();
|
||||
|
|
@ -448,6 +447,7 @@ public class ConversationMessage : Gtk.Box {
|
|||
}
|
||||
}
|
||||
|
||||
load_cancelled.cancelled.connect(() => { web_view.stop_loading(); });
|
||||
web_view.notify["load-status"].connect((source, param) => {
|
||||
if (web_view.load_status == WebKit.LoadStatus.FINISHED) {
|
||||
if (load_images) {
|
||||
|
|
@ -478,10 +478,10 @@ public class ConversationMessage : Gtk.Box {
|
|||
}
|
||||
});
|
||||
|
||||
// Only load it after we've hooked up the load-status signal above
|
||||
// Only load it after we've hooked up the signals above
|
||||
web_view.load_string(body_text, "text/html", "UTF8", "");
|
||||
}
|
||||
|
||||
|
||||
// This delegate is called from within Geary.RFC822.Message.get_body while assembling the plain
|
||||
// or HTML document when a non-text MIME part is encountered within a multipart/mixed container.
|
||||
// If this returns null, the MIME part is dropped from the final returned document; otherwise,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue