From f9a8d6ff4e245d540fe7632dcfcb691235db0509 Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey <pooka109@gmail.com> Date: Sat, 1 Apr 2017 14:32:59 -0500 Subject: [PATCH] scrolling: properly compensate for the onscreen chunks If edittop is partially offscreen before we scroll, and it gets scrolled more offscreen, we do need to compensate for the chunks between firstcolumn and leftedge -- that is: the chunks between the top row and the cursor row. This fixes https://savannah.gnu.org/bugs/?50691. --- src/winio.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/winio.c b/src/winio.c index 245ddb1b..7c145368 100644 --- a/src/winio.c +++ b/src/winio.c @@ -2920,10 +2920,12 @@ void edit_scroll(scroll_dir direction, int nrows) go_forward_chunks(editwinrows - nrows, &line, &leftedge); #ifndef NANO_TINY - /* Compensate for the earlier onscreen chunks of a softwrapped line - * when the first blank row happens to be in the middle of that line. */ - if (ISSET(SOFTWRAP) && line != openfile->edittop) - nrows += leftedge / editwincols; + /* Compensate for the earlier chunks of a softwrapped line. */ + nrows += leftedge / editwincols; + + /* Don't compensate for the chunks that are offscreen. */ + if (line == openfile->edittop) + nrows -= openfile->firstcolumn / editwincols; #endif /* Draw new content on the blank rows inside the scrolled region -- GitLab