diff options
-rw-r--r-- | addressbook/gui/component/Makefile.am | 4 | ||||
-rw-r--r-- | addressbook/gui/component/eab-composer-util.c | 3 | ||||
-rw-r--r-- | calendar/gui/Makefile.am | 4 | ||||
-rw-r--r-- | calendar/gui/itip-utils.c | 3 | ||||
-rw-r--r-- | composer/e-composer-actions.c | 2 | ||||
-rw-r--r-- | composer/e-msg-composer.c | 22 | ||||
-rw-r--r-- | mail/e-mail-shell-module.c | 17 | ||||
-rw-r--r-- | mail/em-composer-utils.c | 234 | ||||
-rw-r--r-- | mail/em-composer-utils.h | 10 | ||||
-rw-r--r-- | plugins/external-editor/external-editor.c | 4 |
10 files changed, 151 insertions, 152 deletions
diff --git a/addressbook/gui/component/Makefile.am b/addressbook/gui/component/Makefile.am index c245592bea..ad603bf9b4 100644 --- a/addressbook/gui/component/Makefile.am +++ b/addressbook/gui/component/Makefile.am @@ -1,7 +1,3 @@ -if OS_WIN32 -WIN32_BOOTSTRAP_LIBS = $(top_builddir)/win32/libevolution-mail.la -endif - INCLUDES = \ -DG_LOG_DOMAIN=\"evolution-addressbook\" \ -I$(top_srcdir) \ diff --git a/addressbook/gui/component/eab-composer-util.c b/addressbook/gui/component/eab-composer-util.c index aa994df216..c69375a0b9 100644 --- a/addressbook/gui/component/eab-composer-util.c +++ b/addressbook/gui/component/eab-composer-util.c @@ -23,7 +23,6 @@ #include <libebook/e-contact.h> #include <libebook/e-destination.h> -#include "mail/em-composer-utils.h" #include "composer/e-msg-composer.h" #include "addressbook/util/eab-book-util.h" #include "addressbook/gui/widgets/eab-gui-util.h" @@ -46,7 +45,6 @@ eab_send_as_to (GList *destinations) composer = e_msg_composer_new (); table = e_msg_composer_get_header_table (composer); - em_composer_utils_setup_default_callbacks (composer); to_array = g_ptr_array_new (); bcc_array = g_ptr_array_new (); @@ -124,7 +122,6 @@ eab_send_as_attachment (GList *destinations) composer = e_msg_composer_new (); table = e_msg_composer_get_header_table (composer); - em_composer_utils_setup_default_callbacks (composer); attachment = camel_mime_part_new (); diff --git a/calendar/gui/Makefile.am b/calendar/gui/Makefile.am index 16f59136d1..a244f759e0 100644 --- a/calendar/gui/Makefile.am +++ b/calendar/gui/Makefile.am @@ -1,7 +1,3 @@ -if OS_WIN32 -WIN32_BOOTSTRAP_LIBS = $(top_builddir)/win32/libevolution-mail.la -endif - SUBDIRS = alarm-notify dialogs ecalendarincludedir = $(privincludedir)/calendar/gui diff --git a/calendar/gui/itip-utils.c b/calendar/gui/itip-utils.c index 3de75cf3d3..e879a9b440 100644 --- a/calendar/gui/itip-utils.c +++ b/calendar/gui/itip-utils.c @@ -37,7 +37,6 @@ #include <time.h> #include <composer/e-msg-composer.h> -#include <mail/em-composer-utils.h> #include <camel/camel-mime-filter-tohtml.h> static gchar *itip_methods[] = { @@ -1221,7 +1220,6 @@ itip_send_comp (ECalComponentItipMethod method, ECalComponent *send_comp, composer = e_msg_composer_new (); table = e_msg_composer_get_header_table (composer); - em_composer_utils_setup_default_callbacks (composer); e_composer_header_table_set_subject (table, subject); e_composer_header_table_set_account_name (table, from); @@ -1329,7 +1327,6 @@ reply_to_calendar_comp (ECalComponentItipMethod method, composer = e_msg_composer_new (); table = e_msg_composer_get_header_table (composer); - em_composer_utils_setup_default_callbacks (composer); e_composer_header_table_set_subject (table, subject); e_composer_header_table_set_account_name (table, from); diff --git a/composer/e-composer-actions.c b/composer/e-composer-actions.c index 1a04924338..ecf9f179f6 100644 --- a/composer/e-composer-actions.c +++ b/composer/e-composer-actions.c @@ -339,7 +339,7 @@ action_send_options_cb (GtkAction *action, static void action_new_message_cb (GtkAction *action, - EMsgComposer *composer) + EMsgComposer *composer) { em_utils_compose_new_message (NULL); } diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c index f930d102f2..1fb66a03dd 100644 --- a/composer/e-msg-composer.c +++ b/composer/e-msg-composer.c @@ -83,7 +83,6 @@ #include <camel/camel-smime-context.h> #endif -#include "mail/em-composer-utils.h" #include "mail/em-popup.h" #include "mail/em-utils.h" #include "mail/mail-config.h" @@ -1436,14 +1435,6 @@ autosave_load_draft (const gchar *filename) if (e_composer_autosave_snapshot (composer)) g_unlink (filename); - g_signal_connect ( - composer, "send", - G_CALLBACK (em_utils_composer_send_cb), NULL); - - g_signal_connect ( - composer, "save-draft", - G_CALLBACK (em_utils_composer_save_draft_cb), NULL); - gtk_widget_show (GTK_WIDGET (composer)); } @@ -2133,6 +2124,8 @@ msg_composer_constructor (GType type, G_OBJECT (shell_settings), "composer-magic-smileys", G_OBJECT (composer), "magic-smileys"); + e_shell_event (shell, "new-editor", object); + return object; } @@ -4671,17 +4664,8 @@ e_msg_composer_load_from_file (const gchar *filename) camel_object_unref (stream); composer = e_msg_composer_new_with_message (msg); - if (composer != NULL) { - g_signal_connect ( - composer, "send", - G_CALLBACK (em_utils_composer_send_cb), NULL); - - g_signal_connect ( - composer, "save-draft", - G_CALLBACK (em_utils_composer_save_draft_cb), NULL); - + if (composer != NULL) gtk_widget_show (GTK_WIDGET (composer)); - } return composer; } diff --git a/mail/e-mail-shell-module.c b/mail/e-mail-shell-module.c index 96d7a5ebbd..214c09bc28 100644 --- a/mail/e-mail-shell-module.c +++ b/mail/e-mail-shell-module.c @@ -554,6 +554,18 @@ exit: } static void +mail_shell_module_event_new_editor_cb (EShell *shell, + GtkWindow *editor, + EShellModule *shell_module) +{ + if (!E_IS_MSG_COMPOSER (editor)) + return; + + /* Integrate the new composer into the mail module. */ + em_configure_new_composer (E_MSG_COMPOSER (editor)); +} + +static void mail_shell_module_notify_online_mode_cb (EShell *shell, GParamSpec *pspec, EShellModule *shell_module) @@ -831,6 +843,11 @@ e_shell_module_init (GTypeModule *type_module) folder_tree_model = em_folder_tree_model_new (shell_module); g_signal_connect ( + shell, "event::new-editor", + G_CALLBACK (mail_shell_module_event_new_editor_cb), + shell_module); + + g_signal_connect ( shell, "notify::online-mode", G_CALLBACK (mail_shell_module_notify_online_mode_cb), shell_module); diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 09f5419101..a7b982386e 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -73,6 +73,9 @@ static EAccount * guess_account (CamelMimeMessage *message, CamelFolder *folder); +static void em_utils_composer_send_cb (EMsgComposer *composer); +static void em_utils_composer_save_draft_cb (EMsgComposer *composer); + struct emcs_t { unsigned int ref_count; @@ -89,28 +92,67 @@ emcs_new (void) { struct emcs_t *emcs; - emcs = g_new (struct emcs_t, 1); + emcs = g_new0 (struct emcs_t, 1); emcs->ref_count = 1; - emcs->drafts_folder = NULL; - emcs->drafts_uid = NULL; - emcs->folder = NULL; - emcs->flags = 0; - emcs->set = 0; - emcs->uid = NULL; return emcs; } static void +emcs_set_drafts_info (struct emcs_t *emcs, + CamelFolder *drafts_folder, + const gchar *drafts_uid) +{ + g_return_if_fail (emcs != NULL); + g_return_if_fail (drafts_folder != NULL); + g_return_if_fail (drafts_uid != NULL); + + if (emcs->drafts_folder != NULL) + camel_object_unref (emcs->drafts_folder); + g_free (emcs->drafts_uid); + + camel_object_ref (drafts_folder); + emcs->drafts_folder = drafts_folder; + emcs->drafts_uid = g_strdup (drafts_uid); + + g_debug ("%s", G_STRFUNC); +} + +static void +emcs_set_folder_info (struct emcs_t *emcs, + CamelFolder *folder, + const gchar *uid, + guint32 flags, + guint32 set) +{ + g_return_if_fail (emcs != NULL); + g_return_if_fail (folder != NULL); + g_return_if_fail (uid != NULL); + + if (emcs->folder != NULL) + camel_object_unref (emcs->folder); + g_free (emcs->uid); + + camel_object_ref (folder); + emcs->folder = folder; + emcs->uid = g_strdup (uid); + emcs->flags = flags; + emcs->set = set; + + g_debug ("%s", G_STRFUNC); +} + +static void free_emcs (struct emcs_t *emcs) { - if (emcs->drafts_folder) + if (emcs->drafts_folder != NULL) camel_object_unref (emcs->drafts_folder); g_free (emcs->drafts_uid); - if (emcs->folder) + if (emcs->folder != NULL) camel_object_unref (emcs->folder); g_free (emcs->uid); + g_free (emcs); } @@ -128,12 +170,6 @@ emcs_unref (struct emcs_t *emcs) free_emcs (emcs); } -static void -composer_destroy_cb (gpointer user_data, GObject *deadbeef) -{ - emcs_unref (user_data); -} - static gboolean ask_confirm_for_unwanted_html_mail (EMsgComposer *composer, EDestination **recipients) { @@ -227,17 +263,6 @@ composer_send_queued_cb (CamelFolder *folder, CamelMimeMessage *msg, CamelMessag mail_send (); } } else { - if (!emcs) { - /* disconnect the previous signal handlers */ - g_signal_handlers_disconnect_matched (send->composer, G_SIGNAL_MATCH_FUNC, 0, - 0, NULL, em_utils_composer_send_cb, NULL); - g_signal_handlers_disconnect_matched (send->composer, G_SIGNAL_MATCH_FUNC, 0, - 0, NULL, em_utils_composer_save_draft_cb, NULL); - - /* reconnect to the signals using a non-NULL emcs for the callback data */ - em_composer_utils_setup_default_callbacks (send->composer); - } - e_msg_composer_set_enable_autosave (send->composer, TRUE); gtk_widget_show (GTK_WIDGET (send->composer)); } @@ -417,8 +442,8 @@ composer_get_message (EMsgComposer *composer, gboolean save_html_object_data) return message; } -void -em_utils_composer_send_cb (EMsgComposer *composer, gpointer user_data) +static void +em_utils_composer_send_cb (EMsgComposer *composer) { EComposerHeaderTable *table; CamelMimeMessage *message; @@ -430,11 +455,13 @@ em_utils_composer_send_cb (EMsgComposer *composer, gpointer user_data) table = e_msg_composer_get_header_table (composer); account = e_composer_header_table_get_account (table); if (!account || !account->enabled) { - e_error_run((GtkWindow *)composer, "mail:send-no-account-enabled", NULL); + e_error_run ( + GTK_WINDOW (composer), + "mail:send-no-account-enabled", NULL); return; } - if (!(message = composer_get_message (composer, FALSE))) + if ((message = composer_get_message (composer, FALSE)) == NULL) return; mail_folder = e_mail_shell_module_get_folder ( @@ -442,21 +469,22 @@ em_utils_composer_send_cb (EMsgComposer *composer, gpointer user_data) camel_object_ref (mail_folder); /* mail the message */ - info = camel_message_info_new(NULL); - camel_message_info_set_flags(info, CAMEL_MESSAGE_SEEN, ~0); + info = camel_message_info_new (NULL); + camel_message_info_set_flags (info, CAMEL_MESSAGE_SEEN, ~0); send = g_malloc (sizeof (*send)); - send->emcs = user_data; + send->emcs = g_object_get_data (G_OBJECT (composer), "emcs"); if (send->emcs) emcs_ref (send->emcs); send->send = TRUE; - send->composer = composer; - g_object_ref (composer); + send->composer = g_object_ref (composer); gtk_widget_hide (GTK_WIDGET (composer)); e_msg_composer_set_enable_autosave (composer, FALSE); - mail_append_mail (mail_folder, message, info, composer_send_queued_cb, send); + mail_append_mail ( + mail_folder, message, info, composer_send_queued_cb, send); + camel_object_unref (mail_folder); camel_object_unref (message); } @@ -495,17 +523,9 @@ save_draft_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *i composer_set_no_change (sdi->composer, FALSE); - if ((emcs = sdi->emcs) == NULL) { + if ((emcs = sdi->emcs) == NULL) emcs = emcs_new (); - /* disconnect the previous signal handlers */ - g_signal_handlers_disconnect_by_func (sdi->composer, G_CALLBACK (em_utils_composer_send_cb), NULL); - g_signal_handlers_disconnect_by_func (sdi->composer, G_CALLBACK (em_utils_composer_save_draft_cb), NULL); - - /* reconnect to the signals using a non-NULL emcs for the callback data */ - em_composer_utils_setup_default_callbacks (sdi->composer); - } - if (emcs->drafts_folder) { /* delete the original draft message */ camel_folder_set_message_flags (emcs->drafts_folder, emcs->drafts_uid, @@ -557,8 +577,8 @@ save_draft_folder (char *uri, CamelFolder *folder, gpointer data) } } -void -em_utils_composer_save_draft_cb (EMsgComposer *composer, gpointer user_data) +static void +em_utils_composer_save_draft_cb (EMsgComposer *composer) { CamelFolder *local_drafts_folder; EComposerHeaderTable *table; @@ -579,16 +599,16 @@ em_utils_composer_save_draft_cb (EMsgComposer *composer, gpointer user_data) local_drafts_folder_uri = e_mail_shell_module_get_folder_uri ( mail_shell_module, E_MAIL_FOLDER_DRAFTS); - g_object_ref(composer); + g_object_ref (composer); msg = e_msg_composer_get_message_draft (composer); table = e_msg_composer_get_header_table (composer); account = e_composer_header_table_get_account (table); - sdi = g_malloc(sizeof(struct _save_draft_info)); + sdi = g_malloc (sizeof(struct _save_draft_info)); sdi->composer = composer; - sdi->emcs = user_data; + sdi->emcs = g_object_get_data (G_OBJECT (composer), "emcs"); if (sdi->emcs) - emcs_ref(sdi->emcs); + emcs_ref (sdi->emcs); if (account && account->drafts_folder_uri && strcmp (account->drafts_folder_uri, local_drafts_folder_uri) != 0) { @@ -623,43 +643,10 @@ em_utils_composer_save_draft_cb (EMsgComposer *composer, gpointer user_data) camel_object_unref (msg); } -void -em_composer_utils_setup_callbacks (EMsgComposer *composer, - CamelFolder *folder, - const char *uid, - guint32 flags, - guint32 set, - CamelFolder *drafts, - const char *drafts_uid) -{ - struct emcs_t *emcs; - - emcs = emcs_new (); - - if (folder && uid) { - camel_object_ref (folder); - emcs->folder = folder; - emcs->uid = g_strdup (uid); - emcs->flags = flags; - emcs->set = set; - } - - if (drafts && drafts_uid) { - camel_object_ref (drafts); - emcs->drafts_folder = drafts; - emcs->drafts_uid = g_strdup (drafts_uid); - } - - g_signal_connect (composer, "send", G_CALLBACK (em_utils_composer_send_cb), emcs); - g_signal_connect (composer, "save-draft", G_CALLBACK (em_utils_composer_save_draft_cb), emcs); - - g_object_weak_ref ((GObject *) composer, (GWeakNotify) composer_destroy_cb, emcs); -} - /* Composing messages... */ static EMsgComposer * -create_new_composer (const char *subject, const char *fromuri, gboolean use_default_callbacks) +create_new_composer (const char *subject, const char *fromuri) { EMsgComposer *composer; EComposerHeaderTable *table; @@ -670,15 +657,12 @@ create_new_composer (const char *subject, const char *fromuri, gboolean use_defa return NULL; if (fromuri) - account = mail_config_get_account_by_source_url(fromuri); + account = mail_config_get_account_by_source_url (fromuri); table = e_msg_composer_get_header_table (composer); e_composer_header_table_set_account (table, account); e_composer_header_table_set_subject (table, subject); - if (use_default_callbacks) - em_composer_utils_setup_default_callbacks (composer); - return composer; } @@ -693,7 +677,7 @@ em_utils_compose_new_message (const char *fromuri) { GtkWidget *composer; - composer = (GtkWidget *) create_new_composer ("", fromuri, TRUE); + composer = (GtkWidget *) create_new_composer ("", fromuri); if (composer == NULL) return; @@ -723,7 +707,6 @@ em_utils_compose_new_message_with_mailto (const char *url, const char *fromuri) composer = e_msg_composer_new (); table = e_msg_composer_get_header_table (composer); - em_composer_utils_setup_default_callbacks (composer); if (fromuri && (account = mail_config_get_account_by_source_url(fromuri))) @@ -771,8 +754,6 @@ em_utils_post_to_folder (CamelFolder *folder) table, account->name); } - em_composer_utils_setup_default_callbacks (composer); - composer_set_no_change (composer, TRUE); gtk_widget_show ((GtkWidget *) composer); @@ -804,8 +785,6 @@ em_utils_post_to_url (const char *url) g_list_free (list); } - em_composer_utils_setup_default_callbacks (composer); - composer_set_no_change (composer, TRUE); gtk_widget_show ((GtkWidget *) composer); @@ -953,10 +932,12 @@ edit_message (CamelMimeMessage *message, CamelFolder *drafts, const char *uid) composer = e_msg_composer_new_with_message (message); - if (em_utils_folder_is_templates(drafts, NULL) == TRUE) - em_composer_utils_setup_callbacks (composer, NULL, NULL, 0, 0, NULL, NULL); - else - em_composer_utils_setup_callbacks (composer, NULL, NULL, 0, 0, drafts, uid); + if (em_utils_folder_is_drafts (drafts, NULL)) { + struct emcs_t *emcs; + + emcs = g_object_get_data (G_OBJECT (composer), "emcs"); + emcs_set_drafts_info (emcs, drafts, uid); + } composer_set_no_change (composer, TRUE); @@ -1079,7 +1060,7 @@ forward_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, Cam { EMsgComposer *composer; - composer = create_new_composer (subject, fromuri, TRUE); + composer = create_new_composer (subject, fromuri); if (composer == NULL) return; @@ -1158,7 +1139,7 @@ forward_non_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, text = em_utils_message_to_html (message, _("-------- Forwarded Message --------"), flags, &len, NULL, NULL); if (text) { - composer = create_new_composer (subject, fromuri, !uids || !uids->pdata [i]); + composer = create_new_composer (subject, fromuri); if (composer) { if (CAMEL_IS_MULTIPART(camel_medium_get_content_object((CamelMedium *)message))) @@ -1166,8 +1147,12 @@ forward_non_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, e_msg_composer_set_body_text (composer, text, len); - if (uids && uids->pdata[i]) - em_composer_utils_setup_callbacks (composer, folder, uids->pdata[i], CAMEL_MESSAGE_FORWARDED, CAMEL_MESSAGE_FORWARDED, NULL, NULL); + if (uids && uids->pdata[i]) { + struct emcs_t *emcs; + + emcs = g_object_get_data (G_OBJECT (composer), "emcs"); + emcs_set_folder_info (emcs, folder, uids->pdata[i], CAMEL_MESSAGE_FORWARDED, CAMEL_MESSAGE_FORWARDED); + } composer_set_no_change (composer, TRUE); @@ -1323,8 +1308,6 @@ redirect_get_composer (CamelMimeMessage *message) composer = e_msg_composer_new_redirect (message, account ? account->name : NULL); - em_composer_utils_setup_default_callbacks (composer); - return composer; } @@ -2236,6 +2219,7 @@ em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage guint32 flags; EMEvent *eme; EMEventTargetMessage *target; + struct emcs_t *emcs; if (folder && uid && message == NULL) { struct _reply_data *rd = g_malloc0(sizeof(*rd)); @@ -2300,7 +2284,8 @@ em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage composer_set_body (composer, message, source); - em_composer_utils_setup_callbacks (composer, folder, uid, flags, flags, NULL, NULL); + emcs = g_object_get_data (G_OBJECT (composer), "emcs"); + emcs_set_folder_info (emcs, folder, uid, flags, flags); composer_set_no_change (composer, TRUE); @@ -2324,6 +2309,7 @@ post_reply_to_message (CamelFolder *folder, const char *uid, CamelMimeMessage *m char *real_uid; guint32 flags; GList *list = NULL; + struct emcs_t *emcs; if (message == NULL) return; @@ -2399,7 +2385,8 @@ post_reply_to_message (CamelFolder *folder, const char *uid, CamelMimeMessage *m composer_set_body (composer, message, NULL); - em_composer_utils_setup_callbacks (composer, real_folder, real_uid, flags, flags, NULL, NULL); + emcs = g_object_get_data (G_OBJECT (composer), "emcs"); + emcs_set_folder_info (emcs, real_folder, real_uid, flags, flags); composer_set_no_change (composer, TRUE); @@ -2427,3 +2414,36 @@ em_utils_post_reply_to_message_by_uid (CamelFolder *folder, const char *uid) mail_get_message (folder, uid, post_reply_to_message, NULL, mail_msg_unordered_push); } + +/** + * em_configure_new_composer: + * @composer: a newly created #EMsgComposer + * + * Integrates a newly created #EMsgComposer into the mail module. The + * composer can't link directly to the mail module without introducing + * circular library dependencies, so this function finishes configuring + * things the #EMsgComposer instance can't do itself. + **/ +void +em_configure_new_composer (EMsgComposer *composer) +{ + struct emcs_t *emcs; + + g_return_if_fail (E_IS_MSG_COMPOSER (composer)); + + emcs = emcs_new (); + + g_object_set_data_full ( + G_OBJECT (composer), "emcs", emcs, + (GDestroyNotify) emcs_unref); + + g_signal_connect ( + composer, "send", + G_CALLBACK (em_utils_composer_send_cb), NULL); + + g_signal_connect ( + composer, "save-draft", + G_CALLBACK (em_utils_composer_save_draft_cb), NULL); + + g_debug ("Composer configured."); +} diff --git a/mail/em-composer-utils.h b/mail/em-composer-utils.h index 68bfd1b0bc..f943408605 100644 --- a/mail/em-composer-utils.h +++ b/mail/em-composer-utils.h @@ -37,14 +37,6 @@ struct _EMsgComposer; struct _EMFormat; struct _EAccount; -void em_composer_utils_setup_callbacks (struct _EMsgComposer *composer, struct _CamelFolder *folder, const char *uid, - guint32 flags, guint32 set, struct _CamelFolder *drafts, const char *drafts_uid); - -#define em_composer_utils_setup_default_callbacks(composer) em_composer_utils_setup_callbacks (composer, NULL, NULL, 0, 0, NULL, NULL) - -void em_utils_composer_send_cb(struct _EMsgComposer *composer, gpointer user_data); -void em_utils_composer_save_draft_cb(struct _EMsgComposer *composer, gpointer user_data); - void em_utils_compose_new_message (const char *fromuri); /* FIXME: mailto? url? should make up its mind what its called. imho use 'uri' */ @@ -78,6 +70,8 @@ void em_utils_reply_to_message (struct _CamelFolder *, const char *uid, struct _ void em_utils_post_reply_to_message_by_uid (struct _CamelFolder *folder, const char *uid); +void em_configure_new_composer (struct _EMsgComposer *composer); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/plugins/external-editor/external-editor.c b/plugins/external-editor/external-editor.c index ecccbf8740..6f5b520465 100644 --- a/plugins/external-editor/external-editor.c +++ b/plugins/external-editor/external-editor.c @@ -198,9 +198,7 @@ async_external_editor (GArray *array) */ composer = e_msg_composer_new_with_message (message); - g_signal_connect (GTK_OBJECT (composer), "send", G_CALLBACK (em_utils_composer_send_cb), NULL); - g_signal_connect (GTK_OBJECT (composer), "save-draft", G_CALLBACK (em_utils_composer_save_draft_cb), NULL); - + /* Composer cannot be shown in any random thread. Should happen in main thread */ g_idle_add ((GSourceFunc) show_composer_dialog, composer); |