diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-06-04 10:10:34 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-06-04 10:10:34 +0200 |
commit | 7c2d65ff660684931255d404ee116f453c54adc8 (patch) | |
tree | 12e9d8116eecde3c303e564410214a5d9d592d84 | |
parent | 0242e3ca9fc00a089693f7444da90e1b7cee29d6 (diff) | |
parent | 5e616cedd4d79fa3980d673faa37504f323e979a (diff) | |
download | redot-engine-7c2d65ff660684931255d404ee116f453c54adc8.tar.gz |
Merge pull request #92745 from bruvzg/rtl_list_fix
[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; |