[evolution] Bug 738080 - message/rfc822 attachment drag and drop often does not work
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] Bug 738080 - message/rfc822 attachment drag and drop often does not work
- Date: Fri, 27 Feb 2015 11:40:27 +0000 (UTC)
commit d75a0c1dcc6aa3029a9ec74e8117f7c75e761ec6
Author: Milan Crha <mcrha redhat com>
Date: Fri Feb 27 12:38:39 2015 +0100
Bug 738080 - message/rfc822 attachment drag and drop often does not work
mail/em-utils.c | 33 +++++++++++++++++++++++----------
1 files changed, 23 insertions(+), 10 deletions(-)
---
diff --git a/mail/em-utils.c b/mail/em-utils.c
index b320d00..b152359 100644
--- a/mail/em-utils.c
+++ b/mail/em-utils.c
@@ -582,6 +582,7 @@ em_utils_read_messages_from_stream (CamelFolder *folder,
{
CamelMimeParser *mp = camel_mime_parser_new ();
gboolean success = TRUE;
+ gboolean any_read = FALSE;
camel_mime_parser_scan_from (mp, TRUE);
camel_mime_parser_init_with_stream (mp, stream, NULL);
@@ -589,6 +590,8 @@ em_utils_read_messages_from_stream (CamelFolder *folder,
while (camel_mime_parser_step (mp, NULL, NULL) == CAMEL_MIME_PARSER_STATE_FROM) {
CamelMimeMessage *msg;
+ any_read = TRUE;
+
/* NB: de-from filter, once written */
msg = camel_mime_message_new ();
if (!camel_mime_part_construct_from_parser_sync (
@@ -610,6 +613,22 @@ em_utils_read_messages_from_stream (CamelFolder *folder,
g_object_unref (mp);
+ /* No message had bean read, maybe it's not MBOX, but a plain message */
+ if (!any_read) {
+ CamelMimeMessage *msg;
+
+ if (G_IS_SEEKABLE (stream))
+ g_seekable_seek (G_SEEKABLE (stream), 0, G_SEEK_SET, NULL, NULL);
+
+ msg = camel_mime_message_new ();
+ if (camel_data_wrapper_construct_from_stream_sync (
+ (CamelDataWrapper *) msg, stream, NULL, NULL))
+ /* FIXME camel_folder_append_message_sync() may block. */
+ camel_folder_append_message_sync (
+ folder, msg, NULL, NULL, NULL, NULL);
+ g_object_unref (msg);
+ }
+
return success ? 0 : -1;
}
@@ -689,7 +708,6 @@ em_utils_selection_get_message (GtkSelectionData *selection_data,
CamelFolder *folder)
{
CamelStream *stream;
- CamelMimeMessage *msg;
const guchar *data;
gint length;
@@ -699,15 +717,10 @@ em_utils_selection_get_message (GtkSelectionData *selection_data,
if (data == NULL || length == -1)
return;
- stream = (CamelStream *)
- camel_stream_mem_new_with_buffer ((gchar *) data, length);
- msg = camel_mime_message_new ();
- if (camel_data_wrapper_construct_from_stream_sync (
- (CamelDataWrapper *) msg, stream, NULL, NULL))
- /* FIXME camel_folder_append_message_sync() may block. */
- camel_folder_append_message_sync (
- folder, msg, NULL, NULL, NULL, NULL);
- g_object_unref (msg);
+ stream = camel_stream_mem_new_with_buffer ((const gchar *) data, length);
+
+ em_utils_read_messages_from_stream (folder, stream);
+
g_object_unref (stream);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]