Merge pull request #51732 from codecat/fix-caret-selection-3.x

Move cursor to edge of selection when moving caret left/right
This commit is contained in:
Rémi Verschelde 2021-08-18 20:12:19 +02:00 committed by GitHub
commit a67eaa67b0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2817,7 +2817,7 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
_reset_caret_blink_timer();
// Save here for insert mode, just in case it is cleared in the following section.
// Save here for insert mode as well as arrow navigation, just in case it is cleared in the following section.
bool had_selection = selection.active;
// Stuff to do when selection is active.
@ -3173,6 +3173,11 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
case KEY_LEFT: {
if (k->get_shift()) {
_pre_shift_selection();
} else if (had_selection && !k->get_command() && !k->get_alt()) {
cursor_set_line(selection.from_line);
cursor_set_column(selection.from_column);
deselect();
break;
#ifdef APPLE_STYLE_KEYS
} else {
#else
@ -3250,6 +3255,11 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
case KEY_RIGHT: {
if (k->get_shift()) {
_pre_shift_selection();
} else if (had_selection && !k->get_command() && !k->get_alt()) {
cursor_set_line(selection.to_line);
cursor_set_column(selection.to_column);
deselect();
break;
#ifdef APPLE_STYLE_KEYS
} else {
#else