]> git.wh0rd.org Git - nano.git/commitdiff
fix cursor placement problem when inserting into the current buffer at
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Mon, 15 Nov 2004 20:42:31 +0000 (20:42 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Mon, 15 Nov 2004 20:42:31 +0000 (20:42 +0000)
the top of the edit window

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2097 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

src/files.c

index 07e5a247e30fdc332a83d64d151a56b59d7034c9..592aaa3a52f11ba4d11830db4a1fea0fd1c767cc 100644 (file)
@@ -499,6 +499,8 @@ void do_insertfile(
     char *ans = mallocstrcpy(NULL, "");
        /* The last answer the user typed on the statusbar. */
     filestruct *edittop_save = edittop;
+    bool at_edittop = FALSE;
+       /* Whether we're at the top of the edit window. */
 
 #ifndef DISABLE_WRAPPING
     wrap_reset();
@@ -591,11 +593,12 @@ void do_insertfile(
 #endif
                /* If we're not inserting into a new buffer, partition
                 * the filestruct so that it contains no text and hence
-                * looks like a new buffer, and set edittop to the top
-                * of the partition. */
+                * looks like a new buffer, and keep track of whether
+                * the top of the partition is the top of the edit
+                * window. */
                filepart = partition_filestruct(current, current_x,
                        current, current_x);
-               edittop = fileage;
+               at_edittop = (fileage == edittop);
 #ifdef ENABLE_MULTIBUFFER
            }
 #endif
@@ -628,6 +631,12 @@ 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;
            }