[geary/mjog/invert-folder-class-hierarchy: 29/72] Plugin.EmailTemplates: Avoid reentrancy issues on folder use changed




commit 14d5794507b2564c30ec3aebdef7a04932a84764
Author: Michael Gratton <mike vee net>
Date:   Sun Feb 14 23:55:10 2021 +1100

    Plugin.EmailTemplates: Avoid reentrancy issues on folder use changed

 src/client/plugin/email-templates/email-templates.vala | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
---
diff --git a/src/client/plugin/email-templates/email-templates.vala 
b/src/client/plugin/email-templates/email-templates.vala
index b6ae6943b..576ea9e75 100644
--- a/src/client/plugin/email-templates/email-templates.vala
+++ b/src/client/plugin/email-templates/email-templates.vala
@@ -217,6 +217,9 @@ public class Plugin.EmailTemplates :
     private void unregister_folder(Folder target) {
         var info_bar = this.info_bars.get(target);
         if (info_bar != null) {
+            this.folders.remove_folder_info_bar(target, info_bar);
+            this.info_bars.unset(target);
+
             try {
                 this.folders.unregister_folder_used_as(target);
             } catch (GLib.Error err) {
@@ -226,8 +229,6 @@ public class Plugin.EmailTemplates :
                     err.message
                 );
             }
-            this.folders.remove_folder_info_bar(target, info_bar);
-            this.info_bars.unset(target);
         }
     }
 
@@ -323,7 +324,8 @@ public class Plugin.EmailTemplates :
     private void on_folders_type_changed(Gee.Collection<Folder> changed) {
         foreach (var folder in changed) {
             unregister_folder(folder);
-            if (folder.display_name in this.folder_names) {
+            if (folder.display_name in this.folder_names &&
+                folder.used_as == NONE) {
                 register_folder(folder);
             }
             update_folder(folder);


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