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
This commit is contained in:
David Lawrence Ramsey 2006-07-06 20:40:53 +00:00
parent ec15fdb30b
commit bf104950fd
2 changed files with 26 additions and 0 deletions

View File

@ -71,6 +71,12 @@ CVS code -
- help.c: - help.c:
do_help() do_help()
- Simplify screen update handling and exiting. (DLR) - 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: - winio.c:
display_string() display_string()
- Properly handle buf[start_index]'s being a null terminator. - Properly handle buf[start_index]'s being a null terminator.

View File

@ -522,6 +522,16 @@ void do_scroll_up(void)
/* Scroll the edit window up one line. */ /* Scroll the edit window up one line. */
edit_scroll(UP, 1); 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 */ #endif /* !NANO_TINY */
@ -576,6 +586,16 @@ void do_scroll_down(void)
/* Scroll the edit window down one line. */ /* Scroll the edit window down one line. */
edit_scroll(DOWN, 1); 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 */ #endif /* !NANO_TINY */