commit bf104950fdad32a4a5f5c8376a2e3f81ad94adc5
parent ec15fdb30b780b0f31b0a7232615ee9bdcb6dc8f
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Thu, 6 Jul 2006 20:40:53 +0000
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
Diffstat:
2 files changed, 26 insertions(+), 0 deletions(-)
diff --git 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
@@ -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 */