aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Vrátil <dvratil@redhat.com>2012-04-19 15:20:07 +0800
committerDan Vrátil <dvratil@redhat.com>2012-04-19 15:22:36 +0800
commit3fbbdd80ac987f2b9ac0b91b7fd16098bb3240c1 (patch)
tree2920ca78528630724ecb9fe69d1d841584b2509d
parent263874d409fce7adaefee8df82e4c86237f28203 (diff)
downloadgsoc2013-evolution-3fbbdd80ac987f2b9ac0b91b7fd16098bb3240c1.tar.gz
gsoc2013-evolution-3fbbdd80ac987f2b9ac0b91b7fd16098bb3240c1.tar.zst
gsoc2013-evolution-3fbbdd80ac987f2b9ac0b91b7fd16098bb3240c1.zip
Bug #674248 - Lost new lines from text/plain
-rw-r--r--composer/e-msg-composer.c10
-rw-r--r--em-format/em-format-quote.c24
2 files changed, 31 insertions, 3 deletions
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
index 5c91037fa6..f033e9dd52 100644
--- a/composer/e-msg-composer.c
+++ b/composer/e-msg-composer.c
@@ -188,6 +188,9 @@ emcu_part_to_html (CamelSession *session,
CamelStreamMem *mem;
GByteArray *buf;
gchar *text;
+ EMFormatParserInfo p_info = { 0 };
+ EMFormatWriterInfo w_info = { 0 };
+ GString *part_id;
buf = g_byte_array_new ();
mem = (CamelStreamMem *) camel_stream_mem_new ();
@@ -208,8 +211,11 @@ emcu_part_to_html (CamelSession *session,
(EMFormat *) emfq, em_format_get_charset (source));
}
- em_format_format_text (EM_FORMAT (emfq),
- CAMEL_STREAM (mem), CAMEL_DATA_WRAPPER (part), cancellable);
+ part_id = g_string_sized_new (0);
+ em_format_parse_part (EM_FORMAT (emfq), part, part_id, &p_info, cancellable);
+ em_format_write (EM_FORMAT (emfq), CAMEL_STREAM (mem), &w_info, cancellable);
+ g_string_free (part_id, TRUE);
+
g_object_unref (emfq);
camel_stream_write((CamelStream *) mem, "", 1, cancellable, NULL);
diff --git a/em-format/em-format-quote.c b/em-format/em-format-quote.c
index 2ee8ddb2e9..c3231785bf 100644
--- a/em-format/em-format-quote.c
+++ b/em-format/em-format-quote.c
@@ -523,6 +523,24 @@ emfq_write_attachment (EMFormat *emf,
}
static void
+emfq_write (EMFormat *emf,
+ CamelStream *stream,
+ EMFormatWriterInfo *info,
+ GCancellable *cancellable)
+{
+ GList *iter;
+
+ for (iter = emf->mail_part_list; iter; iter = iter->next) {
+
+ EMFormatPURI *puri = iter->data;
+ if (!puri || !puri->write_func)
+ continue;
+
+ puri->write_func (emf, puri, stream, info, cancellable);
+ }
+}
+
+static void
emfq_base_init (EMFormatQuoteClass *klass)
{
emfq_builtin_init (klass);
@@ -532,10 +550,14 @@ static void
emfq_class_init (EMFormatQuoteClass *klass)
{
GObjectClass *object_class;
+ EMFormatClass *format_class;
parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (EMFormatQuotePrivate));
+ format_class = EM_FORMAT_CLASS (klass);
+ format_class->write = emfq_write;
+
object_class = G_OBJECT_CLASS (klass);
object_class->dispose = emfq_dispose;
object_class->finalize = emfq_finalize;
@@ -550,7 +572,7 @@ emfq_init (EMFormatQuote *emfq)
emfq->priv->text_html_flags =
CAMEL_MIME_FILTER_TOHTML_PRE |
CAMEL_MIME_FILTER_TOHTML_CONVERT_URLS |
- CAMEL_MIME_FILTER_TOHTML_CONVERT_ADDRESSES;
+ CAMEL_MIME_FILTER_TOHTML_CONVERT_ADDRESSES;
}
GType