commit 036a3d4646177d8512d6a4c8261a354810b3f835
parent 4a3879f1edf2c6055fe8bf591915f2db5c1a3db8
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Mon, 15 Nov 2004 21:49:21 +0000
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
Diffstat:
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git 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;
}