From 7368d148c15c65e1dbf20774b1450e9d5466f786 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pa=CC=84vels=20Nadtoc=CC=8Cajevs?= <7645683+bruvzg@users.noreply.github.com> Date: Tue, 2 Sep 2025 08:51:18 +0300 Subject: [PATCH] [TextEdit] Fix text edit font update order. --- scene/gui/text_edit.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 356d0ba22c7..5546d4d2c77 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -319,8 +319,19 @@ void TextEdit::Text::invalidate_cache(int p_line, bool p_text_changed) { } String remaining_string = text_with_ime.substr(from); text_line.data_buf->add_string(remaining_string, font, font_size, language); + } + if (!bidi_override_with_ime.is_empty()) { + TS->shaped_text_set_bidi_override(text_line.data_buf->get_rid(), bidi_override_with_ime); + } + + if (!p_text_changed) { + // Update fonts. + RID r = text_line.data_buf->get_rid(); + int spans = TS->shaped_get_span_count(r); + for (int i = 0; i < spans; i++) { + TS->shaped_set_span_update_font(r, i, font->get_rids(), font_size, font->get_opentype_features()); + } - } else { // Update inline object sizes. for (int i = 0; i < text_line.data_buf->get_line_count(); i++) { for (Variant key : text_line.data_buf->get_line_objects(i)) { @@ -333,17 +344,6 @@ void TextEdit::Text::invalidate_cache(int p_line, bool p_text_changed) { } } } - if (!bidi_override_with_ime.is_empty()) { - TS->shaped_text_set_bidi_override(text_line.data_buf->get_rid(), bidi_override_with_ime); - } - - if (!p_text_changed) { - RID r = text_line.data_buf->get_rid(); - int spans = TS->shaped_get_span_count(r); - for (int i = 0; i < spans; i++) { - TS->shaped_set_span_update_font(r, i, font->get_rids(), font_size, font->get_opentype_features()); - } - } // Apply tab align. if (tab_size > 0) {