[TextServer] Ignore language of embedded object replacement spans when updating line breaks.

This commit is contained in:
Pāvels Nadtočajevs 2026-02-12 10:02:49 +02:00
parent 92a90a8e6f
commit 149ecbcbfd
No known key found for this signature in database
GPG key ID: 8413210218EF35D2

View file

@ -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;