diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2009-07-28 10:31:47 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2009-07-28 23:24:49 +0800 |
commit | 2c4510e858fcf96e8f3d02f3f92564460752e983 (patch) | |
tree | 777c673d5fdaf649fb1c9eabd9357eac622b15f6 /mail | |
parent | 3fe8269156da1b57b0fc7391f5cf07cab6f61606 (diff) | |
parent | 067ef5580fc287809958d4503691bfcba2b29ee5 (diff) | |
download | gsoc2013-evolution-2c4510e858fcf96e8f3d02f3f92564460752e983.tar.gz gsoc2013-evolution-2c4510e858fcf96e8f3d02f3f92564460752e983.tar.zst gsoc2013-evolution-2c4510e858fcf96e8f3d02f3f92564460752e983.zip |
Merge commit 'EVOLUTION_2_27_5' into kill-bonobo
Diffstat (limited to 'mail')
-rw-r--r-- | mail/e-mail-reader.c | 2 | ||||
-rw-r--r-- | mail/em-account-editor.c | 7 | ||||
-rw-r--r-- | mail/em-account-editor.h | 2 | ||||
-rw-r--r-- | mail/em-composer-utils.c | 35 | ||||
-rw-r--r-- | mail/em-composer-utils.h | 2 | ||||
-rw-r--r-- | mail/em-event.c | 7 | ||||
-rw-r--r-- | mail/em-event.h | 7 | ||||
-rw-r--r-- | mail/em-folder-browser.c | 29 | ||||
-rw-r--r-- | mail/em-folder-view.c | 2 | ||||
-rw-r--r-- | mail/em-format-html-print.c | 6 | ||||
-rw-r--r-- | mail/em-sync-stream.c | 9 | ||||
-rw-r--r-- | mail/em-sync-stream.h | 1 | ||||
-rw-r--r-- | mail/mail-component.c | 5 | ||||
-rw-r--r-- | mail/mail-component.h | 1 | ||||
-rw-r--r-- | mail/mail-mt.c | 3 | ||||
-rw-r--r-- | mail/mail-send-recv.c | 10 | ||||
-rw-r--r-- | mail/mail-send-recv.h | 2 | ||||
-rw-r--r-- | mail/message-list.c | 2 |
18 files changed, 84 insertions, 48 deletions
diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c index 0e20dbb043..0362cb110a 100644 --- a/mail/e-mail-reader.c +++ b/mail/e-mail-reader.c @@ -1722,7 +1722,7 @@ mail_reader_message_loaded_cb (CamelFolder *folder, */ event = em_event_peek (); target = em_event_target_new_message ( - event, folder, message, message_uid, 0); + event, folder, message, message_uid, 0, NULL); e_event_emit ( (EEvent *) event, "message.reading", (EEventTarget *) target); diff --git a/mail/em-account-editor.c b/mail/em-account-editor.c index 6c674465fe..6c55a659f8 100644 --- a/mail/em-account-editor.c +++ b/mail/em-account-editor.c @@ -227,7 +227,8 @@ emae_set_original_account (EMAccountEditor *emae, g_free (xml); g_object_ref (original_account); - emae->do_signature = TRUE; + if (emae->type != EMAE_PAGES) + emae->do_signature = TRUE; /* Creating a new account. */ } else { @@ -3227,10 +3228,10 @@ emae_check_complete (EConfig *ec, const gchar *pageid, gpointer data) return ok; } -void +gboolean em_account_editor_check (EMAccountEditor *emae, const gchar *page) { - emae_check_complete ((EConfig *)emae->config, page, emae); + return emae_check_complete ((EConfig *)emae->config, page, emae); } /* HACK: FIXME: the component should listen to the account object directly */ diff --git a/mail/em-account-editor.h b/mail/em-account-editor.h index 0c2f5e38aa..b8913e2a83 100644 --- a/mail/em-account-editor.h +++ b/mail/em-account-editor.h @@ -92,7 +92,7 @@ EAccount * em_account_editor_get_modified_account EAccount * em_account_editor_get_original_account (EMAccountEditor *emae); void em_account_editor_commit (EMAccountEditor *emae); -void em_account_editor_check (EMAccountEditor *emae, +gboolean em_account_editor_check (EMAccountEditor *emae, const gchar *page); gboolean em_account_editor_save (EMAccountEditor *emae); void em_account_editor_destroy (EMAccountEditor *emae); diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 8370496c19..818654df14 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -712,7 +712,7 @@ em_utils_compose_new_message (const gchar *fromuri) * Opens a new composer window as a child window of @parent's toplevel * window. **/ -struct _EMsgComposer * +EMsgComposer * em_utils_compose_lite_new_message (const gchar *fromuri) { GtkWidget *composer; @@ -723,7 +723,7 @@ em_utils_compose_lite_new_message (const gchar *fromuri) composer_set_no_change (E_MSG_COMPOSER (composer), TRUE, TRUE); - return (struct _EMsgComposer *)composer; + return E_MSG_COMPOSER (composer); } /** @@ -1033,14 +1033,14 @@ setup_forward_attached_callbacks (EMsgComposer *composer, CamelFolder *folder, G g_object_weak_ref ((GObject *) composer, (GWeakNotify) composer_destroy_fad_cb, fad); } -static void +static EMsgComposer * forward_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, CamelMimePart *part, gchar *subject, const gchar *fromuri) { EMsgComposer *composer; composer = create_new_composer (subject, fromuri, FALSE); if (composer == NULL) - return; + return NULL; e_msg_composer_attach (composer, part); @@ -1049,7 +1049,10 @@ forward_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, Cam composer_set_no_change (composer, TRUE, FALSE); - gtk_widget_show (GTK_WIDGET (composer)); + if (!e_msg_composer_get_lite()) + gtk_widget_show (GTK_WIDGET (composer)); + + return composer; } static void @@ -1199,7 +1202,7 @@ em_utils_forward_quoted (CamelFolder *folder, GPtrArray *uids, const gchar *from * * Forwards a message in the user's configured default style. **/ -void +EMsgComposer * em_utils_forward_message (CamelMimeMessage *message, const gchar *fromuri) { GPtrArray *messages; @@ -1207,7 +1210,7 @@ em_utils_forward_message (CamelMimeMessage *message, const gchar *fromuri) GConfClient *gconf; gchar *subject; gint mode; - + EMsgComposer *composer = NULL; messages = g_ptr_array_new (); g_ptr_array_add (messages, message); @@ -1221,7 +1224,7 @@ em_utils_forward_message (CamelMimeMessage *message, const gchar *fromuri) subject = mail_tool_generate_forward_subject (message); - forward_attached (NULL, NULL, messages, part, subject, fromuri); + composer = forward_attached (NULL, NULL, messages, part, subject, fromuri); camel_object_unref (part); g_free (subject); break; @@ -1234,6 +1237,8 @@ em_utils_forward_message (CamelMimeMessage *message, const gchar *fromuri) } g_ptr_array_free (messages, TRUE); + + return composer; } /** @@ -2311,7 +2316,7 @@ reply_to_message(CamelFolder *folder, const gchar *uid, CamelMimeMessage *messag * may be supplied in order to update the message flags once it has * been replied to. **/ -struct _EMsgComposer * +EMsgComposer * em_utils_reply_to_message(CamelFolder *folder, const gchar *uid, CamelMimeMessage *message, gint mode, EMFormat *source) { CamelInternetAddress *to, *cc; @@ -2337,18 +2342,6 @@ em_utils_reply_to_message(CamelFolder *folder, const gchar *uid, CamelMimeMessag g_return_val_if_fail(message != NULL, NULL); - /** @Event: message.replying - * @Title: Message being replied to - * @Target: EMEventTargetMessage - * - * message.replying is emitted when a user starts replying to a message. - */ - - eme = em_event_peek(); - target = em_event_target_new_message(eme, folder, message, uid, - mode == REPLY_MODE_ALL ? EM_EVENT_MESSAGE_REPLY_ALL : 0); - e_event_emit((EEvent *)eme, "message.replying", (EEventTarget *)target); - to = camel_internet_address_new(); cc = camel_internet_address_new(); diff --git a/mail/em-composer-utils.h b/mail/em-composer-utils.h index 763de3301c..be29a7ae71 100644 --- a/mail/em-composer-utils.h +++ b/mail/em-composer-utils.h @@ -45,7 +45,7 @@ void em_utils_forward_attached (CamelFolder *folder, GPtrArray *uids, const gcha void em_utils_forward_inline (CamelFolder *folder, GPtrArray *uids, const gchar *fromuri); void em_utils_forward_quoted (CamelFolder *folder, GPtrArray *uids, const gchar *fromuri); -void em_utils_forward_message (CamelMimeMessage *msg, const gchar *fromuri); +struct _EMsgComposer * em_utils_forward_message (CamelMimeMessage *msg, const gchar *fromuri); void em_utils_forward_messages (CamelFolder *folder, GPtrArray *uids, const gchar *fromuri); void em_utils_redirect_message (CamelMimeMessage *message); diff --git a/mail/em-event.c b/mail/em-event.c index 5bc03ac875..2cdbb23125 100644 --- a/mail/em-event.c +++ b/mail/em-event.c @@ -76,6 +76,8 @@ eme_target_free(EEvent *ep, EEventTarget *t) if (s->message) camel_object_unref(s->message); g_free(s->uid); + if (s->composer) + g_object_unref (s->composer); break; } case EM_EVENT_TARGET_COMPOSER : { EMEventTargetComposer *s = (EMEventTargetComposer *)t; @@ -159,7 +161,7 @@ em_event_target_new_composer (EMEvent *eme, const EMsgComposer *composer, guint3 } EMEventTargetMessage * -em_event_target_new_message(EMEvent *eme, CamelFolder *folder, CamelMimeMessage *message, const gchar *uid, guint32 flags) +em_event_target_new_message(EMEvent *eme, CamelFolder *folder, CamelMimeMessage *message, const gchar *uid, guint32 flags, EMsgComposer *composer) { EMEventTargetMessage *t = e_event_target_new(&eme->popup, EM_EVENT_TARGET_MESSAGE, sizeof(*t)); @@ -171,6 +173,8 @@ em_event_target_new_message(EMEvent *eme, CamelFolder *folder, CamelMimeMessage if (message) camel_object_ref(message); t->target.mask = ~flags; + if (composer) + t->composer = g_object_ref(G_OBJECT(composer)); return t; } @@ -218,6 +222,7 @@ static const EEventHookTargetMask emeh_composer_masks[] = { static const EEventHookTargetMask emeh_message_masks[] = { { "replyall", EM_EVENT_MESSAGE_REPLY_ALL }, + { "reply", EM_EVENT_MESSAGE_REPLY }, { NULL } }; diff --git a/mail/em-event.h b/mail/em-event.h index 6680e88982..d653e35093 100644 --- a/mail/em-event.h +++ b/mail/em-event.h @@ -50,7 +50,8 @@ enum { /* Flags that describe TARGET_MESSAGE */ enum { - EM_EVENT_MESSAGE_REPLY_ALL = 1<< 0 + EM_EVENT_MESSAGE_REPLY_ALL = 1<< 0, + EM_EVENT_MESSAGE_REPLY = 1<< 1 }; /* Flags that describe TARGET_COMPOSER */ @@ -85,6 +86,7 @@ struct _EMEventTargetMessage { CamelFolder *folder; gchar *uid; CamelMimeMessage *message; + EMsgComposer *composer; }; typedef struct _EMEventTargetComposer EMEventTargetComposer; @@ -134,7 +136,8 @@ EMEvent *em_event_peek(void); EMEventTargetFolder *em_event_target_new_folder(EMEvent *emp, const gchar *uri, guint32 flags); EMEventTargetComposer *em_event_target_new_composer(EMEvent *emp, const EMsgComposer *composer, guint32 flags); -EMEventTargetMessage *em_event_target_new_message(EMEvent *emp, CamelFolder *folder, CamelMimeMessage *message, const gchar *uid, guint32 flags); +EMEventTargetMessage *em_event_target_new_message(EMEvent *emp, CamelFolder *folder, CamelMimeMessage *message, const gchar *uid, guint32 flags, + EMsgComposer *composer); EMEventTargetSendReceive * em_event_target_new_send_receive(EMEvent *eme, GtkWidget *table, gpointer data, gint row, guint32 flags); EMEventTargetCustomIcon * em_event_target_new_custom_icon(EMEvent *eme, GtkTreeStore *store, GtkTreeIter *iter, const gchar *uri, guint32 flags); diff --git a/mail/em-folder-browser.c b/mail/em-folder-browser.c index ce3a3c493f..8156c4fd32 100644 --- a/mail/em-folder-browser.c +++ b/mail/em-folder-browser.c @@ -483,7 +483,6 @@ struct _setup_msg { CamelFolder *folder; CamelOperation *cancel; - gchar *query; GList *sources_uri; GList *sources_folder; }; @@ -505,8 +504,6 @@ vfolder_setup_exec(struct _setup_msg *m) d(printf("Setting up Search Folder: %s\n", m->folder->full_name)); - camel_vee_folder_set_expression((CamelVeeFolder *)m->folder, m->query); - l = m->sources_uri; while (l) { d(printf(" Adding uri: %s\n", (gchar *)l->data)); @@ -549,7 +546,6 @@ vfolder_setup_free (struct _setup_msg *m) GList *l; camel_object_unref(m->folder); - g_free(m->query); l = m->sources_uri; while (l) { @@ -576,7 +572,7 @@ static MailMsgInfo vfolder_setup_info = { /* sources_uri should be camel uri's */ static gint -vfolder_setup(CamelFolder *folder, const gchar *query, GList *sources_uri, GList *sources_folder, CamelOperation *cancel) +vfolder_setup (CamelFolder *folder, GList *sources_uri, GList *sources_folder, CamelOperation *cancel) { struct _setup_msg *m; gint id; @@ -584,7 +580,6 @@ vfolder_setup(CamelFolder *folder, const gchar *query, GList *sources_uri, GList m = mail_msg_new(&vfolder_setup_info); m->folder = folder; camel_object_ref(folder); - m->query = g_strdup(query); m->sources_uri = sources_uri; m->sources_folder = sources_folder; @@ -671,14 +666,23 @@ emfb_search_search_activated(ESearchBar *esb, EMFolderBrowser *emfb) efb->account_search_vf = (CamelVeeFolder *)camel_vee_folder_new (vfolder_store,_("Account Search"),CAMEL_STORE_VEE_FOLDER_AUTO); /* Set the search expression */ + camel_vee_folder_set_expression (efb->account_search_vf, search_word); + efb->account_search_cancel = camel_operation_new (NULL, NULL); - vfolder_setup ((CamelFolder *)efb->account_search_vf, search_word, NULL, folder_list_account, efb->account_search_cancel); + vfolder_setup ((CamelFolder *)efb->account_search_vf, NULL, folder_list_account, efb->account_search_cancel); folder_uri = mail_tools_folder_to_url ((CamelFolder *)efb->account_search_vf); emfb_set_search_folder (emfv, (CamelFolder *)efb->account_search_vf, folder_uri); g_free (folder_uri); g_free (storeuri); } else { + /* cancel previous filling first, if under way */ + if (efb->account_search_cancel) { + camel_operation_cancel (efb->account_search_cancel); + camel_operation_unref (efb->account_search_cancel); + efb->account_search_cancel = NULL; + } + /* Reuse the existing search folder */ camel_vee_folder_set_expression((CamelVeeFolder *)efb->account_search_vf, search_word); } @@ -753,8 +757,10 @@ emfb_search_search_activated(ESearchBar *esb, EMFolderBrowser *emfb) l = l->next; } + camel_vee_folder_set_expression (efb->all_account_search_vf, search_word); + efb->account_search_cancel = camel_operation_new (NULL, NULL); - vfolder_setup ((CamelFolder *)efb->all_account_search_vf, search_word, NULL, folder_list, efb->account_search_cancel); + vfolder_setup ((CamelFolder *)efb->all_account_search_vf, NULL, folder_list, efb->account_search_cancel); folder_uri = mail_tools_folder_to_url ((CamelFolder *)efb->all_account_search_vf); @@ -762,6 +768,13 @@ emfb_search_search_activated(ESearchBar *esb, EMFolderBrowser *emfb) g_free (folder_uri); g_free (storeuri); } else { + /* cancel previous filling first, if under way */ + if (efb->account_search_cancel) { + camel_operation_cancel (efb->account_search_cancel); + camel_operation_unref (efb->account_search_cancel); + efb->account_search_cancel = NULL; + } + /* Reuse the existing search folder */ camel_vee_folder_set_expression((CamelVeeFolder *)efb->all_account_search_vf, search_word); } diff --git a/mail/em-folder-view.c b/mail/em-folder-view.c index 1b5bd1b63c..3f76572f18 100644 --- a/mail/em-folder-view.c +++ b/mail/em-folder-view.c @@ -613,7 +613,7 @@ emfv_list_done_message_selected(CamelFolder *folder, const gchar *uid, CamelMime */ /* TODO: do we emit a message.reading with no message when we're looking at nothing or don't care? */ eme = em_event_peek(); - target = em_event_target_new_message(eme, folder, msg, uid, 0); + target = em_event_target_new_message(eme, folder, msg, uid, 0, NULL); e_event_emit((EEvent *)eme, "message.reading", (EEventTarget *)target); em_format_format((EMFormat *)emfv->preview, folder, uid, msg); diff --git a/mail/em-format-html-print.c b/mail/em-format-html-print.c index 773bc04b0d..fb9b1a74a5 100644 --- a/mail/em-format-html-print.c +++ b/mail/em-format-html-print.c @@ -232,6 +232,12 @@ em_format_html_print_message (EMFormatHTMLPrint *efhp, { g_object_ref (efhp); + /* Wrap flags to display all entries by default.*/ + EM_FORMAT_HTML (efhp)->header_wrap_flags |= + EM_FORMAT_HTML_HEADER_TO | + EM_FORMAT_HTML_HEADER_CC | + EM_FORMAT_HTML_HEADER_BCC; + mail_get_message ( folder, uid, emfhp_got_message, efhp, mail_msg_unordered_push); } diff --git a/mail/em-sync-stream.c b/mail/em-sync-stream.c index 7e93b33dde..982a56c90a 100644 --- a/mail/em-sync-stream.c +++ b/mail/em-sync-stream.c @@ -89,6 +89,7 @@ emss_process_message (struct _write_msg *msg) break; } + emss->idle_id = 0; e_flag_set (msg->done); return FALSE; @@ -108,7 +109,9 @@ emss_sync_op (EMSyncStream *emss, enum _write_msg_t op, camel_object_ref (emss); - g_idle_add ((GSourceFunc) emss_process_message, &msg); + if (emss->idle_id) + g_source_remove (emss->idle_id); + emss->idle_id = g_idle_add ((GSourceFunc) emss_process_message, &msg); e_flag_wait (msg.done); e_flag_free (msg.done); @@ -162,6 +165,8 @@ emss_stream_close (CamelStream *stream) if (emss->cancel) return -1; + emss->idle_id = 0; + if (mail_in_main_thread ()) return EMSS_CLASS (emss)->sync_close (stream); else @@ -187,6 +192,8 @@ em_sync_stream_finalize (EMSyncStream *emss) { if (emss->buffer != NULL) g_string_free (emss->buffer, TRUE); + if (emss->idle_id) + g_source_remove (emss->idle_id); } CamelType diff --git a/mail/em-sync-stream.h b/mail/em-sync-stream.h index 16cdc272d1..3d74a02a35 100644 --- a/mail/em-sync-stream.h +++ b/mail/em-sync-stream.h @@ -53,6 +53,7 @@ struct _EMSyncStream { CamelStream parent; GString *buffer; gboolean cancel; + guint idle_id; }; struct _EMSyncStreamClass { diff --git a/mail/mail-component.c b/mail/mail-component.c index 3bb6ffbbba..46c48b5516 100644 --- a/mail/mail-component.c +++ b/mail/mail-component.c @@ -183,7 +183,10 @@ enable_folder_tree (GtkWidget *emfb, GtkWidget *emft) /* Get the selected folder in the folder tree. */ selected_folder = em_folder_tree_get_selected_folder(EM_FOLDER_TREE (emft)); - uri = mail_tools_folder_to_url (selected_folder); + if (selected_folder) + uri = mail_tools_folder_to_url (selected_folder); + else + uri = NULL; selected_curl = uri ? camel_url_new (uri, NULL) : NULL; diff --git a/mail/mail-component.h b/mail/mail-component.h index f5e2ad0f6d..f69a3c2cff 100644 --- a/mail/mail-component.h +++ b/mail/mail-component.h @@ -101,5 +101,6 @@ gint status_check (GNOME_Evolution_ShellState shell_state); void mail_indicate_new_mail (gboolean have_new_mail); void mail_component_show_logger (gpointer); +void mail_component_show_status_bar (gboolean show); #endif /* _MAIL_COMPONENT_H_ */ diff --git a/mail/mail-mt.c b/mail/mail-mt.c index 93fb40aad6..012bca16a6 100644 --- a/mail/mail-mt.c +++ b/mail/mail-mt.c @@ -336,6 +336,7 @@ mail_msg_check_error (gpointer msg) m->priv->error = (GtkWidget *) gd; else gtk_widget_show((GtkWidget *)gd); + } void mail_msg_cancel(guint msgid) @@ -485,7 +486,6 @@ mail_msg_idle_cb (void) G_LOCK (idle_source_id); idle_source_id = 0; G_UNLOCK (idle_source_id); - /* check the main loop queue */ while ((msg = g_async_queue_try_pop (main_loop_queue)) != NULL) { if (msg->info->exec != NULL) @@ -502,7 +502,6 @@ mail_msg_idle_cb (void) mail_msg_check_error (msg); mail_msg_unref (msg); } - return FALSE; } diff --git a/mail/mail-send-recv.c b/mail/mail-send-recv.c index 39fc67e614..7f7c99724d 100644 --- a/mail/mail-send-recv.c +++ b/mail/mail-send-recv.c @@ -622,7 +622,9 @@ build_dialog (GtkWindow *parent, } gtk_widget_show_all (table); - gtk_widget_show (GTK_WIDGET (gd)); + + if (parent != NULL) + gtk_widget_show (GTK_WIDGET (gd)); g_signal_connect (gd, "response", G_CALLBACK (dialog_response), data); @@ -932,9 +934,9 @@ mail_send_receive (GtkWindow *parent) GList *scan; if (send_recv_dialog != NULL) { - if (GTK_WIDGET_REALIZED(send_recv_dialog)) { - gdk_window_show(send_recv_dialog->window); - gdk_window_raise(send_recv_dialog->window); + if (parent != NULL && GTK_WIDGET_REALIZED (send_recv_dialog)) { + gdk_window_show (send_recv_dialog->window); + gdk_window_raise (send_recv_dialog->window); } return send_recv_dialog; } diff --git a/mail/mail-send-recv.h b/mail/mail-send-recv.h index 02be2ce2e0..2ba1f01aeb 100644 --- a/mail/mail-send-recv.h +++ b/mail/mail-send-recv.h @@ -36,7 +36,7 @@ GtkWidget * mail_send_receive (GtkWindow *parent); void mail_receive_uri (const gchar *uri, gboolean keep_on_server); -void mail_send (void); +void mail_send (void); /* setup auto receive stuff */ void mail_autoreceive_init (EShellBackend *shell_backend, diff --git a/mail/message-list.c b/mail/message-list.c index 8f96a27f55..ce1b20123e 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -4466,6 +4466,8 @@ regen_list_done (struct _regen_list_msg *m) /* space is used to indicate no search too */ if (m->ml->search && strcmp (m->ml->search, " ") != 0) e_tree_set_info_message (m->ml->tree, _("No message satisfies your search criteria. Either clear search with Search->Clear menu item or change it.")); + else if (m->ml->hidden) + e_tree_set_info_message (m->ml->tree, _("There are only hidden messages in this folder. Use View->Show Hidden Messages to show them.")); else e_tree_set_info_message (m->ml->tree, _("There are no messages in this folder.")); } else |