[geary/cherry-pick-ffb3b8fb] Merge branch 'wip/366-remove-folders' into 'mainline'



commit 6cb54365341ac44be0b1f72120ba34baf8046c6d
Author: Michael Gratton <mike vee net>
Date:   Wed Jul 17 05:27:39 2019 +0000

    Merge branch 'wip/366-remove-folders' into 'mainline'
    
    Fix folders removed from the server never being removed
    
    See merge request GNOME/geary!255
    
    (cherry picked from commit ffb3b8fb7af20ee54106753a612313c892d52d95)
    
    9c8723ac Fix folders removed from the server never being removed

 src/client/application/geary-controller.vala            | 6 ++++--
 src/engine/imap-engine/imap-engine-generic-account.vala | 6 ++++--
 2 files changed, 8 insertions(+), 4 deletions(-)
---
diff --git a/src/client/application/geary-controller.vala b/src/client/application/geary-controller.vala
index 48f3d07a..d975a0b0 100644
--- a/src/client/application/geary-controller.vala
+++ b/src/client/application/geary-controller.vala
@@ -1479,8 +1479,8 @@ public class GearyController : Geary.BaseObject {
         if (unavailable != null) {
             Gee.BidirIterator<Geary.Folder> unavailable_iterator =
                 unavailable.bidir_iterator();
-            unavailable_iterator.last();
-            while (unavailable_iterator.previous()) {
+            bool has_prev = unavailable_iterator.last();
+            while (has_prev) {
                 Geary.Folder folder = unavailable_iterator.get();
 
                 main_window.folder_list.remove_folder(folder);
@@ -1507,6 +1507,8 @@ public class GearyController : Geary.BaseObject {
                 }
 
                 folder.special_folder_type_changed.disconnect(on_special_folder_type_changed);
+
+                has_prev = unavailable_iterator.previous();
             }
         }
     }
diff --git a/src/engine/imap-engine/imap-engine-generic-account.vala 
b/src/engine/imap-engine/imap-engine-generic-account.vala
index 51cb23e5..18609fd5 100644
--- a/src/engine/imap-engine/imap-engine-generic-account.vala
+++ b/src/engine/imap-engine/imap-engine-generic-account.vala
@@ -1319,8 +1319,8 @@ internal class Geary.ImapEngine.UpdateRemoteFolders : AccountOperation {
 
             Gee.BidirIterator<MinimalFolder> removed_iterator =
                 removed.bidir_iterator();
-            removed_iterator.last();
-            while (removed_iterator.previous()) {
+            bool has_prev = removed_iterator.last();
+            while (has_prev) {
                 MinimalFolder folder = removed_iterator.get();
 
                 try {
@@ -1329,6 +1329,8 @@ internal class Geary.ImapEngine.UpdateRemoteFolders : AccountOperation {
                 } catch (Error e) {
                     debug("Unable to locally delete removed folder %s: %s", folder.to_string(), e.message);
                 }
+
+                has_prev = removed_iterator.previous();
             }
 
             // Let the remote know as well


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