Merge pull request #80650 from bruvzg/comp_char_fix
[TextServer] Fix system font fallback and caret/selection behavior for composite characters.
This commit is contained in:
@ -2297,34 +2297,6 @@ TEST_CASE("[SceneTree][TextEdit] text entry") {
|
||||
SIGNAL_CHECK("caret_changed", empty_signal_args);
|
||||
SIGNAL_CHECK("text_changed", empty_signal_args);
|
||||
SIGNAL_CHECK("lines_edited_from", lines_edited_args);
|
||||
|
||||
text_edit->set_caret_mid_grapheme_enabled(false);
|
||||
CHECK_FALSE(text_edit->is_caret_mid_grapheme_enabled());
|
||||
|
||||
text_edit->start_action(TextEdit::EditAction::ACTION_NONE);
|
||||
|
||||
text_edit->undo();
|
||||
MessageQueue::get_singleton()->flush();
|
||||
CHECK(text_edit->get_text() == "ffi some test text.ffi some test text.");
|
||||
|
||||
SIGNAL_DISCARD("text_set");
|
||||
SIGNAL_DISCARD("text_changed");
|
||||
SIGNAL_DISCARD("lines_edited_from");
|
||||
SIGNAL_DISCARD("caret_changed");
|
||||
|
||||
SEND_GUI_ACTION("ui_text_delete");
|
||||
CHECK(text_edit->get_viewport()->is_input_handled());
|
||||
CHECK(text_edit->get_text() == " some test text. some test text.");
|
||||
CHECK(text_edit->get_caret_line() == 0);
|
||||
CHECK(text_edit->get_caret_column() == 0);
|
||||
CHECK_FALSE(text_edit->has_selection(0));
|
||||
|
||||
CHECK(text_edit->get_caret_line(1) == 0);
|
||||
CHECK(text_edit->get_caret_column(1) == 16);
|
||||
CHECK_FALSE(text_edit->has_selection(1));
|
||||
SIGNAL_CHECK("caret_changed", empty_signal_args);
|
||||
SIGNAL_CHECK("text_changed", empty_signal_args);
|
||||
SIGNAL_CHECK("lines_edited_from", lines_edited_args);
|
||||
}
|
||||
|
||||
SUBCASE("[TextEdit] ui_text_caret_word_left") {
|
||||
@ -3335,18 +3307,6 @@ TEST_CASE("[SceneTree][TextEdit] caret") {
|
||||
SEND_GUI_ACTION("ui_text_caret_left");
|
||||
CHECK(text_edit->get_caret_column() == 2);
|
||||
|
||||
text_edit->set_caret_mid_grapheme_enabled(false);
|
||||
CHECK_FALSE(text_edit->is_caret_mid_grapheme_enabled());
|
||||
|
||||
SEND_GUI_ACTION("ui_text_caret_left");
|
||||
CHECK(text_edit->get_caret_column() == 0);
|
||||
|
||||
SEND_GUI_ACTION("ui_text_caret_right");
|
||||
CHECK(text_edit->get_caret_column() == 3);
|
||||
|
||||
SEND_GUI_ACTION("ui_text_caret_left");
|
||||
CHECK(text_edit->get_caret_column() == 0);
|
||||
|
||||
text_edit->set_line(0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vasius mattis leo, sed porta ex lacinia bibendum. Nunc bibendum pellentesque.");
|
||||
for (int i = 0; i < 3; i++) {
|
||||
text_edit->insert_line_at(0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vasius mattis leo, sed porta ex lacinia bibendum. Nunc bibendum pellentesque.");
|
||||
|
||||
@ -636,6 +636,54 @@ TEST_SUITE("[TextServer]") {
|
||||
CHECK(breaks[17] == 42);
|
||||
}
|
||||
}
|
||||
|
||||
if (ts->has_feature(TextServer::FEATURE_BREAK_ITERATORS)) {
|
||||
String text2 = U"U+2764 U+FE0F U+200D U+1F525 ; 13.1 # ❤️🔥";
|
||||
|
||||
PackedInt32Array breaks = ts->string_get_character_breaks(text2, "en");
|
||||
CHECK(breaks.size() == 39);
|
||||
if (breaks.size() == 39) {
|
||||
CHECK(breaks[0] == 1);
|
||||
CHECK(breaks[1] == 2);
|
||||
CHECK(breaks[2] == 3);
|
||||
CHECK(breaks[3] == 4);
|
||||
CHECK(breaks[4] == 5);
|
||||
CHECK(breaks[5] == 6);
|
||||
CHECK(breaks[6] == 7);
|
||||
CHECK(breaks[7] == 8);
|
||||
CHECK(breaks[8] == 9);
|
||||
CHECK(breaks[9] == 10);
|
||||
CHECK(breaks[10] == 11);
|
||||
CHECK(breaks[11] == 12);
|
||||
CHECK(breaks[12] == 13);
|
||||
CHECK(breaks[13] == 14);
|
||||
CHECK(breaks[14] == 15);
|
||||
CHECK(breaks[15] == 16);
|
||||
CHECK(breaks[16] == 17);
|
||||
CHECK(breaks[17] == 18);
|
||||
CHECK(breaks[18] == 19);
|
||||
CHECK(breaks[19] == 20);
|
||||
CHECK(breaks[20] == 21);
|
||||
CHECK(breaks[21] == 22);
|
||||
CHECK(breaks[22] == 23);
|
||||
CHECK(breaks[23] == 24);
|
||||
CHECK(breaks[24] == 25);
|
||||
CHECK(breaks[25] == 26);
|
||||
CHECK(breaks[26] == 27);
|
||||
CHECK(breaks[27] == 28);
|
||||
CHECK(breaks[28] == 29);
|
||||
CHECK(breaks[29] == 30);
|
||||
CHECK(breaks[30] == 31);
|
||||
CHECK(breaks[31] == 32);
|
||||
CHECK(breaks[32] == 33);
|
||||
CHECK(breaks[33] == 34);
|
||||
CHECK(breaks[34] == 35);
|
||||
CHECK(breaks[35] == 36);
|
||||
CHECK(breaks[36] == 37);
|
||||
CHECK(breaks[37] == 38);
|
||||
CHECK(breaks[38] == 42);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user