diff options
author | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2024-06-04 08:08:16 +0300 |
---|---|---|
committer | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2024-06-04 08:08:16 +0300 |
commit | 5e616cedd4d79fa3980d673faa37504f323e979a (patch) | |
tree | dee4fbba4701c5211f92b7a3d1c4d8a38009ea31 | |
parent | 5f1184e93fe1021c86520460dc0a6619bff3c1fb (diff) | |
download | redot-engine-5e616cedd4d79fa3980d673faa37504f323e979a.tar.gz |
[RTL] Fix nested ordered lists inside unordered lists.
-rw-r--r-- | scene/gui/rich_text_label.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index 5378271f59..7590cf2ad3 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -690,25 +690,32 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o _find_list(l.from, list_index, list_items); String prefix; + int segments = 0; for (int i = 0; i < list_index.size(); i++) { + String segment; + if (list_items[i]->list_type == LIST_DOTS) { + if (segments == 0) { + prefix = list_items[i]->bullet; + } + break; + } if (rtl) { prefix = prefix + "."; } else { prefix = "." + prefix; } - String segment; - if (list_items[i]->list_type == LIST_DOTS) { - prefix = list_items[i]->bullet; - break; - } else if (list_items[i]->list_type == LIST_NUMBERS) { + if (list_items[i]->list_type == LIST_NUMBERS) { segment = itos(list_index[i]); if (is_localizing_numeral_system()) { segment = TS->format_number(segment, _find_language(l.from)); } + segments++; } else if (list_items[i]->list_type == LIST_LETTERS) { segment = _letters(list_index[i], list_items[i]->capitalize); + segments++; } else if (list_items[i]->list_type == LIST_ROMAN) { segment = _roman(list_index[i], list_items[i]->capitalize); + segments++; } if (rtl) { prefix = prefix + segment; |