Browse Source

Merge pull request #36050 from eswartz/line-edit-move-cursor-on-unselect

Use left/right arrow to move cursor when unselecting in LineEdit
Rémi Verschelde 5 years ago
parent
commit
d94155e10b
1 changed files with 24 additions and 3 deletions
  1. 24 3
      scene/gui/line_edit.cpp

+ 24 - 3
scene/gui/line_edit.cpp

@@ -358,11 +358,20 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) {
 					[[fallthrough]];
 				}
 				case KEY_LEFT: {
-
 #ifndef APPLE_STYLE_KEYS
-					if (!k->get_alt())
+					if (!k->get_alt()) {
 #endif
+						if (selection.enabled && !k->get_shift()) {
+							set_cursor_position(selection.begin);
+							deselect();
+							handled = true;
+							break;
+						}
+
 						shift_selection_check_pre(k->get_shift());
+#ifndef APPLE_STYLE_KEYS
+					}
+#endif
 
 #ifdef APPLE_STYLE_KEYS
 					if (k->get_command()) {
@@ -405,8 +414,20 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) {
 					[[fallthrough]];
 				}
 				case KEY_RIGHT: {
+#ifndef APPLE_STYLE_KEYS
+					if (!k->get_alt()) {
+#endif
+						if (selection.enabled && !k->get_shift()) {
+							set_cursor_position(selection.end);
+							deselect();
+							handled = true;
+							break;
+						}
 
-					shift_selection_check_pre(k->get_shift());
+						shift_selection_check_pre(k->get_shift());
+#ifndef APPLE_STYLE_KEYS
+					}
+#endif
 
 #ifdef APPLE_STYLE_KEYS
 					if (k->get_command()) {