X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-gtkhtml-mime-part-view.c;h=37b97bc53c701da061162d3cce88d4983d08e93e;hp=65aeb028686500d1032f8f03f70eded650b62cd7;hb=HEAD;hpb=98bc7d6724076480df8cf72ec31d541d56dc8bb4 diff --git a/src/widgets/modest-gtkhtml-mime-part-view.c b/src/widgets/modest-gtkhtml-mime-part-view.c index 65aeb02..37b97bc 100644 --- a/src/widgets/modest-gtkhtml-mime-part-view.c +++ b/src/widgets/modest-gtkhtml-mime-part-view.c @@ -133,6 +133,7 @@ struct _ModestGtkhtmlMimePartViewPrivate { enum { STOP_STREAMS_SIGNAL, + LIMIT_ERROR_SIGNAL, LAST_SIGNAL }; @@ -263,6 +264,15 @@ modest_gtkhtml_mime_part_view_class_init (ModestGtkhtmlMimePartViewClass *klass) g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + signals[LIMIT_ERROR_SIGNAL] = + g_signal_new ("limit-error", + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (ModestGtkhtmlMimePartViewClass,limit_error), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + } static void @@ -277,7 +287,6 @@ modest_gtkhtml_mime_part_view_init (ModestGtkhtmlMimePartView *self) gtk_html_set_caret_mode (GTK_HTML(self), FALSE); gtk_html_set_blocking (GTK_HTML(self), TRUE); gtk_html_set_images_blocking (GTK_HTML(self), TRUE); - gtk_container_set_border_width (GTK_CONTAINER (self), MODEST_MARGIN_DEFAULT); #ifdef MODEST_TOOLKIT_HILDON2 #ifdef HAVE_GTK_HTML_SET_MAX_IMAGE_SIZE @@ -288,6 +297,9 @@ modest_gtkhtml_mime_part_view_init (ModestGtkhtmlMimePartView *self) #ifdef HAVE_GTK_HTML_SET_ALLOW_DND gtk_html_set_allow_dnd (GTK_HTML(self), FALSE); #endif +#ifdef HAVE_GTK_HTML_SET_WORD_CHAR_WRAPPING + gtk_html_set_word_char_wrapping (GTK_HTML (self), TRUE); +#endif #endif #ifdef HAVE_GTK_HTML_SET_DEFAULT_ENGINE @@ -445,13 +457,20 @@ decode_to_stream_cb (TnyMimePart *self, GError *err, gpointer user_data) { - gboolean is_text = GPOINTER_TO_INT (user_data); + ModestGtkhtmlMimePartView *view = (ModestGtkhtmlMimePartView *) user_data; - if (is_text) { + if (MODEST_IS_STREAM_TEXT_TO_HTML (stream)) { if (tny_stream_write (stream, "\n", 1) == -1) { g_warning ("failed to write CR in %s", __FUNCTION__); } + if (modest_stream_text_to_html_limit_reached (MODEST_STREAM_TEXT_TO_HTML (stream))) { + g_signal_emit (G_OBJECT (view), signals[LIMIT_ERROR_SIGNAL], 0); + } tny_stream_reset (stream); + } else { + if (modest_tny_stream_gtkhtml_limit_reached (MODEST_TNY_STREAM_GTKHTML (stream))) { + g_signal_emit (G_OBJECT (view), signals[LIMIT_ERROR_SIGNAL], 0); + } } tny_stream_close (stream); } @@ -461,13 +480,16 @@ set_html_part (ModestGtkhtmlMimePartView *self, TnyMimePart *part, const gchar * { GtkHTMLStream *gtkhtml_stream; TnyStream *tny_stream; + gchar *content_type; g_return_if_fail (self); g_return_if_fail (part); g_signal_emit (G_OBJECT (self), signals[STOP_STREAMS_SIGNAL], 0); - gtkhtml_stream = gtk_html_begin_full(GTK_HTML(self), NULL, (char *) encoding, 0); + content_type = g_strdup_printf ("text/html; charset=%s", encoding); + gtkhtml_stream = gtk_html_begin_full(GTK_HTML(self), NULL, content_type, 0); + g_free (content_type); tny_stream = TNY_STREAM(modest_tny_stream_gtkhtml_new (gtkhtml_stream, GTK_HTML (self))); modest_tny_stream_gtkhtml_set_max_size (MODEST_TNY_STREAM_GTKHTML (tny_stream), 128*1024); @@ -475,7 +497,7 @@ set_html_part (ModestGtkhtmlMimePartView *self, TnyMimePart *part, const gchar * tny_mime_part_decode_to_stream_async (TNY_MIME_PART (part), tny_stream, decode_to_stream_cb, - NULL, GINT_TO_POINTER (FALSE)); + NULL, self); g_object_unref (tny_stream); } @@ -503,7 +525,7 @@ set_text_part (ModestGtkhtmlMimePartView *self, TnyMimePart *part) tny_mime_part_decode_to_stream_async (TNY_MIME_PART (part), text_to_html_stream, decode_to_stream_cb, - NULL, GINT_TO_POINTER (TRUE)); + NULL, self); g_object_unref (G_OBJECT(text_to_html_stream)); g_object_unref (G_OBJECT(tny_stream));