From ba348cbed126b4b636339d1317ad6a1e908a37b7 Mon Sep 17 00:00:00 2001 From: Bharath Acharya Date: Mon, 7 Feb 2011 10:05:22 +0530 Subject: Bug #641451 - Crash in folder_selection_button_new Crash when importing any pst file. --- plugins/dbx-import/dbx-importer.c | 16 +++++++++++----- plugins/pst-import/pst-importer.c | 14 +++++++++----- 2 files changed, 20 insertions(+), 10 deletions(-) (limited to 'plugins') diff --git a/plugins/dbx-import/dbx-importer.c b/plugins/dbx-import/dbx-importer.c index 0105dfe236..c7d1e6cb92 100644 --- a/plugins/dbx-import/dbx-importer.c +++ b/plugins/dbx-import/dbx-importer.c @@ -67,6 +67,7 @@ #include #include +#include #include #include #include @@ -90,10 +91,6 @@ gint e_plugin_lib_enable (EPlugin *ep, gint enable); so declare the functions here TODO: sort out whether this should really be private */ -typedef struct _EMFolderSelectionButton EMFolderSelectionButton; -GtkWidget *em_folder_selection_button_new (const gchar *title, const gchar *caption); -void em_folder_selection_button_set_selection (EMFolderSelectionButton *button, const gchar *uri); -const gchar *em_folder_selection_button_get_selection (EMFolderSelectionButton *button); typedef struct { MailMsg base; @@ -189,6 +186,9 @@ folder_selected (EMFolderSelectionButton *button, EImportTargetURI *target) GtkWidget * org_gnome_evolution_readdbx_getwidget (EImport *ei, EImportTarget *target, EImportImporter *im) { + EShell *shell; + EShellBackend *shell_backend; + EMailSession *session; GtkWidget *hbox, *w; GtkLabel *label; gchar *select_uri = NULL; @@ -229,8 +229,14 @@ org_gnome_evolution_readdbx_getwidget (EImport *ei, EImportTarget *target, EImpo label = GTK_LABEL (w); + shell = e_shell_get_default (); + shell_backend = e_shell_get_backend_by_name (shell, "mail"); + session = e_mail_backend_get_session (E_MAIL_BACKEND (shell_backend)); + w = em_folder_selection_button_new ( - _("Select folder"), _("Select folder to import OE folder into")); + session, _("Select folder"), + _("Select folder to import into")); + gtk_label_set_mnemonic_widget (label, w); em_folder_selection_button_set_selection ((EMFolderSelectionButton *)w, select_uri); folder_selected ((EMFolderSelectionButton *)w, (EImportTargetURI *)target); diff --git a/plugins/pst-import/pst-importer.c b/plugins/pst-import/pst-importer.c index d0a69ddece..40cd745bbf 100644 --- a/plugins/pst-import/pst-importer.c +++ b/plugins/pst-import/pst-importer.c @@ -54,6 +54,7 @@ #include #include +#include #include #include #include @@ -100,10 +101,6 @@ gint e_plugin_lib_enable (EPlugin *ep, gint enable); so declare the functions here TODO: sort out whether this should really be private */ -typedef struct _EMFolderSelectionButton EMFolderSelectionButton; -GtkWidget *em_folder_selection_button_new (const gchar *title, const gchar *caption); -void em_folder_selection_button_set_selection (EMFolderSelectionButton *button, const gchar *uri); -const gchar *em_folder_selection_button_get_selection (EMFolderSelectionButton *button); static guchar pst_signature[] = { '!', 'B', 'D', 'N' }; @@ -295,6 +292,9 @@ get_suggested_foldername (EImportTargetURI *target) GtkWidget * org_credativ_evolution_readpst_getwidget (EImport *ei, EImportTarget *target, EImportImporter *im) { + EShell *shell; + EShellBackend *shell_backend; + EMailSession *session; GtkWidget *hbox, *framebox, *w; gchar *foldername; @@ -313,7 +313,11 @@ org_credativ_evolution_readpst_getwidget (EImport *ei, EImportTarget *target, EI g_signal_connect (w, "toggled", G_CALLBACK (checkbox_mail_toggle_cb), target); gtk_box_pack_start ((GtkBox *) hbox, w, FALSE, FALSE, 0); - w = em_folder_selection_button_new (_("Select folder"), _("Select folder to import into")); + shell = e_shell_get_default (); + shell_backend = e_shell_get_backend_by_name (shell, "mail"); + session = e_mail_backend_get_session (E_MAIL_BACKEND (shell_backend)); + + w = em_folder_selection_button_new (session, _("Select folder"), _("Select folder to import into")); foldername = get_suggested_foldername ((EImportTargetURI *) target); ((EImportTargetURI *) target)->uri_dest = g_strdup (foldername); em_folder_selection_button_set_selection ((EMFolderSelectionButton *) w, foldername); -- cgit