aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog9
-rw-r--r--mail/mail-folder-cache.c13
-rw-r--r--mail/mail-vfolder.c6
3 files changed, 12 insertions, 16 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index f882497878..f03b5760f7 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,12 @@
+2008-09-11 Milan Crha <mcrha@redhat.com>
+
+ ** Fix for bug #534039
+
+ * mail-vfolder.c: (vfolder_load_storage): Load store to mail component
+ first, to have all notifications registered in time of adding rules.
+ * mail-folder-cache.c: (real_flush_updates): Dropped unnecessary and
+ offending code causing infinite loops when deleting search folder.
+
2008-09-09 Milan Crha <mcrha@redhat.com>
** Fix for bug #493298
diff --git a/mail/mail-folder-cache.c b/mail/mail-folder-cache.c
index 63a8f2cf90..b610a8a2b5 100644
--- a/mail/mail-folder-cache.c
+++ b/mail/mail-folder-cache.c
@@ -206,19 +206,6 @@ real_flush_updates(void *o, void *event_data, void *data)
e_event_emit((EEvent *)e, "folder.changed", (EEventTarget *)t);
}
- if (CAMEL_IS_VEE_STORE (up->store) && !up->remove) {
- /* Normally the vfolder store takes care of the folder_opened event itself,
- but we add folder to the noting system later, thus we do not know about
- search folders to update them in a tree, thus ensure their changes will
- be tracked correctly. */
- CamelFolder *folder = camel_store_get_folder (up->store, up->full_name, 0, NULL);
-
- if (folder) {
- mail_note_folder (folder);
- camel_object_unref (folder);
- }
- }
-
free_update(up);
LOCK(info_lock);
diff --git a/mail/mail-vfolder.c b/mail/mail-vfolder.c
index d0d9997203..951bcc51e7 100644
--- a/mail/mail-vfolder.c
+++ b/mail/mail-vfolder.c
@@ -956,6 +956,9 @@ vfolder_load_storage(void)
g_signal_connect(context, "rule_added", G_CALLBACK(context_rule_added), context);
g_signal_connect(context, "rule_removed", G_CALLBACK(context_rule_removed), context);
+ /* load store to mail component */
+ mail_component_load_store_by_uri (mail_component_peek (), storeuri, _("Search Folders"));
+
/* and setup the rules we have */
rule = NULL;
while ( (rule = rule_context_next_rule((RuleContext *)context, rule, NULL)) ) {
@@ -966,9 +969,6 @@ vfolder_load_storage(void)
d(printf("invalid rule (%p) encountered: rule->name is NULL\n", rule));
}
- /* load store to mail component at the end, when everything is loaded */
- mail_component_load_store_by_uri (mail_component_peek (), storeuri, _("Search Folders"));
-
g_free(storeuri);
/* reenable the feature if required */