Merge pull request #83577 from DennisManaa/fix-translation-for-item-list

Add automatic translation of items to ItemList
This commit is contained in:
Rémi Verschelde
2024-01-04 16:39:36 +01:00
20 changed files with 40 additions and 2 deletions

View File

@ -44,7 +44,7 @@ void ItemList::_shape_text(int p_idx) {
} else {
item.text_buf->set_direction((TextServer::Direction)item.text_direction);
}
item.text_buf->add_string(item.text, theme_cache.font, theme_cache.font_size, item.language);
item.text_buf->add_string(item.xl_text, theme_cache.font, theme_cache.font_size, item.language);
if (icon_mode == ICON_MODE_TOP && max_text_lines > 0) {
item.text_buf->set_break_flags(TextServer::BREAK_MANDATORY | TextServer::BREAK_WORD_BOUND | TextServer::BREAK_GRAPHEME_BOUND | TextServer::BREAK_TRIM_EDGE_SPACES);
} else {
@ -58,6 +58,7 @@ int ItemList::add_item(const String &p_item, const Ref<Texture2D> &p_texture, bo
Item item;
item.icon = p_texture;
item.text = p_item;
item.xl_text = atr(p_item);
item.selectable = p_selectable;
items.push_back(item);
int item_id = items.size() - 1;
@ -94,6 +95,7 @@ void ItemList::set_item_text(int p_idx, const String &p_text) {
}
items.write[p_idx].text = p_text;
items.write[p_idx].xl_text = atr(p_text);
_shape_text(p_idx);
queue_redraw();
shape_changed = true;
@ -1001,7 +1003,6 @@ void ItemList::_notification(int p_what) {
} break;
case NOTIFICATION_LAYOUT_DIRECTION_CHANGED:
case NOTIFICATION_TRANSLATION_CHANGED:
case NOTIFICATION_THEME_CHANGED: {
for (int i = 0; i < items.size(); i++) {
_shape_text(i);
@ -1009,6 +1010,14 @@ void ItemList::_notification(int p_what) {
shape_changed = true;
queue_redraw();
} break;
case NOTIFICATION_TRANSLATION_CHANGED: {
for (int i = 0; i < items.size(); i++) {
items.write[i].xl_text = atr(items[i].text);
_shape_text(i);
}
shape_changed = true;
queue_redraw();
} break;
case NOTIFICATION_DRAW: {
force_update_list_size();