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] =
}
-static void
+static void
modest_gtkhtml_mime_part_view_init (ModestGtkhtmlMimePartView *self)
{
ModestGtkhtmlMimePartViewPrivate *priv = MODEST_GTKHTML_MIME_PART_VIEW_GET_PRIVATE (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
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);
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)
{
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),
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,
}
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=");