From 0ae38b4ef857783b58f67ae3798a4e58ec821f23 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Fri, 23 May 2014 20:24:31 +0000 Subject: [PATCH] Telling ncurses to really redraw the line, without optimization. git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4907 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 7 +++++++ src/winio.c | 10 ++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index db1151a7..a1255631 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2014-05-23 Benno Schulenberg + * 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 * src/winio.c (edit_draw): Paint the current line *after* tickling the terminal, so that the character in the final column will be displayed diff --git a/src/winio.c b/src/winio.c index 002b71cc..690d7f39 100644 --- a/src/winio.c +++ b/src/winio.c @@ -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