Fix for bug NB#81584.
[modest] / src / modest-text-utils.c
index f2ca840..5906bb7 100644 (file)
@@ -653,6 +653,30 @@ modest_text_utils_address_range_at_position (const gchar *recipients_list,
                *end = range_end;
 }
 
+gchar *
+modest_text_utils_address_with_standard_length (const gchar *recipients_list)
+{
+       gchar ** splitted;
+       gchar ** current;
+       GString *buffer = g_string_new ("");
+
+       splitted = g_strsplit (recipients_list, "\n", 0);
+       current = splitted;
+       while (*current) {
+               gchar *line;
+               if (current != splitted)
+                       buffer = g_string_append_c (buffer, '\n');
+               line = g_strndup (*splitted, 1000);
+               buffer = g_string_append (buffer, line);
+               g_free (line);
+               current++;
+       }
+
+       g_strfreev (splitted);
+
+       return g_string_free (buffer, FALSE);
+}
+
 
 /* ******************************************************************* */
 /* ************************* UTILIY FUNCTIONS ************************ */
@@ -834,10 +858,15 @@ modest_text_utils_quote_plain_text (const gchar *text,
        gsize len;
        gchar *attachments_string = NULL;
 
-       /* remaining will store the rest of the line if we have to break it */
        q = g_string_new ("\n");
+       if (signature != NULL) {
+               q = g_string_append (q, signature);
+               q = g_string_append_c (q, '\n');
+       }
        q = g_string_append (q, cite);
        q = g_string_append_c (q, '\n');
+
+       /* remaining will store the rest of the line if we have to break it */
        remaining = g_string_new ("");
 
        iter = text;
@@ -884,11 +913,6 @@ modest_text_utils_quote_plain_text (const gchar *text,
        q = g_string_append (q, attachments_string);
        g_free (attachments_string);
 
-       if (signature != NULL) {
-               q = g_string_append_c (q, '\n');
-               q = g_string_append (q, signature);
-       }
-
        return g_string_free (q, FALSE);
 }
 
@@ -1687,3 +1711,23 @@ modest_text_utils_buffer_selection_is_valid (GtkTextBuffer *buffer)
 
        return result;
 }
+
+gchar *
+modest_text_utils_escape_mnemonics (const gchar *text)
+{
+       const gchar *p;
+       GString *result = NULL;
+
+       if (text == NULL)
+               return NULL;
+
+       result = g_string_new ("");
+       for (p = text; *p != '\0'; p++) {
+               if (*p == '_')
+                       result = g_string_append (result, "__");
+               else
+                       result = g_string_append_c (result, *p);
+       }
+       
+       return g_string_free (result, FALSE);
+}