From 7598b77e75af321065102acdb016d567c00703dd Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sat, 12 Nov 2016 15:57:42 +0100 Subject: [PATCH] screen: use the correct width to determine whether a softwrap occurred This fixes the two bugs reported by Anton Minaev in https://savannah.gnu.org/bugs/?49511. --- src/nano.c | 6 +++--- src/text.c | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/nano.c b/src/nano.c index c2a90bc3..f58d1fc3 100644 --- a/src/nano.c +++ b/src/nano.c @@ -1936,10 +1936,10 @@ void do_output(char *output, size_t output_len, bool allow_cntrls) #ifndef NANO_TINY ensure_line_is_visible(); - /* Well, we might also need a full refresh if we've changed the - * line length to be a new multiple of COLS. */ + /* If the number of screen rows that a softwrapped line occupies + * has changed, we need a full refresh. */ if (ISSET(SOFTWRAP) && refresh_needed == FALSE) - if (strlenpt(openfile->current->data) / COLS != orig_lenpt / COLS) + if (strlenpt(openfile->current->data) / editwincols != orig_lenpt / editwincols) refresh_needed = TRUE; #endif diff --git a/src/text.c b/src/text.c index ca777094..d75a47e6 100644 --- a/src/text.c +++ b/src/text.c @@ -173,8 +173,10 @@ void do_deletion(undo_type action) #ifndef NANO_TINY ensure_line_is_visible(); + /* If the number of screen rows that a softwrapped line occupies + * has changed, we need a full refresh. */ if (ISSET(SOFTWRAP) && refresh_needed == FALSE) - if (strlenpt(openfile->current->data) / COLS != orig_lenpt / COLS) + if (strlenpt(openfile->current->data) / editwincols != orig_lenpt / editwincols) refresh_needed = TRUE; #endif