Merge pull request #83577 from DennisManaa/fix-translation-for-item-list
Add automatic translation of items to ItemList
This commit is contained in:
@ -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();
|
||||
|
||||
Reference in New Issue
Block a user