Add progress hint on loading external images (fixes NB#112376)
[modest] / src / widgets / modest-gtkhtml-mime-part-view.c
index 9c584b7..4e1116f 100644 (file)
@@ -251,7 +251,7 @@ modest_gtkhtml_mime_part_view_class_init (ModestGtkhtmlMimePartViewClass *klass)
        gtk_binding_entry_skip (binding_set, GDK_End, 0);
        gtk_binding_entry_skip (binding_set, GDK_KP_Home, 0);
        gtk_binding_entry_skip (binding_set, GDK_KP_End, 0);
-       
+
        g_type_class_add_private (gobject_class, sizeof(ModestGtkhtmlMimePartViewPrivate));
 
        signals[STOP_STREAMS_SIGNAL] = 
@@ -265,7 +265,7 @@ modest_gtkhtml_mime_part_view_class_init (ModestGtkhtmlMimePartViewClass *klass)
 
 }
 
-static void    
+static void
 modest_gtkhtml_mime_part_view_init (ModestGtkhtmlMimePartView *self)
 {
        ModestGtkhtmlMimePartViewPrivate *priv = MODEST_GTKHTML_MIME_PART_VIEW_GET_PRIVATE (self);
@@ -290,6 +290,11 @@ modest_gtkhtml_mime_part_view_init (ModestGtkhtmlMimePartView *self)
 #endif
 #endif
 
+#ifdef HAVE_GTK_HTML_SET_DEFAULT_ENGINE
+       /* Enable Content type handling */
+       gtk_html_set_default_engine (GTK_HTML (self), TRUE);
+#endif
+
        gdk_color_parse ("#fff", &base);
        gdk_color_parse ("#000", &text);
        gtk_widget_modify_base (GTK_WIDGET (self), GTK_STATE_NORMAL, &base);
@@ -411,12 +416,6 @@ on_url (GtkWidget *widget, const gchar *uri, ModestGtkhtmlMimePartView *self)
        return result;
 }
 
-typedef struct {
-       gpointer buffer;
-       GtkHTML *html;
-       GtkHTMLStream *stream;
-} ImageFetcherInfo;
-
 static gboolean
 on_url_requested (GtkWidget *widget, const gchar *uri, GtkHTMLStream *stream, 
                  ModestGtkhtmlMimePartView *self)
@@ -462,15 +461,19 @@ 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);
        tny_stream_reset (tny_stream);
 
        tny_mime_part_decode_to_stream_async (TNY_MIME_PART (part),
@@ -492,11 +495,14 @@ set_text_part (ModestGtkhtmlMimePartView *self, TnyMimePart *part)
 
        gtkhtml_stream = gtk_html_begin(GTK_HTML(self));
        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);
        text_to_html_stream = TNY_STREAM (modest_stream_text_to_html_new (tny_stream));
        modest_stream_text_to_html_set_linkify_limit (MODEST_STREAM_TEXT_TO_HTML (text_to_html_stream),
                                                      64*1024);
        modest_stream_text_to_html_set_full_limit (MODEST_STREAM_TEXT_TO_HTML (text_to_html_stream),
-                                                  640*1024);
+                                                  128*1024);
+       modest_stream_text_to_html_set_line_limit (MODEST_STREAM_TEXT_TO_HTML (text_to_html_stream),
+                                                  1024);
 
        tny_mime_part_decode_to_stream_async (TNY_MIME_PART (part),
                                              text_to_html_stream, decode_to_stream_cb,