]> git.wh0rd.org Git - nano.git/commitdiff
Telling ncurses to really redraw the line, without optimization.
authorBenno Schulenberg <bensberg@justemail.net>
Fri, 23 May 2014 20:24:31 +0000 (20:24 +0000)
committerBenno Schulenberg <bensberg@justemail.net>
Fri, 23 May 2014 20:24:31 +0000 (20:24 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4907 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/winio.c

index db1151a7f91c8e08f0dd6dc19fc5c2331ad03224..a12556314a23e90d83753c0c7bf0e35f5b8e81b0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2014-05-23  Benno Schulenberg  <bensberg@justemail.net>
+       * src/winio.c (edit_draw): Finally, the proper fix for bug #31743;
+       telling ncurses to really redraw the line, without optimization, so
+       it will not mistakenly assume that a wide character at the start of
+       a line takes up just one column.  This deletes the workaround that
+       had the side effect of creating pastes full of trailing whitespace.
+
 2014-05-19  Mark Majeres  <mark@engine12.com>
        * src/winio.c (edit_draw): Paint the current line *after* tickling the
        terminal, so that the character in the final column will be displayed
index 002b71cc8aeb18b43b2fa629533b8780e066b876..690d7f392204e40843e2779764e3a9860f0d6566 100644 (file)
@@ -2492,15 +2492,13 @@ void edit_draw(filestruct *fileptr, const char *converted, int
     assert(openfile != NULL && fileptr != NULL && converted != NULL);
     assert(strlenpt(converted) <= COLS);
 
-#ifdef ENABLE_UTF8
-    if (using_utf8())
-       /* Tickle the terminal into displaying two-column characters
-        * properly, using Unicode 00A0 (No-Break Space). */
-       mvwaddstr(edit, line, COLS - 1, "\xC2\xA0\x00");
-#endif
     /* First simply paint the line -- then we'll add colors or the
      * marking highlight on just the pieces that need it. */
     mvwaddstr(edit, line, 0, converted);
+    /* Tell ncurses to really redraw the line without trying to optimize
+       for what it thinks is already there, because it gets it wrong in
+       the case of a wide character in column zero.  See bug #31743. */
+    wredrawln(edit, line, 1);
 
 #ifndef DISABLE_COLOR
     /* If color syntaxes are available and turned on, we need to display