1
1

selecting: do not cancel the softmark when the cursor is not moved

The softmark is now only cancelled when the cursor is moved without
Shift being held, not for things like ^L (Refresh), ^C (Position),
or ^G (Help).

This addresses https://savannah.gnu.org/bugs/?52470.
Этот коммит содержится в:
Benno Schulenberg 2017-11-25 20:06:17 +01:00
родитель 1e718cec35
Коммит 88a0bb9685

Просмотреть файл

@ -1687,6 +1687,9 @@ int do_input(bool allow_funcs)
#endif #endif
{ {
#ifndef NANO_TINY #ifndef NANO_TINY
filestruct *was_current = openfile->current;
size_t was_x = openfile->current_x;
/* If Shifted movement occurs, set the mark. */ /* If Shifted movement occurs, set the mark. */
if (shift_held && !openfile->mark) { if (shift_held && !openfile->mark) {
openfile->mark = openfile->current; openfile->mark = openfile->current;
@ -1699,7 +1702,9 @@ int do_input(bool allow_funcs)
#ifndef NANO_TINY #ifndef NANO_TINY
/* If Shiftless movement occurred, discard a soft mark. */ /* If Shiftless movement occurred, discard a soft mark. */
if (!shift_held && openfile->mark && if (!shift_held && openfile->mark &&
openfile->kind_of_mark == SOFTMARK) { openfile->kind_of_mark == SOFTMARK &&
(openfile->current_x != was_x ||
openfile->current != was_current)) {
openfile->mark = NULL; openfile->mark = NULL;
refresh_needed = TRUE; refresh_needed = TRUE;
} }