diff options
-rw-r--r-- | mail/ChangeLog | 9 | ||||
-rw-r--r-- | mail/mail-folder-cache.c | 13 | ||||
-rw-r--r-- | mail/mail-vfolder.c | 6 |
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 */ |