summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohannes Rosenberger <johannes.rosenberger@jorsn.eu>2019-08-11 12:51:17 +0200
committerJohannes Rosenberger <johannes.rosenberger@jorsn.eu>2019-08-11 13:18:04 +0200
commit47548b087df6befe2308fa21ada03e42d36f5971 (patch)
tree8449a4134bfb45d71a7459e3330bb91e618d7a27 /src
parent7e188809e8b034e891c84f195d652a70d2e9d09c (diff)
fix cast from 'GMimeMultipart' to 'GMimePart'
Fix run time glib warning ``` invalid cast from 'GMimeMultipart' to 'GMimePart' ``` by restructuring the mime parts `ComposeMessage::build()`/markdown rendering.
Diffstat (limited to 'src')
-rw-r--r--src/compose_message.cc28
1 files changed, 13 insertions, 15 deletions
diff --git a/src/compose_message.cc b/src/compose_message.cc
index 9036708..23cc6a9 100644
--- a/src/compose_message.cc
+++ b/src/compose_message.cc
@@ -129,18 +129,19 @@ namespace Astroid {
/* create text part */
GMimeStream * contentStream = g_mime_stream_mem_new_with_buffer(text_body_content.c_str(), text_body_content.size());
- GMimePart * messagePart = g_mime_part_new_with_type ("text", "plain");
+ GMimePart * text = g_mime_part_new_with_type ("text", "plain");
+ GMimeObject * messagePart = GMIME_OBJECT(text); // top-level mime part object; default is plain text
- g_mime_object_set_content_type_parameter ((GMimeObject *) messagePart, "charset", astroid->config().get<string>("editor.charset").c_str());
+ g_mime_object_set_content_type_parameter ((GMimeObject *) text, "charset", astroid->config().get<string>("editor.charset").c_str());
if (astroid->config().get<bool> ("mail.format_flowed")) {
- g_mime_object_set_content_type_parameter ((GMimeObject *) messagePart, "format", "flowed");
+ g_mime_object_set_content_type_parameter ((GMimeObject *) text, "format", "flowed");
}
GMimeDataWrapper * contentWrapper = g_mime_data_wrapper_new_with_stream(contentStream, GMIME_CONTENT_ENCODING_DEFAULT);
- g_mime_part_set_content_encoding (messagePart, GMIME_CONTENT_ENCODING_QUOTEDPRINTABLE);
- g_mime_part_set_content (messagePart, contentWrapper);
+ g_mime_part_set_content_encoding (text, GMIME_CONTENT_ENCODING_QUOTEDPRINTABLE);
+ g_mime_part_set_content (text, contentWrapper);
g_object_unref(contentWrapper);
g_object_unref(contentStream);
@@ -162,12 +163,10 @@ namespace Astroid {
md_body_content += sf.str ();
}
- GMimePart * text = messagePart;
- GMimeMultipart * mp = g_mime_multipart_new_with_subtype ("alternative");
+ GMimeMultipart * multipartAlt = g_mime_multipart_new_with_subtype ("alternative");
/* add text part */
- g_mime_multipart_add (mp, GMIME_OBJECT(messagePart));
- messagePart = GMIME_PART(mp);
+ g_mime_multipart_add (multipartAlt, GMIME_OBJECT(text));
/* construct HTML part */
GMimePart * html = g_mime_part_new_with_type ("text", "html");
@@ -247,16 +246,15 @@ namespace Astroid {
g_object_unref(contentStream);
/* add html part to message */
- g_mime_multipart_add (mp, GMIME_OBJECT (html));
+ g_mime_multipart_add (multipartAlt, GMIME_OBJECT (html));
+
+ messagePart = GMIME_OBJECT(multipartAlt);
g_object_unref (text);
- } else {
- /* revert to only text part */
- g_object_unref (messagePart);
- messagePart = text;
}
+ g_object_unref (html);
}
- g_mime_message_set_mime_part(message, GMIME_OBJECT(messagePart));
+ g_mime_message_set_mime_part(message, messagePart);
g_object_unref(messagePart);
}