diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index e0be85ca3..822842c0a 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8048,6 +8048,20 @@ This should be as low as possible, but too low may break functionality Value 0 + RadarSortOrder + + Comment + Sort order for the radar, map of column names to ascending boolean + Persist + 1 + Type + LLSD + Value + + distance + 1 + + FloaterLandRect5 Comment diff --git a/indra/newview/llfloateravatarlist.cpp b/indra/newview/llfloateravatarlist.cpp index bb614ec31..158d69b37 100644 --- a/indra/newview/llfloateravatarlist.cpp +++ b/indra/newview/llfloateravatarlist.cpp @@ -257,6 +257,14 @@ LLFloaterAvatarList::LLFloaterAvatarList() : LLFloater(std::string("radar")), LLFloaterAvatarList::~LLFloaterAvatarList() { mCleanup = true; + LLSD sort; + for (const auto& col : mAvatarList->getSortColumns()) + { + sort.append(mAvatarList->getColumn(col.first)->mName); + sort.append(col.second); + } + + gSavedSettings.setLLSD("RadarSortOrder", sort); mAvatars.clear(); } @@ -425,7 +433,13 @@ BOOL LLFloaterAvatarList::postBuild() // Get a pointer to the scroll list from the interface mAvatarList = getChild("avatar_list"); - mAvatarList->sortByColumn("distance", true); + const LLSD sort = gSavedSettings.getLLSD("RadarSortOrder"); + for (auto it = sort.beginArray(), end = sort.endArray(); it < end; ++it) + { + const auto& column_name = (*it); + const auto& ascending = (*++it); + mAvatarList->sortByColumn(column_name.asStringRef(), ascending.asBoolean()); + } mAvatarList->setCommitOnSelectionChange(true); mAvatarList->setCommitCallback(boost::bind(&LLFloaterAvatarList::onSelectName,this)); mAvatarList->setDoubleClickCallback(boost::bind(&LLFloaterAvatarList::onClickFocus,this));