Ver código fonte

TextEdit: Moving between words now works across lines.

Fixes #10403
Andreas Haas 8 anos atrás
pai
commit
3f2d806b02
1 arquivos alterados com 14 adições e 0 exclusões
  1. 14 0
      scene/gui/text_edit.cpp

+ 14 - 0
scene/gui/text_edit.cpp

@@ -2248,6 +2248,13 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
 #endif
 					bool prev_char = false;
 					int cc = cursor.column;
+
+					if (cc == 0 && cursor.line > 0) {
+						cursor_set_line(cursor.line - 1);
+						cursor_set_column(text[cursor.line].length());
+						break;
+					}
+
 					while (cc > 0) {
 
 						bool ischar = _is_text_char(text[cursor.line][cc - 1]);
@@ -2305,6 +2312,13 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
 #endif
 					bool prev_char = false;
 					int cc = cursor.column;
+
+					if (cc == text[cursor.line].length() && cursor.line < text.size() - 1) {
+						cursor_set_line(cursor.line + 1);
+						cursor_set_column(0);
+						break;
+					}
+
 					while (cc < text[cursor.line].length()) {
 
 						bool ischar = _is_text_char(text[cursor.line][cc]);