aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-callbacks.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/mail-callbacks.c')
-rw-r--r--mail/mail-callbacks.c29
1 files changed, 25 insertions, 4 deletions
diff --git a/mail/mail-callbacks.c b/mail/mail-callbacks.c
index fc5c0f892c..571470ba3c 100644
--- a/mail/mail-callbacks.c
+++ b/mail/mail-callbacks.c
@@ -3292,6 +3292,23 @@ manage_subscriptions (BonoboUIComponent *uih, void *user_data, const char *path)
/******************** End Subscription Dialog ***************************/
+static void
+local_configure_done(const char *uri, CamelFolder *folder, void *data)
+{
+ FolderBrowser *fb = data;
+
+ if (FOLDER_BROWSER_IS_DESTROYED (fb)) {
+ gtk_object_unref((GtkObject *)fb);
+ return;
+ }
+
+ if (folder == NULL)
+ folder = fb->folder;
+
+ message_list_set_folder(fb->message_list, folder, FALSE);
+ gtk_object_unref((GtkObject *)fb);
+}
+
void
configure_folder (BonoboUIComponent *uih, void *user_data, const char *path)
{
@@ -3300,10 +3317,14 @@ configure_folder (BonoboUIComponent *uih, void *user_data, const char *path)
if (FOLDER_BROWSER_IS_DESTROYED (fb))
return;
- if (fb->uri && strncmp (fb->uri, "vfolder:", 8) == 0) {
- vfolder_edit_rule (fb->uri);
- } else {
- mail_local_reconfigure_folder (fb);
+ if (fb->uri) {
+ if (strncmp (fb->uri, "vfolder:", 8) == 0) {
+ vfolder_edit_rule (fb->uri);
+ } else {
+ message_list_set_folder(fb->message_list, NULL, FALSE);
+ gtk_object_ref((GtkObject *)fb);
+ mail_local_reconfigure_folder(fb->uri, local_configure_done, fb);
+ }
}
}