[geary/cherry-pick-abd6d2c0] Merge branch 'mjog/search-delete-broken' into 'mainline'



commit eadcbc9be7e5b9921a5bc68005f3efb8ca3adf4d
Author: Michael Gratton <mike vee net>
Date:   Sat Mar 14 01:20:53 2020 +0000

    Merge branch 'mjog/search-delete-broken' into 'mainline'
    
    Application.Controller: Fix deleting conversations from search
    
    See merge request GNOME/geary!427
    
    (cherry picked from commit abd6d2c040edd2dce44452d0581cdbe765b8b1a5)
    
    87e2255b Application.Controller: Fix deleting conversations from search

 src/client/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<Geary.App.Conversation> 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<Geary.EmailIdentifier>
+        to_all_email_ids(Gee.Collection<Geary.App.Conversation> conversations) {
+        Gee.Collection<Geary.EmailIdentifier> messages =
+            new Gee.LinkedList<Geary.EmailIdentifier>();
+        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 {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]