nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit f9a8d6ff4e245d540fe7632dcfcb691235db0509
parent c3830517cc16c55230ec8b8a67806f5c4259614c
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date:   Sat,  1 Apr 2017 14:32:59 -0500

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.

Diffstat:
Msrc/winio.c | 10++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

diff --git 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