Browse Source

GUI: send cursor data from TextEdit

Sergey Minakov 4 năm trước cách đây
mục cha
commit
8894c64e54
1 tập tin đã thay đổi với 13 bổ sung1 xóa
  1. 13 1
      scene/gui/text_edit.cpp

+ 13 - 1
scene/gui/text_edit.cpp

@@ -1559,7 +1559,19 @@ void TextEdit::_notification(int p_what) {
 			}
 
 			if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_VIRTUAL_KEYBOARD) && virtual_keyboard_enabled) {
-				DisplayServer::get_singleton()->virtual_keyboard_show(get_text(), get_global_rect(), true);
+				String text = _base_get_text(0, 0, selection.selecting_line, selection.selecting_column);
+				int cursor_start = text.length();
+				int cursor_end = -1;
+
+				if (selection.active) {
+					String selected_text = _base_get_text(selection.from_line, selection.from_column, selection.to_line, selection.to_column);
+
+					if (selected_text.length() > 0) {
+						cursor_end = cursor_start + selected_text.length();
+					}
+				}
+
+				DisplayServer::get_singleton()->virtual_keyboard_show(get_text(), get_global_rect(), true, -1, cursor_start, cursor_end);
 			}
 		} break;
 		case NOTIFICATION_FOCUS_EXIT: {