commit 6f4f1878fc95f3b888be72347eb890e1091addd6
parent 082e5db4b7937e14eae95452a45dc1debb7d70ed
Author: Benno Schulenberg <bensberg@telfort.nl>
Date: Sun, 25 Feb 2018 10:16:26 +0100
selecting: cancel the softmark upon any attempt to move the cursor
This assumes that all movement functions are located together,
starting with to_first_line() and ending with do_right().
This fixes https://savannah.gnu.org/bugs/?53195.
Reported-by: Brand Huntsman <alpha@qzx.com>
Diffstat:
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/nano.c b/src/nano.c
@@ -1762,9 +1762,12 @@ int do_input(bool allow_funcs)
/* When the marked region changes without Shift being held,
* discard a soft mark. And when the marked region covers a
* different set of lines, reset the "last line too" flag. */
- if (openfile->mark && (openfile->current != was_current ||
- openfile->current_x != was_x)) {
- if (!shift_held && openfile->kind_of_mark == SOFTMARK) {
+ if (openfile->mark) {
+ if (!shift_held && openfile->kind_of_mark == SOFTMARK &&
+ (openfile->current != was_current ||
+ openfile->current_x != was_x ||
+ (shortcut->func >= to_first_line &&
+ shortcut->func <= do_right))) {
openfile->mark = NULL;
refresh_needed = TRUE;
} else if (openfile->current != was_current)