From 87e2255bb3690e248b1fbf75db2c227e2eb02b31 Mon Sep 17 00:00:00 2001 From: Michael Gratton Date: Fri, 13 Mar 2020 15:57:20 +1100 Subject: [PATCH] Application.Controller: Fix deleting conversations from search When deleteing messages from the search folder, all most be removed (not just in-folder) since none of the messages will be in-folder. --- .../application/application-controller.vala | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) 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 {