diff options
Diffstat (limited to 'gui')
-rw-r--r-- | gui/listbox.cpp | 12 | ||||
-rw-r--r-- | gui/objects.hpp | 1 |
2 files changed, 11 insertions, 2 deletions
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); } diff --git a/gui/objects.hpp b/gui/objects.hpp index 15ad1e6c2..e7ade18a5 100644 --- a/gui/objects.hpp +++ b/gui/objects.hpp @@ -652,6 +652,7 @@ protected: ImageResource* mIconSelected; ImageResource* mIconUnselected; bool isCheckList; + bool isTextParsed; }; class GUIPartitionList : public GUIScrollList |