GUI: use cursor in TextEdit for non selected text.

This commit is contained in:
Sergey Minakov 2020-12-16 05:05:16 +03:00
parent 8b6357cf28
commit f1fd0440f3
1 changed files with 10 additions and 7 deletions

View File

@ -1756,16 +1756,19 @@ void TextEdit::_notification(int p_what) {
OS::get_singleton()->set_ime_position(get_global_position() + cursor_pos); OS::get_singleton()->set_ime_position(get_global_position() + cursor_pos);
if (OS::get_singleton()->has_virtual_keyboard() && virtual_keyboard_enabled) { if (OS::get_singleton()->has_virtual_keyboard() && virtual_keyboard_enabled) {
String text = _base_get_text(0, 0, selection.selecting_line, selection.selecting_column); int cursor_start = -1;
int cursor_start = text.length();
int cursor_end = -1; int cursor_end = -1;
if (selection.active) { if (!selection.active) {
String selected_text = _base_get_text(selection.from_line, selection.from_column, selection.to_line, selection.to_column); String full_text = _base_get_text(0, 0, cursor.line, cursor.column);
if (selected_text.length() > 0) { cursor_start = full_text.length();
cursor_end = cursor_start + selected_text.length(); } else {
} String pre_text = _base_get_text(0, 0, selection.from_line, selection.from_column);
String post_text = _base_get_text(selection.from_line, selection.from_column, selection.to_line, selection.to_column);
cursor_start = pre_text.length();
cursor_end = cursor_start + post_text.length();
} }
OS::get_singleton()->show_virtual_keyboard(get_text(), get_global_rect(), true, -1, cursor_start, cursor_end); OS::get_singleton()->show_virtual_keyboard(get_text(), get_global_rect(), true, -1, cursor_start, cursor_end);