void textview_show_message(TextView *textview, MimeInfo *mimeinfo,
const gchar *file)
{
- GtkSText *text = GTK_STEXT(textview->text);
+ GtkSText *text;
FILE *fp;
const gchar *charset = NULL;
GPtrArray *headers = NULL;
textview_set_font(textview, charset);
textview_clear(textview);
+ text = GTK_STEXT(textview->text);
+
gtk_stext_freeze(text);
if (fseek(fp, mimeinfo->fpos, SEEK_SET) < 0) perror("fseek");
void textview_show_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
{
- GtkSText *text = GTK_STEXT(textview->text);
+ GtkSText *text;
gchar buf[BUFFSIZE];
const gchar *boundary = NULL;
gint boundary_len = 0;
const gchar *charset = NULL;
GPtrArray *headers = NULL;
+ gboolean is_rfc822_part = FALSE;
g_return_if_fail(mimeinfo != NULL);
g_return_if_fail(fp != NULL);
}
headers = textview_scan_header(textview, fp);
mimeinfo = mimeinfo->sub;
+ is_rfc822_part = TRUE;
}
if (prefs_common.force_charset)
charset = mimeinfo->charset;
textview_set_font(textview, charset);
- textview_clear(textview);
+ text = GTK_STEXT(textview->text);
+
gtk_stext_freeze(text);
+ textview_clear(textview);
if (headers) {
textview_show_header(textview, headers);
gtk_stext_insert(text, NULL, NULL, NULL, "\n", 1);
}
- if (mimeinfo->mime_type == MIME_MULTIPART || mimeinfo->main)
+ if (mimeinfo->mime_type == MIME_MULTIPART || is_rfc822_part)
textview_add_parts(textview, mimeinfo, fp);
else
textview_write_body(textview, mimeinfo, fp, charset);
if (mimeinfo->mime_type == MIME_MESSAGE_RFC822) {
headers = textview_scan_header(textview, fp);
if (headers) {
+ gtk_stext_freeze(text);
gtk_stext_insert(text, NULL, NULL, NULL, "\n", 1);
textview_show_header(textview, headers);
procheader_header_array_destroy(headers);
+ gtk_stext_thaw(text);
}
return;
}