From aa37f59cfff379a3ee43d846e22ffeea514202e4 Mon Sep 17 00:00:00 2001 From: Gustavo Noronha Silva Date: Tue, 28 Jun 2011 15:44:45 -0300 Subject: Fix crash when adding account in express mode The settings library started using an EMailBackend object, but since it is abstract it can't be instantiated directly. So we use the EShell to get the mail backend for us instead, after loading the modules. --- capplet/settings/mail-capplet-shell.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'capplet/settings/mail-capplet-shell.c') diff --git a/capplet/settings/mail-capplet-shell.c b/capplet/settings/mail-capplet-shell.c index 5a70fad6d4..ebcb5cd355 100644 --- a/capplet/settings/mail-capplet-shell.c +++ b/capplet/settings/mail-capplet-shell.c @@ -43,6 +43,8 @@ #include #include +#include + enum { CTRL_W_PRESSED, CTRL_Q_PRESSED, @@ -202,6 +204,7 @@ mail_capplet_shell_construct (MailCappletShell *shell, gint socket_id, gboolean { MailCappletShellPrivate *priv = shell->priv; GtkStyle *style = gtk_widget_get_default_style (); + EShell *eshell; EMailSession *session; gchar *custom_dir; @@ -239,7 +242,30 @@ mail_capplet_shell_construct (MailCappletShell *shell, gint socket_id, gboolean camel_provider_init (); - shell->priv->backend = g_object_new (E_TYPE_MAIL_BACKEND, NULL); + eshell = e_shell_get_default (); + + if (eshell == NULL) { + GError *error = NULL; + + eshell = g_initable_new ( + E_TYPE_SHELL, NULL, &error, + "application-id", "org.gnome.Evolution", + "flags", 0, + "geometry", NULL, + "module-directory", EVOLUTION_MODULEDIR, + "meego-mode", FALSE, + "express-mode", FALSE, + "small-screen-mode", FALSE, + "online", FALSE, + NULL); + + if (error != NULL) + g_error ("%s", error->message); + + e_shell_load_modules (eshell); + } + + shell->priv->backend = E_MAIL_BACKEND (e_shell_get_backend_by_name (eshell, "mail")); session = e_mail_backend_get_session (shell->priv->backend); shell->view = mail_view_new (); -- cgit v1.2.3