commit 4a1835fd9387344eb916a922957adeff659242fd
parent c67ab656dc8cb10aa6038315bd333440d1e2c0ce
Author: Benno Schulenberg <bensberg@justemail.net>
Date: Sat, 31 Oct 2015 19:03:53 +0000
Refreshing the mark's pointer only when it is on the same line as the cursor,
and recalculating the mark's x coordinate only when the mark comes after it.
Also correcting the recalculation in one case.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5384 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,9 @@
+2015-10-31 Benno Schulenberg <bensberg@justemail.net>
+ * src/nano.c (copy_from_filestruct): When pasting while the mark is
+ on, the mark's pointer needs to be refreshed only when it is on the
+ same line as the cursor, and the mark's x coordinate only when the
+ mark is located after the cursor. This fixes Savannah bug #46347.
+
2015-10-29 Benno Schulenberg <bensberg@justemail.net>
* src/text.c (add_undo): Only skip adding an undo when the current
action equals the last action. This condition is needed for when
diff --git a/src/nano.c b/src/nano.c
@@ -458,7 +458,7 @@ void copy_from_filestruct(filestruct *somebuffer)
openfile->current_x = strlen(openfile->filebot->data);
if (openfile->fileage == openfile->filebot) {
#ifndef NANO_TINY
- if (openfile->mark_set) {
+ if (openfile->mark_set && single_line) {
openfile->mark_begin = openfile->current;
if (!right_side_up)
openfile->mark_begin_x += openfile->current_x;
@@ -476,9 +476,8 @@ void copy_from_filestruct(filestruct *somebuffer)
} else {
if (single_line) {
openfile->mark_begin = openfile->current;
- openfile->mark_begin_x -= current_x_save;
- } else
- openfile->mark_begin_x -= openfile->current_x;
+ openfile->mark_begin_x += openfile->current_x - current_x_save;
+ }
}
}
#endif