浏览代码

Merge pull request #14983 from Paulb23/keyboard_selection_issue_14675

Fixed keyboard word selection when at the start/end of line, issue 14675
Rémi Verschelde 7 年之前
父节点
当前提交
d7d8fc6c20
共有 1 个文件被更改,包括 18 次插入24 次删除
  1. 18 24
      scene/gui/text_edit.cpp

+ 18 - 24
scene/gui/text_edit.cpp

@@ -2581,22 +2581,19 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
 					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]);
+					} else {
+						while (cc > 0) {
+							bool ischar = _is_text_char(text[cursor.line][cc - 1]);
 
-						if (prev_char && !ischar)
-							break;
+							if (prev_char && !ischar)
+								break;
 
-						prev_char = ischar;
-						cc--;
+							prev_char = ischar;
+							cc--;
+						}
+						cursor_set_column(cc);
 					}
 
-					cursor_set_column(cc);
-
 				} else if (cursor.column == 0) {
 
 					if (cursor.line > 0) {
@@ -2645,21 +2642,18 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
 					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]);
+					} else {
+						while (cc < text[cursor.line].length()) {
+							bool ischar = _is_text_char(text[cursor.line][cc]);
 
-						if (prev_char && !ischar)
-							break;
-						prev_char = ischar;
-						cc++;
+							if (prev_char && !ischar)
+								break;
+							prev_char = ischar;
+							cc++;
+						}
+						cursor_set_column(cc);
 					}
 
-					cursor_set_column(cc);
-
 				} else if (cursor.column == text[cursor.line].length()) {
 
 					if (cursor.line < text.size() - 1) {