From 149ecbcbfde98f0e4a8fed8bf2703d3666d5c4ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pa=CC=84vels=20Nadtoc=CC=8Cajevs?= <7645683+bruvzg@users.noreply.github.com> Date: Thu, 12 Feb 2026 10:02:49 +0200 Subject: [PATCH] [TextServer] Ignore language of embedded object replacement spans when updating line breaks. --- modules/text_server_adv/text_server_adv.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/text_server_adv/text_server_adv.cpp b/modules/text_server_adv/text_server_adv.cpp index f828382ea9..726b81bf4c 100644 --- a/modules/text_server_adv/text_server_adv.cpp +++ b/modules/text_server_adv/text_server_adv.cpp @@ -6270,13 +6270,18 @@ bool TextServerAdvanced::_shaped_text_update_breaks(const RID &p_shaped) { int i = 0; int span_size = sd->spans.size(); while (i < span_size) { + bool start_with_obj = sd->spans[i].embedded_key != Variant(); String language = sd->spans[i].language; int r_start = sd->spans[i].start; if (r_start == sd->spans[i].end) { i++; continue; } - while (i + 1 < span_size && (language == sd->spans[i + 1].language || sd->spans[i + 1].start == sd->spans[i + 1].end)) { + while (i + 1 < span_size && (language == sd->spans[i + 1].language || start_with_obj || sd->spans[i + 1].embedded_key != Variant() || sd->spans[i + 1].start == sd->spans[i + 1].end)) { + if (start_with_obj && sd->spans[i + 1].embedded_key == Variant()) { + language = sd->spans[i + 1].language; + start_with_obj = false; + } i++; } int r_end = sd->spans[i].end;