From 036a3d4646177d8512d6a4c8261a354810b3f835 Mon Sep 17 00:00:00 2001
From: David Lawrence Ramsey <pooka109@gmail.com>
Date: Mon, 15 Nov 2004 21:49:21 +0000
Subject: [PATCH] fix cursor placement problem when inserting into the current
 buffer at the bottom of the edit window with smooth scrolling on

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2098 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 src/files.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/files.c b/src/files.c
index 592aaa3a..0c800228 100644
--- a/src/files.c
+++ b/src/files.c
@@ -499,6 +499,7 @@ void do_insertfile(
     char *ans = mallocstrcpy(NULL, "");
 	/* The last answer the user typed on the statusbar. */
     filestruct *edittop_save = edittop;
+    int current_y_save = current_y;
     bool at_edittop = FALSE;
 	/* Whether we're at the top of the edit window. */
 
@@ -620,6 +621,15 @@ void do_insertfile(
 	    {
 		filestruct *top_save = fileage;
 
+		/* If we didn't insert into a new buffer, and we were at
+		 * the top of the edit window before, set the saved
+		 * value of edittop to the new top of the edit window,
+		 * and update the current y-coordinate to account for
+		 * the number of lines inserted. */
+		if (at_edittop)
+		    edittop_save = fileage;
+		current_y += current_y_save;
+
 		/* If we didn't insert into a new buffer, unpartition
 		 * the filestruct so that it contains all the text
 		 * again.  Note that we've replaced the non-text
@@ -631,12 +641,6 @@ void do_insertfile(
 		 * partition. */
 		renumber(top_save);
 
-		/* If we were at the top of the edit window before, set
-		 * the saved value of edittop to the new top of the edit
-		 * window. */
-		if (at_edittop)
-		    edittop_save = fileage;
-
 		/* Set edittop back to what it was before. */
 		edittop = edittop_save;
 	    }
-- 
GitLab