diff --git a/src/winio.c b/src/winio.c index 3c0683660eae62ead03709397b1cc11f754c29f4..c3dd8d34d73fd257fc6e2efc625835f4e04d1cb4 100644 --- a/src/winio.c +++ b/src/winio.c @@ -2929,12 +2929,14 @@ void edit_scroll(scroll_dir direction, int nrows) } /* Draw new lines on any blank rows before or inside the scrolled region. - * If we scrolled down and we're on the top row, or if we scrolled up and - * we're on the bottom row, the row won't be blank, so we don't need to - * draw it unless the mark is on or we're not on the first "page". */ + * If we're not in softwrap mode, we can optimize one case: if we scrolled + * forward and we're on the top row, or if we scrolled backward and we're + * on the bottom row, the row won't be blank, so we don't need to draw it + * unless the mark is on or we're not on the first "page". */ for (i = nrows; i > 0 && line != NULL; i--) { - if ((i == nrows && direction == DOWNWARD) || - (i == 1 && direction == UPWARD)) { + if (!ISSET(SOFTWRAP) && + ((i == 1 && direction == UPWARD) || + (i == nrows && direction == DOWNWARD))) { if (line_needs_update(openfile->placewewant, 0)) update_line(line, (line == openfile->current) ? openfile->current_x : 0);