Avoid a warning creating title button in ModestShell
[modest] / src / modest-text-utils.c
index eca911c..df90b99 100644 (file)
@@ -302,7 +302,8 @@ modest_text_utils_derived_subject (const gchar *subject, gboolean is_reply)
        gchar *tmp, *subject_dup, *retval, *prefix;
        const gchar *untranslated_prefix;
        gint prefix_len, untranslated_prefix_len;
-       gboolean untranslated_found = FALSE;
+       gboolean translated_found = FALSE;
+       gboolean first_time;
 
        if (!subject || subject[0] == '\0')
                subject = _("mail_va_no_subject");
@@ -319,14 +320,18 @@ modest_text_utils_derived_subject (const gchar *subject, gboolean is_reply)
 
        /* We do not want things like "Re: Re: Re:" or "Fw: Fw:" so
           delete the previous ones */
+       first_time = TRUE;
        do {
                if (g_str_has_prefix (tmp, prefix)) {
                        tmp += prefix_len;
                        tmp = g_strchug (tmp);
+                       /* Do not consider translated prefixes in the
+                          middle of a Re:Re:..Re: like sequence */
+                       if (G_UNLIKELY (first_time))
+                               translated_found = TRUE;
                } else if (g_str_has_prefix (tmp, untranslated_prefix)) {
                        tmp += untranslated_prefix_len;
                        tmp = g_strchug (tmp);
-                       untranslated_found = TRUE;
                } else {
                        gchar *prefix_down, *tmp_down;
 
@@ -346,9 +351,20 @@ modest_text_utils_derived_subject (const gchar *subject, gboolean is_reply)
                                break;
                        }
                }
+               first_time = FALSE;
        } while (tmp);
 
-       retval = g_strdup_printf ("%s %s", (untranslated_found) ? untranslated_prefix : prefix, tmp);
+       if (!g_strcmp0 (subject, tmp)) {
+               /* normal case */
+               retval = g_strdup_printf ("%s %s", untranslated_prefix, tmp);
+       } else {
+               if (translated_found) {
+                       /* Found a translated prefix, i.e, "VS:" in Finish */
+                       retval = g_strdup_printf ("%s %s", prefix, tmp);
+               } else {
+                       retval = g_strdup_printf ("%s %s", untranslated_prefix, tmp);
+               }
+       }
        g_free (subject_dup);
        g_free (prefix);
 
@@ -500,7 +516,7 @@ modest_text_utils_convert_buffer_to_html_start (GString *html, const gchar *data
                guchar kar = data[i];
                
                if (space_seen && kar != ' ') {
-                       g_string_append (html, " ");
+                       g_string_append (html, " ");
                        space_seen = FALSE;
                }
                
@@ -530,7 +546,7 @@ modest_text_utils_convert_buffer_to_html_start (GString *html, const gchar *data
 
                /* don't convert ' --> wpeditor will try to re-convert it... */    
                //case '\'' : g_string_append (html, "'"); break;
-               case '\n' : g_string_append (html, "<br>\n");break_dist= 0; break;
+               case '\n' : g_string_append (html, "<br/>\n");break_dist= 0; break;
                case '\t' : g_string_append (html, MARK_AMP_STR "nbsp;" MARK_AMP_STR "nbsp;" MARK_AMP_STR "nbsp; ");
                        break_dist=0; break; /* note the space at the end*/
                case ' ':
@@ -1818,19 +1834,19 @@ modest_text_utils_get_display_size (guint64 size)
        const guint GB=1024 * MB;
 
        if (size == 0)
-               return g_strdup_printf (_FM("sfil_li_size_kb"), (int) 0);
+               return g_strdup_printf (_FM_SIZE_KB, (int) 0);
        if (0 <= size && size < KB)
-               return g_strdup_printf (_FM("sfil_li_size_1kb_99kb"), (int) 1);
+               return g_strdup_printf (_FM_SIZE_1KB_99KB, (int) 1);
        else if (KB <= size && size < 100 * KB)
-               return g_strdup_printf (_FM("sfil_li_size_1kb_99kb"), (int) size / KB);
+               return g_strdup_printf (_FM_SIZE_1KB_99KB, (int) size / KB);
        else if (100*KB <= size && size < MB)
-               return g_strdup_printf (_FM("sfil_li_size_100kb_1mb"), (int) size / KB);
+               return g_strdup_printf (_FM_SIZE_100KB_1MB, (int) size / KB);
        else if (MB <= size && size < 10*MB)
-               return g_strdup_printf (_FM("sfil_li_size_1mb_10mb"), (float) size / MB);
+               return g_strdup_printf (_FM_SIZE_1MB_10MB, (float) size / MB);
        else if (10*MB <= size && size < GB)
-               return g_strdup_printf (_FM("sfil_li_size_10mb_1gb"), (float) size / MB);
+               return g_strdup_printf (_FM_SIZE_10MB_1GB, (float) size / MB);
        else
-               return g_strdup_printf (_FM("sfil_li_size_1gb_or_greater"), (float) size / GB);
+               return g_strdup_printf (_FM_SIZE_1GB_OR_GREATER, (float) size / GB);
 }
 
 static gchar *
@@ -2177,8 +2193,7 @@ static void
 quote_name_part (GString **str, gchar **cur, gchar **start)
 {
        gchar *blank;
-       gint str_len = g_utf8_pointer_to_offset (*start, *cur) -
-               g_utf8_pointer_to_offset (*start, *start);
+       gint str_len = *cur - *start;
 
        while (**start == ' ') {
                *start = g_utf8_next_char (*start);