From d948edc4f31f2c7ec91ea94d8f4c1ad3ca059eb7 Mon Sep 17 00:00:00 2001
From: Chris Allegretta <chrisa@asty.org>
Date: Tue, 2 Oct 2001 00:38:56 +0000
Subject: [PATCH] DLR's latest smooth scroll fix, case where there's not a full
 half page up from the cursor to fileage screws up the cursor position

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@806 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 ChangeLog |  2 +-
 move.c    | 10 +++++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index ede5427b..2c86c0b5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -17,7 +17,7 @@ CVS code -
 	- Mac file writing supported too.  Flag -M, --mac.  Toggle 
 	  Meta-O (MacOS? OS-X? =-)
 	- New smooth scroll code by Ken Tyler.  New flag -S, --smooth,
-	  changes to page_up() and page_down(). Fixes to paging by
+	  changes to page_up() and page_down().  Many fixes to paging by
 	  David Lawrence Ramsey.
 	- Bracket (brace, parens, etc) matching code by Ken Tyler.  
 	  New functions do_find_bracket(), changes to findnextstr(),
diff --git a/move.c b/move.c
index 17d9684f..75c40995 100644
--- a/move.c
+++ b/move.c
@@ -143,7 +143,15 @@ void page_up(void)
     if (edittop != fileage) {
 	if (!ISSET(SMOOTHSCROLL)) {
 	    edit_update(edittop, CENTER);
-	    center_cursor();
+	    /* Now that we've updated the edit window, edittop might be
+	       at the top of the file; if so, just move the cursor up one
+	       line and don't center it. */
+	    if (edittop != fileage)
+		center_cursor();
+	    else {
+		current = current->prev;
+		reset_cursor();
+	    }
 	} else {
 	    edit_update(edittop->prev, NONE);
 	}
-- 
GitLab