diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llfloaterworldmap.cpp | 20 | 
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(); | 
