diff --git a/src/company_gui.cpp b/src/company_gui.cpp index 423efcb01f..f4fe7f8030 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -615,28 +615,6 @@ private: ShowDropDownList(this, std::move(list), sel, widget); } - static bool GroupNameSorter(const Group * const &a, const Group * const &b) - { - static const Group *last_group[2] = { nullptr, nullptr }; - static char last_name[2][64] = { "", "" }; - - if (a != last_group[0]) { - last_group[0] = a; - SetDParam(0, a->index); - GetString(last_name[0], STR_GROUP_NAME, lastof(last_name[0])); - } - - if (b != last_group[1]) { - last_group[1] = b; - SetDParam(0, b->index); - GetString(last_name[1], STR_GROUP_NAME, lastof(last_name[1])); - } - - int r = strnatcmp(last_name[0], last_name[1]); // Sort by name (natural sorting). - if (r == 0) return a->index < b->index; - return r < 0; - } - void AddChildren(GUIGroupList *source, GroupID parent, int indent) { for (const Group *g : *source) { @@ -665,7 +643,27 @@ private: } list.ForceResort(); - list.Sort(&GroupNameSorter); + + /* Sort the groups by their name */ + const Group *last_group[2] = { nullptr, nullptr }; + char last_name[2][64] = { "", "" }; + list.Sort([&](const Group * const &a, const Group * const &b) -> bool { + if (a != last_group[0]) { + last_group[0] = a; + SetDParam(0, a->index); + GetString(last_name[0], STR_GROUP_NAME, lastof(last_name[0])); + } + + if (b != last_group[1]) { + last_group[1] = b; + SetDParam(0, b->index); + GetString(last_name[1], STR_GROUP_NAME, lastof(last_name[1])); + } + + int r = strnatcmp(last_name[0], last_name[1]); // Sort by name (natural sorting). + if (r == 0) return a->index < b->index; + return r < 0; + }); AddChildren(&list, INVALID_GROUP, 0); } diff --git a/src/group_gui.cpp b/src/group_gui.cpp index 0bf8589ac5..8d0bba8fbb 100644 --- a/src/group_gui.cpp +++ b/src/group_gui.cpp @@ -141,29 +141,6 @@ private: } } - /** Sort the groups by their name */ - static bool GroupNameSorter(const Group * const &a, const Group * const &b) - { - static const Group *last_group[2] = { nullptr, nullptr }; - static char last_name[2][64] = { "", "" }; - - if (a != last_group[0]) { - last_group[0] = a; - SetDParam(0, a->index); - GetString(last_name[0], STR_GROUP_NAME, lastof(last_name[0])); - } - - if (b != last_group[1]) { - last_group[1] = b; - SetDParam(0, b->index); - GetString(last_name[1], STR_GROUP_NAME, lastof(last_name[1])); - } - - int r = strnatcmp(last_name[0], last_name[1]); // Sort by name (natural sorting). - if (r == 0) return a->index < b->index; - return r < 0; - } - /** * (Re)Build the group list. * @@ -185,7 +162,27 @@ private: } list.ForceResort(); - list.Sort(&GroupNameSorter); + + /* Sort the groups by their name */ + const Group *last_group[2] = { nullptr, nullptr }; + char last_name[2][64] = { "", "" }; + list.Sort([&](const Group * const &a, const Group * const &b) { + if (a != last_group[0]) { + last_group[0] = a; + SetDParam(0, a->index); + GetString(last_name[0], STR_GROUP_NAME, lastof(last_name[0])); + } + + if (b != last_group[1]) { + last_group[1] = b; + SetDParam(0, b->index); + GetString(last_name[1], STR_GROUP_NAME, lastof(last_name[1])); + } + + int r = strnatcmp(last_name[0], last_name[1]); // Sort by name (natural sorting). + if (r == 0) return a->index < b->index; + return r < 0; + }); AddChildren(&list, INVALID_GROUP, 0);