aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2012-05-31 17:50:44 +0800
committerMilan Crha <mcrha@redhat.com>2012-05-31 17:50:44 +0800
commit93178424f2a5504adcec14f89d868f00bca60f38 (patch)
tree6ed68831bc63f961dc3a540b237bbfe67807d117
parent71924fc48776c642fe8520febc384250cf55973c (diff)
downloadgsoc2013-evolution-93178424f2a5504adcec14f89d868f00bca60f38.tar.gz
gsoc2013-evolution-93178424f2a5504adcec14f89d868f00bca60f38.tar.zst
gsoc2013-evolution-93178424f2a5504adcec14f89d868f00bca60f38.zip
Bug #673946 - Cannot delete search folders
-rw-r--r--libemail-engine/mail-vfolder.c7
-rw-r--r--mail/e-mail-reader-utils.c6
2 files changed, 7 insertions, 6 deletions
diff --git a/libemail-engine/mail-vfolder.c b/libemail-engine/mail-vfolder.c
index dd083fafb8..be60534719 100644
--- a/libemail-engine/mail-vfolder.c
+++ b/libemail-engine/mail-vfolder.c
@@ -895,17 +895,18 @@ store_folder_deleted_cb (CamelStore *store,
rule = e_rule_context_find_rule ((ERuleContext *) context, info->full_name, NULL);
if (rule) {
const gchar *config_dir;
+ EMailSession *session = E_MAIL_SESSION (camel_service_get_session (CAMEL_SERVICE (store)));
/* We need to stop listening to removed events,
* otherwise we'll try and remove it again. */
g_signal_handlers_disconnect_matched (
- context, G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
- 0, 0, NULL, context_rule_removed, context);
+ context, G_SIGNAL_MATCH_FUNC,
+ 0, 0, NULL, context_rule_removed, NULL);
e_rule_context_remove_rule ((ERuleContext *) context, rule);
g_object_unref (rule);
g_signal_connect (
context, "rule_removed",
- G_CALLBACK (context_rule_removed), context);
+ G_CALLBACK (context_rule_removed), session);
config_dir = mail_session_get_config_dir ();
user = g_build_filename (config_dir, "vfolders.xml", NULL);
diff --git a/mail/e-mail-reader-utils.c b/mail/e-mail-reader-utils.c
index 0a8e358938..6d3f6aafc5 100644
--- a/mail/e-mail-reader-utils.c
+++ b/mail/e-mail-reader-utils.c
@@ -198,13 +198,13 @@ e_mail_reader_delete_folder (EMailReader *reader,
EShell *shell;
EAlertSink *alert_sink;
CamelStore *parent_store;
+ CamelProvider *provider;
MailFolderCache *folder_cache;
GtkWindow *parent = e_shell_get_active_window (NULL);
GtkWidget *dialog;
gboolean store_is_local;
const gchar *display_name;
const gchar *full_name;
- const gchar *uid;
CamelFolderInfoFlags flags = 0;
gboolean have_flags;
@@ -214,9 +214,9 @@ e_mail_reader_delete_folder (EMailReader *reader,
full_name = camel_folder_get_full_name (folder);
display_name = camel_folder_get_display_name (folder);
parent_store = camel_folder_get_parent_store (folder);
+ provider = camel_service_get_provider (CAMEL_SERVICE (parent_store));
- uid = camel_service_get_uid (CAMEL_SERVICE (parent_store));
- store_is_local = (g_strcmp0 (uid, E_MAIL_SESSION_LOCAL_UID) == 0);
+ store_is_local = (provider->flags & CAMEL_PROVIDER_IS_LOCAL) != 0;
backend = e_mail_reader_get_backend (reader);
session = e_mail_backend_get_session (backend);