aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
Diffstat (limited to 'mail')
-rw-r--r--mail/e-mail-reader.c2
-rw-r--r--mail/em-account-editor.c7
-rw-r--r--mail/em-account-editor.h2
-rw-r--r--mail/em-composer-utils.c35
-rw-r--r--mail/em-composer-utils.h2
-rw-r--r--mail/em-event.c7
-rw-r--r--mail/em-event.h7
-rw-r--r--mail/em-folder-browser.c29
-rw-r--r--mail/em-folder-view.c2
-rw-r--r--mail/em-format-html-print.c6
-rw-r--r--mail/em-sync-stream.c9
-rw-r--r--mail/em-sync-stream.h1
-rw-r--r--mail/mail-component.c5
-rw-r--r--mail/mail-component.h1
-rw-r--r--mail/mail-mt.c3
-rw-r--r--mail/mail-send-recv.c10
-rw-r--r--mail/mail-send-recv.h2
-rw-r--r--mail/message-list.c2
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