commit bc876ca729e9ba93ec2ae4ca1757d736eb1878b2
parent 9cf980700c305db8f3040c8b0e157a0ea56d1752
Author: Benno Schulenberg <bensberg@justemail.net>
Date: Tue, 28 Mar 2017 10:23:27 +0200
moving: /do/ redraw the prior line when the viewport hasn't changed
The complementary test on current_y should only be done when doing
a scroll-only, because only then the prior line can be offscreen.
This fixes https://savannah.gnu.org/bugs/?50658.
Reported-by: David Lawrence Ramsey <pooka109@gmail.com>
Diffstat:
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/move.c b/src/move.c
@@ -489,11 +489,12 @@ void do_up(bool scroll_only)
1 : editwinrows / 2 + 1);
/* If the lines weren't already redrawn, see if they need to be. */
- if (openfile->current_y > 0 && openfile->current_y < editwinrows - 1) {
+ if (openfile->current_y > 0) {
/* Redraw the prior line if it's not actually the same line as the
* current one (which it might be in softwrap mode, if we moved just
* one chunk) and the line was horizontally scrolled. */
if (openfile->current != was_current
+ && (!scroll_only || openfile->current_y < editwinrows - 1)
&& line_needs_update(was_column, 0))
update_line(openfile->current->next, 0);
/* Redraw the current line if it needs to be horizontally scrolled. */
@@ -545,11 +546,12 @@ void do_down(bool scroll_only)
1 : editwinrows / 2 + 1);
/* If the lines weren't already redrawn, see if they need to be. */
- if (openfile->current_y > 0 && openfile->current_y < editwinrows - 1) {
+ if (openfile->current_y < editwinrows - 1) {
/* Redraw the prior line if it's not actually the same line as the
* current one (which it might be in softwrap mode, if we moved just
* one chunk) and the line was horizontally scrolled. */
if (openfile->current != was_current &&
+ (!scroll_only || openfile->current_y > 0) &&
line_needs_update(was_column, 0))
update_line(openfile->current->prev, 0);
/* Redraw the current line if it needs to be horizontally scrolled. */