[evolution] Contact photos not always shown in a contact preview



commit 3e8d9c084209a95f14518ec3fbfab4840a44f1cc
Author: Milan Crha <mcrha redhat com>
Date:   Thu Mar 13 15:56:58 2014 +0100

    Contact photos not always shown in a contact preview
    
    Locally stored photos were shown as a "missing image" instead of the actual
    photo for cases when the URL contained special characters which required to be
    encoded in the URL. This effectively updates commit 255e0529040baae67e3d70f1030ce248fd61856d,
    to check WebKit version for the unescape, because WebKit 2.2.5 (which I currently use)
    doesn't re-escape the URIs. Maybe earlier versions of the WebKit do the same.

 addressbook/gui/widgets/eab-contact-formatter.c |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)
---
diff --git a/addressbook/gui/widgets/eab-contact-formatter.c b/addressbook/gui/widgets/eab-contact-formatter.c
index 5b61bcd..f4b24a2 100644
--- a/addressbook/gui/widgets/eab-contact-formatter.c
+++ b/addressbook/gui/widgets/eab-contact-formatter.c
@@ -397,11 +397,18 @@ render_title_block (EABContactFormatter *formatter,
                        photo_data);
        } else if (photo && photo->type == E_CONTACT_PHOTO_TYPE_URI && photo->data.uri && *photo->data.uri) {
                gboolean is_local = g_str_has_prefix (photo->data.uri, "file://");
+               const gchar *uri = photo->data.uri;
+               /* WebKit 2.2 doesn't re-escape URIs, thus do this only for versions before this */
+               #if !WEBKIT_CHECK_VERSION(2,2,0)
                gchar *unescaped = g_uri_unescape_string (photo->data.uri, NULL);
+               uri = unescaped;
+               #endif
                g_string_append_printf (
                        buffer, "<img border=\"1\" src=\"%s%s\">",
-                       is_local ? "evo-" : "", unescaped);
+                       is_local ? "evo-" : "", uri);
+               #if !WEBKIT_CHECK_VERSION(2,2,0)
                g_free (unescaped);
+               #endif
        }
 
        if (photo)
@@ -871,13 +878,20 @@ render_compact (EABContactFormatter *formatter,
                if (photo->type == E_CONTACT_PHOTO_TYPE_URI &&
                        photo->data.uri && *photo->data.uri) {
                        gboolean is_local = g_str_has_prefix (photo->data.uri, "file://");
+                       const gchar *uri = photo->data.uri;
+                       /* WebKit 2.2 doesn't re-escape URIs, thus do this only for versions before this */
+                       #if !WEBKIT_CHECK_VERSION(2,2,0)
                        gchar *unescaped = g_uri_unescape_string (photo->data.uri, NULL);
+                       uri = unescaped;
+                       #endif
                        g_string_append_printf (
                                buffer,
                                "<img width=\"%d\" height=\"%d\" src=\"%s%s\">",
                                calced_width, calced_height,
-                               is_local ? "evo-" : "", unescaped);
+                               is_local ? "evo-" : "", uri);
+                       #if !WEBKIT_CHECK_VERSION(2,2,0)
                        g_free (unescaped);
+                       #endif
                } else {
                        gchar *photo_data;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]