aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustavo Noronha Silva <gustavo.noronha@collabora.com>2011-06-29 02:44:45 +0800
committerRodrigo Moya <rodrigo@gnome-db.org>2011-06-30 00:42:35 +0800
commitaa37f59cfff379a3ee43d846e22ffeea514202e4 (patch)
tree665013197b6c609d7e6af6c57d3c3d36b59cc8d5
parent3fccaf1eab5c9e6a5db758d0f8670c965f3f5505 (diff)
downloadgsoc2013-evolution-aa37f59cfff379a3ee43d846e22ffeea514202e4.tar.gz
gsoc2013-evolution-aa37f59cfff379a3ee43d846e22ffeea514202e4.tar.zst
gsoc2013-evolution-aa37f59cfff379a3ee43d846e22ffeea514202e4.zip
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.
-rw-r--r--capplet/settings/Makefile.am1
-rw-r--r--capplet/settings/mail-capplet-shell.c28
2 files changed, 28 insertions, 1 deletions
diff --git a/capplet/settings/Makefile.am b/capplet/settings/Makefile.am
index e6ea573c11..dd8c3c9a45 100644
--- a/capplet/settings/Makefile.am
+++ b/capplet/settings/Makefile.am
@@ -25,6 +25,7 @@ libevolution_mail_settings_la_CPPFLAGS = \
-DEVOLUTION_PRIVDATADIR=\""$(privdatadir)"\" \
-DEVOLUTION_ETSPECDIR=\""$(etspecdir)"\" \
-DEVOLUTION_ICONSDIR=\""$(imagesdir)"\" \
+ -DEVOLUTION_MODULEDIR=\""$(moduledir)"\" \
-DEVOLUTION_IMAGES=\""$(imagesdir)"\" \
-DEVOLUTION_GALVIEWSDIR=\""$(viewsdir)"\" \
-DEVOLUTION_BUTTONSDIR=\""$(buttonsdir)"\" \
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 <mail/mail-mt.h>
#include <mail/e-mail-store.h>
+#include <shell/e-shell.h>
+
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 ();