]> granicus.if.org Git - mutt/commitdiff
Hack mutt_wstr_trunc to treat M_TREE characters as 1 cell.
authorBrendan Cully <brendan@kublai.com>
Tue, 29 Dec 2009 05:33:20 +0000 (00:33 -0500)
committerBrendan Cully <brendan@kublai.com>
Tue, 29 Dec 2009 05:33:20 +0000 (00:33 -0500)
Closes #3364.

curs_lib.c

index 23a1e56f258d650cc030e741165f607388e4d1ed..88f1559bb35b1ae5cfdb9497d8c2cb5fc9e68ab2 100644 (file)
@@ -883,7 +883,7 @@ int mutt_wstr_trunc (const char *src, size_t maxlen, size_t maxwid, size_t *widt
 {
   wchar_t wc;
   int w = 0, l = 0, cl;
-  size_t cw, n;
+  int cw, n;
   mbstate_t mbstate;
 
   if (!src)
@@ -897,7 +897,13 @@ int mutt_wstr_trunc (const char *src, size_t maxlen, size_t maxwid, size_t *widt
     if (cl == (size_t)(-1) || cl == (size_t)(-2))
       cw = cl = 1;
     else
+    {
       cw = wcwidth (wc);
+      /* hack because M_TREE symbols aren't turned into characters
+       * until rendered by print_enriched_string (#3364) */
+      if (cw < 0 && cl == 1 && src[0] && src[0] < M_TREE_MAX)
+       cw = 1;
+    }
     if (cl + l > maxlen || cw + w > maxwid)
       break;
     l += cl;