diff --git a/binaries/data/mods/mod/gui/gui.rng b/binaries/data/mods/mod/gui/gui.rng index 49f06af370..268245708e 100644 --- a/binaries/data/mods/mod/gui/gui.rng +++ b/binaries/data/mods/mod/gui/gui.rng @@ -107,6 +107,12 @@ + + + asc + desc + + @@ -596,6 +602,11 @@ + + + + + diff --git a/source/gui/ObjectTypes/COList.cpp b/source/gui/ObjectTypes/COList.cpp index 938fb9804b..e6318a7777 100644 --- a/source/gui/ObjectTypes/COList.cpp +++ b/source/gui/ObjectTypes/COList.cpp @@ -161,7 +161,7 @@ void COList::HandleMessage(SGUIMessage& Message) { if (column.m_Id != static_cast(m_SelectedColumn)) { - m_SelectedColumnOrder.Set(-1, true); + m_SelectedColumnOrder.Set(column.m_SortOrder, true); CStr selected_column = column.m_Id; m_SelectedColumn.Set(selected_column, true); } @@ -244,6 +244,10 @@ bool COList::HandleAdditionalChildren(const XMBData& xmb, const XMBElement& chil { column.m_Heading.Set(attr_value.FromUTF8(), false); } + else if (attr_name == "sort_order") + { + column.m_SortOrder.Set(attr_value == "desc" ? -1 : 1, false); + } } for (XMBElement grandchild : child.GetChildNodes()) diff --git a/source/gui/ObjectTypes/COList.h b/source/gui/ObjectTypes/COList.h index 8fce3510ac..5b3fab9a61 100644 --- a/source/gui/ObjectTypes/COList.h +++ b/source/gui/ObjectTypes/COList.h @@ -30,7 +30,7 @@ class COListColumn public: COListColumn(IGUIObject* owner, const CStr& cid) : m_Id(cid), m_Width(0), m_Heading(owner, "heading_" + cid), m_List(owner, "list_" + cid), - m_Hidden(owner, "hidden_" + cid, false) + m_Hidden(owner, "hidden_" + cid, false), m_SortOrder(owner, " sort_order_" + cid, -1) {} // Avoid copying the strings. NONCOPYABLE(COListColumn); @@ -41,6 +41,7 @@ public: CGUISimpleSetting m_Heading; // CGUIString?? CGUISimpleSetting m_List; CGUISimpleSetting m_Hidden; + CGUISimpleSetting m_SortOrder; }; /**