From 6f4f1878fc95f3b888be72347eb890e1091addd6 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sun, 25 Feb 2018 10:16:26 +0100 Subject: [PATCH] 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 --- src/nano.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/nano.c b/src/nano.c index ebff9675..4f614597 100644 --- 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)