summaryrefslogtreecommitdiff
path: root/indra/newview/llfloaterworldmap.cpp
diff options
context:
space:
mode:
authorOz Linden <oz@lindenlab.com>2011-05-02 07:26:29 -0400
committerOz Linden <oz@lindenlab.com>2011-05-02 07:26:29 -0400
commit2ace3d7ce487072be2a85e4645fd996b920ffb5a (patch)
treef07d8e6678d7fcd096b2e241ce9a1c92b5746639 /indra/newview/llfloaterworldmap.cpp
parent818f12fbf734676f8d067ef29a786e79676fb4f0 (diff)
parent838b38d238425c8fd8c0116e14cb0883940bcef5 (diff)
merge changes for storm-1128b
Diffstat (limited to 'indra/newview/llfloaterworldmap.cpp')
-rw-r--r--indra/newview/llfloaterworldmap.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp
index 03cf0332a9..f8a4ce7ad0 100644
--- a/indra/newview/llfloaterworldmap.cpp
+++ b/indra/newview/llfloaterworldmap.cpp
@@ -73,6 +73,7 @@
#include "llslider.h"
#include "message.h"
#include "llwindow.h" // copyTextToClipboard()
+#include <algorithm>
//---------------------------------------------------------------------------
// Constants
@@ -85,6 +86,16 @@ static const F32 MAP_ZOOM_TIME = 0.2f;
// Currently (01/26/09), this value allows the whole grid to be visible in a 1024x1024 window.
static const S32 MAX_VISIBLE_REGIONS = 512;
+// It would be more logical to have this inside the method where it is used but to compile under gcc this
+// struct has to be here.
+struct SortRegionNames
+{
+ inline bool operator ()(std::pair <U64, LLSimInfo*> const& _left, std::pair <U64, LLSimInfo*> const& _right)
+ {
+ return(LLStringUtil::compareInsensitive(_left.second->getName(), _right.second->getName()) < 0);
+ }
+};
+
enum EPanDirection
{
PAN_UP,
@@ -1483,10 +1494,13 @@ void LLFloaterWorldMap::updateSims(bool found_null_sim)
S32 name_length = mCompletingRegionName.length();
LLSD match;
-
+
S32 num_results = 0;
- std::map<U64, LLSimInfo*>::const_iterator it;
- for (it = LLWorldMap::getInstance()->getRegionMap().begin(); it != LLWorldMap::getInstance()->getRegionMap().end(); ++it)
+
+ std::vector<std::pair <U64, LLSimInfo*> > sim_info_vec(LLWorldMap::getInstance()->getRegionMap().begin(), LLWorldMap::getInstance()->getRegionMap().end());
+ std::sort(sim_info_vec.begin(), sim_info_vec.end(), SortRegionNames());
+
+ for (std::vector<std::pair <U64, LLSimInfo*> >::const_iterator it = sim_info_vec.begin(); it != sim_info_vec.end(); ++it)
{
LLSimInfo* info = it->second;
std::string sim_name_lower = info->getName();