Make listbox translation work

Change-Id: I446f4499a43e6348a2b95846f3e5ea86967abbdc
diff --git a/gui/listbox.cpp b/gui/listbox.cpp
index eeddff9..b0d2731 100644
--- a/gui/listbox.cpp
+++ b/gui/listbox.cpp
@@ -36,7 +36,7 @@
 	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 @@
 		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 @@
 {
 	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 15ad1e6..e7ade18 100644
--- a/gui/objects.hpp
+++ b/gui/objects.hpp
@@ -652,6 +652,7 @@
 	ImageResource* mIconSelected;
 	ImageResource* mIconUnselected;
 	bool isCheckList;
+	bool isTextParsed;
 };
 
 class GUIPartitionList : public GUIScrollList