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-d3aeb78583b8master
parent
4a3879f1ed
commit
036a3d4646
16
src/files.c
16
src/files.c
|
@ -499,6 +499,7 @@ void do_insertfile(
|
||||||
char *ans = mallocstrcpy(NULL, "");
|
char *ans = mallocstrcpy(NULL, "");
|
||||||
/* The last answer the user typed on the statusbar. */
|
/* The last answer the user typed on the statusbar. */
|
||||||
filestruct *edittop_save = edittop;
|
filestruct *edittop_save = edittop;
|
||||||
|
int current_y_save = current_y;
|
||||||
bool at_edittop = FALSE;
|
bool at_edittop = FALSE;
|
||||||
/* Whether we're at the top of the edit window. */
|
/* Whether we're at the top of the edit window. */
|
||||||
|
|
||||||
|
@ -620,6 +621,15 @@ void do_insertfile(
|
||||||
{
|
{
|
||||||
filestruct *top_save = fileage;
|
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
|
/* If we didn't insert into a new buffer, unpartition
|
||||||
* the filestruct so that it contains all the text
|
* the filestruct so that it contains all the text
|
||||||
* again. Note that we've replaced the non-text
|
* again. Note that we've replaced the non-text
|
||||||
|
@ -631,12 +641,6 @@ void do_insertfile(
|
||||||
* partition. */
|
* partition. */
|
||||||
renumber(top_save);
|
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. */
|
/* Set edittop back to what it was before. */
|
||||||
edittop = edittop_save;
|
edittop = edittop_save;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue