diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index edd02fe0f51..5939c198ee3 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -2817,7 +2817,7 @@ void TextEdit::_gui_input(const Ref &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 &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 &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