]> git.wh0rd.org Git - nano.git/commitdiff
Refreshing the mark's pointer only when it is on the same line as the cursor,
authorBenno Schulenberg <bensberg@justemail.net>
Sat, 31 Oct 2015 19:03:53 +0000 (19:03 +0000)
committerBenno Schulenberg <bensberg@justemail.net>
Sat, 31 Oct 2015 19:03:53 +0000 (19:03 +0000)
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

ChangeLog
src/nano.c

index 5ef36b31c39e15397169e3d2e256c543d1d80cd2..77cc02caeac561d4f7183914b7d0d68106565fda 100644 (file)
--- 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
index bd249f3d2d6777316bf5fe979aa0e3f313cdcbba..c88ce0b4f7ddba7a84d3f8b87a9d3b4dbcfd1f2f 100644 (file)
@@ -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