commit 3c780e1d10ff9d389f282d1dbceae76f2f19d65f
parent 561db3a7c478c16cb77844e62a64aedc27f66daa
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Fri, 26 May 2006 03:46:03 +0000
fix edit_redraw() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3571 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
1 file changed, 18 insertions(+), 11 deletions(-)
diff --git a/src/winio.c b/src/winio.c
@@ -2817,19 +2817,25 @@ void edit_redraw(const filestruct *old_current, size_t old_pww)
#ifndef NANO_TINY
/* If the mark is on, update all the lines between old_current
- * and the old last line of the edit window. */
+ * and either the old first line or old last line (depending on
+ * whether we've scrolled up or down) of the edit window. */
if (openfile->mark_set) {
- ssize_t old_last_lineno = (old_edittop->lineno +
- editwinrows <= openfile->filebot->lineno) ?
- old_edittop->lineno + editwinrows :
- openfile->filebot->lineno;
+ ssize_t old_lineno;
+
+ if (old_edittop->lineno < openfile->edittop->lineno)
+ old_lineno = old_edittop->lineno;
+ else
+ old_lineno = (old_edittop->lineno + editwinrows <=
+ openfile->filebot->lineno) ?
+ old_edittop->lineno + editwinrows :
+ openfile->filebot->lineno;
foo = old_current;
- while (foo->lineno != old_last_lineno) {
+ while (foo->lineno != old_lineno) {
update_line(foo, 0);
- foo = (foo->lineno > old_last_lineno) ? foo->prev :
+ foo = (foo->lineno > old_lineno) ? foo->prev :
foo->next;
}
}
@@ -2861,13 +2867,14 @@ void edit_redraw(const filestruct *old_current, size_t old_pww)
edit_scroll(DOWN, nlines);
#ifndef NANO_TINY
- /* If the mark is on, update all the lines between the old last
- * line of the edit window and edittop. */
+ /* If the mark is on, update all the lines between the old first
+ * line or old last line of the edit window (depending on
+ * whether we've scrolled up or down) and current. */
if (openfile->mark_set) {
- while (foo != openfile->edittop) {
+ while (foo->lineno != openfile->current->lineno) {
update_line(foo, 0);
- foo = (foo->lineno > openfile->edittop->lineno) ?
+ foo = (foo->lineno > openfile->current->lineno) ?
foo->prev : foo->next;
}
}