diff --git a/src/client/application/application-controller.vala b/src/client/application/application-controller.vala index 10de12e0..4893ca56 100644 --- a/src/client/application/application-controller.vala +++ b/src/client/application/application-controller.vala @@ -809,9 +809,10 @@ internal class Application.Controller : Geary.BaseObject { public async void delete_conversations(Geary.FolderSupport.Remove target, Gee.Collection conversations) throws GLib.Error { - yield delete_messages( - target, conversations, to_in_folder_email_ids(conversations) - ); + var messages = target.properties.is_virtual + ? to_all_email_ids(conversations) + : to_in_folder_email_ids(conversations); + yield delete_messages(target, conversations, messages); } public async void delete_messages(Geary.FolderSupport.Remove target, @@ -1586,6 +1587,18 @@ internal class Application.Controller : Geary.BaseObject { return messages; } + private Gee.Collection + to_all_email_ids(Gee.Collection conversations) { + Gee.Collection messages = + new Gee.LinkedList(); + foreach (Geary.App.Conversation conversation in conversations) { + foreach (Geary.Email email in conversation.get_emails(NONE)) { + messages.add(email.id); + } + } + return messages; + } + private void on_account_available(Geary.AccountInformation info) { Geary.Account? account = null; try {