From 47bb888ad2b4e57d76a9babff705ebb055681494 Mon Sep 17 00:00:00 2001
From: David Lawrence Ramsey <pooka109@gmail.com>
Date: Fri, 22 Jul 2005 22:56:03 +0000
Subject: [PATCH] revert broken edit_scroll() changes for now

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2911 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 ChangeLog   | 18 +++++++++---------
 src/winio.c | 22 +++++++++++-----------
 2 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 0413b364..ee241247 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -36,15 +36,15 @@ CVS code -
 	- Consistently make the flags global and any variables used to
 	  hold it longs. (DLR)
 	- Make edit_scroll() sophisticated enough to keep track of
-	  current and current_x, update the lines before and after the
-	  scrolled region, and properly scroll more than editwinrows
-	  lines; and change the movement functions that use
-	  edit_scroll() to (a) set current and current_x before calling
-	  it, and (b) no longer call edit_redraw() afterward, as it's
-	  now unnecessary.  These changes eliminate redundant screen
-	  updates when the mark is on, since the mark display depends on
-	  current and current_x.  Changes to edit_scroll(),
-	  do_page_up(), do_page_down(), do_up(), and do_down(). (DLR)
+	  current and current_x and update the lines before and after
+	  the scrolled region, and change the movement functions that
+	  use edit_scroll() to (a) set current and current_x before
+	  calling it, and (b) no longer call edit_redraw() afterward,
+	  since it's now unnecessary.  These changes eliminate
+	  redundant screen updates when the mark is on, since the mark
+	  display depends on current and current_x.  Changes to
+	  edit_scroll(), do_page_up(), do_page_down(), do_up(), and
+	  do_down(). (DLR)
 	- Consistently make the fg and bg colortype struct entries and
 	  any variables used to hold them shorts.  Changes to
 	  do_colorinit() (renamed color_init()), color_to_int() (renamed
diff --git a/src/winio.c b/src/winio.c
index fed7582a..9c0b9dc9 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -3496,8 +3496,9 @@ void edit_scroll(updown direction, int nlines)
     const filestruct *foo;
     int i;
 
-    /* Don't bother scrolling less than one line. */
-    if (nlines < 1)
+    /* Scrolling less than one line or more than editwinrows lines is
+     * redundant, so don't allow it. */
+    if (nlines < 1 || nlines > editwinrows)
 	return;
 
     /* Move the top line of the edit window up or down (depending on the
@@ -3515,27 +3516,26 @@ void edit_scroll(updown direction, int nlines)
 	}
     }
 
+    /* Scroll the text on the screen up or down nlines lines, depending
+     * on the value of direction. */
+    scrollok(edit, TRUE);
+    wscrl(edit, (direction == UP) ? -nlines : nlines);
+    scrollok(edit, FALSE);
+
     /* If we scrolled up, we couldn't scroll up all nlines lines, and
      * we're now at the top of the file, we need to treat the entire
      * screen as the scrolled region, instead of just the top nlines
      * lines. */
     if (direction == UP && i > 0 && openfile->edittop ==
 	openfile->fileage)
-	nlines = editwinrows - 2;
+	nlines = editwinrows;
 
     /* Make nlines account for the lines before and after the scrolled
-     * region, if they're onscreen, and then put nlines in range of
-     * editwinrows. */
+     * region, if they're onsccreen. */
     nlines += 2;
     if (nlines > editwinrows)
 	nlines = editwinrows;
 
-    /* Scroll the text on the screen up or down nlines lines, depending
-     * on the value of direction. */
-    scrollok(edit, TRUE);
-    wscrl(edit, (direction == UP) ? -nlines : nlines);
-    scrollok(edit, FALSE);
-
     /* If we scrolled up, we're on the line before the scrolled
      * region. */
     foo = openfile->edittop;
-- 
GitLab