Don't open message requested from header window if it's been destroyed (fixes NB...
[modest] / src / widgets / modest-gtkhtml-mime-part-view.c
index 48e46a1..9ef261c 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);
@@ -277,7 +277,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
@@ -285,6 +284,14 @@ modest_gtkhtml_mime_part_view_init (ModestGtkhtmlMimePartView *self)
           maximum height of 2 times the full size of the window. Should be enough */
        gtk_html_set_max_image_size (GTK_HTML (self), 720, 880);
 #endif
+#ifdef HAVE_GTK_HTML_SET_ALLOW_DND
+       gtk_html_set_allow_dnd       (GTK_HTML(self), FALSE);
+#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);
@@ -408,12 +415,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)
@@ -459,15 +460,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),
@@ -489,11 +494,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,
@@ -539,8 +547,12 @@ set_part (ModestGtkhtmlMimePartView *self, TnyMimePart *part)
        }
 
        header_content_type = modest_tny_mime_part_get_header_value (part, "Content-Type");
-       header_content_type = g_strstrip (header_content_type);
-       header_content_type_lower = g_ascii_strdown (header_content_type, -1);
+       if (header_content_type) {
+               header_content_type = g_strstrip (header_content_type);
+               header_content_type_lower = g_ascii_strdown (header_content_type, -1);
+       } else {
+               header_content_type_lower = NULL;
+       }
 
        if (header_content_type_lower) {
                tmp = strstr (header_content_type_lower, "charset=");