Merge pull request #14983 from Paulb23/keyboard_selection_issue_14675
Fixed keyboard word selection when at the start/end of line, issue 14675
This commit is contained in:
commit
d7d8fc6c20
|
@ -2581,22 +2581,19 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
|
||||||
if (cc == 0 && cursor.line > 0) {
|
if (cc == 0 && cursor.line > 0) {
|
||||||
cursor_set_line(cursor.line - 1);
|
cursor_set_line(cursor.line - 1);
|
||||||
cursor_set_column(text[cursor.line].length());
|
cursor_set_column(text[cursor.line].length());
|
||||||
break;
|
} else {
|
||||||
|
while (cc > 0) {
|
||||||
|
bool ischar = _is_text_char(text[cursor.line][cc - 1]);
|
||||||
|
|
||||||
|
if (prev_char && !ischar)
|
||||||
|
break;
|
||||||
|
|
||||||
|
prev_char = ischar;
|
||||||
|
cc--;
|
||||||
|
}
|
||||||
|
cursor_set_column(cc);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (cc > 0) {
|
|
||||||
|
|
||||||
bool ischar = _is_text_char(text[cursor.line][cc - 1]);
|
|
||||||
|
|
||||||
if (prev_char && !ischar)
|
|
||||||
break;
|
|
||||||
|
|
||||||
prev_char = ischar;
|
|
||||||
cc--;
|
|
||||||
}
|
|
||||||
|
|
||||||
cursor_set_column(cc);
|
|
||||||
|
|
||||||
} else if (cursor.column == 0) {
|
} else if (cursor.column == 0) {
|
||||||
|
|
||||||
if (cursor.line > 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) {
|
if (cc == text[cursor.line].length() && cursor.line < text.size() - 1) {
|
||||||
cursor_set_line(cursor.line + 1);
|
cursor_set_line(cursor.line + 1);
|
||||||
cursor_set_column(0);
|
cursor_set_column(0);
|
||||||
break;
|
} 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++;
|
||||||
|
}
|
||||||
|
cursor_set_column(cc);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (cc < text[cursor.line].length()) {
|
|
||||||
|
|
||||||
bool ischar = _is_text_char(text[cursor.line][cc]);
|
|
||||||
|
|
||||||
if (prev_char && !ischar)
|
|
||||||
break;
|
|
||||||
prev_char = ischar;
|
|
||||||
cc++;
|
|
||||||
}
|
|
||||||
|
|
||||||
cursor_set_column(cc);
|
|
||||||
|
|
||||||
} else if (cursor.column == text[cursor.line].length()) {
|
} else if (cursor.column == text[cursor.line].length()) {
|
||||||
|
|
||||||
if (cursor.line < text.size() - 1) {
|
if (cursor.line < text.size() - 1) {
|
||||||
|
|
Loading…
Reference in New Issue