From dedbb7f78269d6c44dae3d5b4758593d736d4bb2 Mon Sep 17 00:00:00 2001 From: Ethan Yonker Date: Sun, 17 Jan 2016 18:17:38 -0600 Subject: Make listbox translation work Change-Id: I446f4499a43e6348a2b95846f3e5ea86967abbdc --- gui/listbox.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'gui/listbox.cpp') diff --git a/gui/listbox.cpp b/gui/listbox.cpp index eeddff954..b0d2731fe 100644 --- a/gui/listbox.cpp +++ b/gui/listbox.cpp @@ -36,7 +36,7 @@ GUIListBox::GUIListBox(xml_node<>* node) : GUIScrollList(node) xml_node<>* child; mIconSelected = mIconUnselected = NULL; mUpdate = 0; - isCheckList = false; + isCheckList = isTextParsed = false; // Get the icons, if any child = FindNode(node, "icon"); @@ -87,7 +87,8 @@ GUIListBox::GUIListBox(xml_node<>* node) : GUIScrollList(node) attr = child->first_attribute("name"); if (!attr) continue; - item.displayName = gui_parse_text(attr->value()); + // We will parse display names when we get page focus to ensure that translating takes place + item.displayName = attr->value(); item.variableValue = gui_parse_text(child->value()); item.selected = (child->value() == currentValue); item.action = NULL; @@ -191,6 +192,13 @@ void GUIListBox::SetPageFocus(int inFocus) { GUIScrollList::SetPageFocus(inFocus); if (inFocus) { + if (!isTextParsed) { + isTextParsed = true; + for (size_t i = 0; i < mListItems.size(); i++) { + ListItem& item = mListItems[i]; + item.displayName = gui_parse_text(item.displayName); + } + } DataManager::GetValue(mVariable, currentValue); NotifyVarChange(mVariable, currentValue); } -- cgit v1.2.3