summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-06-04 10:10:34 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-06-04 10:10:34 +0200
commit7c2d65ff660684931255d404ee116f453c54adc8 (patch)
tree12e9d8116eecde3c303e564410214a5d9d592d84
parent0242e3ca9fc00a089693f7444da90e1b7cee29d6 (diff)
parent5e616cedd4d79fa3980d673faa37504f323e979a (diff)
downloadredot-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.cpp17
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;