From: David Lawrence Ramsey Date: Thu, 6 Jul 2006 20:40:53 +0000 (+0000) Subject: in do_scroll_up() and do_scroll_down(), fix problems where, after X-Git-Tag: v1.9.99pre1~99 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=bf104950fdad32a4a5f5c8376a2e3f81ad94adc5;p=nano.git in do_scroll_up() and do_scroll_down(), fix problems where, after scrolling, the previous and current lines would not be updated properly if the current line was not the first or last line of the edit window git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3762 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- diff --git a/ChangeLog b/ChangeLog index e56a8713..dfd4bec1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -71,6 +71,12 @@ CVS code - - help.c: do_help() - Simplify screen update handling and exiting. (DLR) +- move.c: + do_scroll_up(), do_scroll_down() + - Fix problems where, after scrolling, the previous and current + lines would not be updated properly if the current line was + not the first or last line of the edit window. (DLR, found by + Mike Frysinger) - winio.c: display_string() - Properly handle buf[start_index]'s being a null terminator. diff --git a/src/move.c b/src/move.c index 76b22275..f7f770b6 100644 --- a/src/move.c +++ b/src/move.c @@ -522,6 +522,16 @@ void do_scroll_up(void) /* Scroll the edit window up one line. */ edit_scroll(UP, 1); + + /* If we're not on the first line of the edit window, update the + * line we were on before and the line we're on now. The former + * needs to be redrawn if we're not on the first page, and the + * latter needs to be drawn unconditionally. */ + if (openfile->current_y > 0) { + if (need_vertical_update(0)) + update_line(openfile->current->next, 0); + update_line(openfile->current, openfile->current_x); + } } #endif /* !NANO_TINY */ @@ -576,6 +586,16 @@ void do_scroll_down(void) /* Scroll the edit window down one line. */ edit_scroll(DOWN, 1); + + /* If we're not on the last line of the edit window, update the line + * we were on before and the line we're on now. The former needs to + * be redrawn if we're not on the first page, and the latter needs + * to be drawn unconditionally. */ + if (openfile->current_y < editwinrows - 1) { + if (need_vertical_update(0)) + update_line(openfile->current->prev, 0); + update_line(openfile->current, openfile->current_x); + } } #endif /* !NANO_TINY */