X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-gtkhtml-msg-view.c;h=dcd6923070358f329280f0599a14b09030353760;hp=d7f52380a8f7dc27ecb51a8edce8e9d4c3cd63c7;hb=67ce358d84560f33210e608f236f258c38cb701c;hpb=63df2250c07bf3c62a0c1602ea69490293f28049 diff --git a/src/widgets/modest-gtkhtml-msg-view.c b/src/widgets/modest-gtkhtml-msg-view.c index d7f5238..dcd6923 100644 --- a/src/widgets/modest-gtkhtml-msg-view.c +++ b/src/widgets/modest-gtkhtml-msg-view.c @@ -55,6 +55,7 @@ #include #include #include +#include /* FIXNE: we should have no maemo-deps in widgets/ */ #ifndef MODEST_TOOLKIT_GTK @@ -1593,6 +1594,7 @@ request_fetch_images (ModestGtkhtmlMsgView *self) /* The message could have not been downloaded yet */ if (priv->msg) { modest_mime_part_view_set_view_images (MODEST_MIME_PART_VIEW (priv->body_view), TRUE); + priv->has_blocked_bs_images = FALSE; part = tny_mime_part_view_get_part (TNY_MIME_PART_VIEW (priv->body_view)); if (part) { tny_mime_part_view_set_part (TNY_MIME_PART_VIEW (priv->body_view), part); @@ -1652,6 +1654,22 @@ on_limit_error (GtkWidget *widget, ModestGtkhtmlMsgView *msg_view) g_signal_emit_by_name (G_OBJECT (msg_view), "limit-error"); } +static gboolean +part_cids_equal (const gchar *part_cid1, + const gchar *part_cid2) +{ + if (g_strcmp0 (part_cid1, part_cid2) == 0) + return TRUE; + + if (part_cid2 && part_cid2[0] == '<') { + const gchar *end; + end = g_strrstr_len (part_cid2, -1, ">"); + + if (end && strncmp (part_cid2 + 1, part_cid1, end - part_cid2 - 1) == 0) + return TRUE; + } + return FALSE; +} static TnyMimePart * find_cid_image (TnyMsg *msg, const gchar *cid) @@ -1680,8 +1698,8 @@ find_cid_image (TnyMsg *msg, const gchar *cid) */ if (!part_cid) part_cid = tny_mime_part_get_content_location (part); - - if (part_cid && strcmp (cid, part_cid) == 0) + + if (part_cids_equal (cid, part_cid)) break; if (tny_mime_part_content_type_is (part, "multipart/related")) { @@ -1695,9 +1713,10 @@ find_cid_image (TnyMsg *msg, const gchar *cid) while (!tny_iterator_is_done (related_iter)) { related_part = TNY_MIME_PART (tny_iterator_get_current (related_iter)); part_cid = tny_mime_part_get_content_id (related_part); - if (part_cid && strcmp (cid, part_cid) == 0) { + + if (part_cids_equal (cid, part_cid)) break; - } + g_object_unref (related_part); related_part = NULL; tny_iterator_next (related_iter); @@ -1766,7 +1785,8 @@ on_fetch_url (GtkWidget *widget, const gchar *uri, } } else if (TNY_IS_CAMEL_BS_MIME_PART (part) && !tny_camel_bs_mime_part_is_fetched (TNY_CAMEL_BS_MIME_PART (part))){ - if (!modest_mime_part_view_get_view_images (MODEST_MIME_PART_VIEW (priv->body_view))) { + if (!modest_mime_part_view_get_view_images (MODEST_MIME_PART_VIEW (priv->body_view)) || + !tny_device_is_online (modest_runtime_get_device ())) { priv->has_blocked_bs_images = TRUE; tny_stream_close (stream); return TRUE;