diff options
| -rw-r--r-- | indra/llui/llnotifications.cpp | 7 | ||||
| -rw-r--r-- | indra/llui/lltransutil.cpp | 9 | ||||
| -rw-r--r-- | indra/llui/lluicolortable.cpp | 5 | ||||
| -rw-r--r-- | indra/llvfs/lldir.cpp | 19 | ||||
| -rw-r--r-- | indra/llvfs/lldir.h | 22 | ||||
| -rw-r--r-- | indra/llvfs/tests/lldir_test.cpp | 14 | ||||
| -rw-r--r-- | indra/newview/llviewertexturelist.cpp | 7 | 
7 files changed, 45 insertions, 38 deletions
| diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index 4fbee8cd80..210a320f41 100644 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -1424,10 +1424,11 @@ void addPathIfExists(const std::string& new_path, std::vector<std::string>& path  bool LLNotifications::loadTemplates()  {  	llinfos << "Reading notifications template" << llendl; -	// Passing findSkinnedFilenames(merge=true) makes it output all relevant -	// pathnames instead of just the ones from the most specific skin. +	// Passing findSkinnedFilenames(constraint=LLDir::ALL_SKINS) makes it +	// output all relevant pathnames instead of just the ones from the most +	// specific skin.  	std::vector<std::string> search_paths = -		gDirUtilp->findSkinnedFilenames(LLDir::XUI, "notifications.xml", true); +		gDirUtilp->findSkinnedFilenames(LLDir::XUI, "notifications.xml", LLDir::ALL_SKINS);  	std::string base_filename = search_paths.front();  	LLXMLNodePtr root; diff --git a/indra/llui/lltransutil.cpp b/indra/llui/lltransutil.cpp index 97a72b55e1..3b7e737dea 100644 --- a/indra/llui/lltransutil.cpp +++ b/indra/llui/lltransutil.cpp @@ -36,11 +36,12 @@  bool LLTransUtil::parseStrings(const std::string& xml_filename, const std::set<std::string>& default_args)  {  	// LLUICtrlFactory::getLayeredXMLNode() just calls -	// gDirUtilp->findSkinnedFilenames(merge=false) and then passes the -	// resulting paths to LLXMLNode::getLayeredXMLNode(). Bypass that and call -	// LLXMLNode::getLayeredXMLNode() directly: we want merge=true. +	// gDirUtilp->findSkinnedFilenames(constraint=LLDir::CURRENT_SKIN) and +	// then passes the resulting paths to LLXMLNode::getLayeredXMLNode(). +	// Bypass that and call LLXMLNode::getLayeredXMLNode() directly: we want +	// constraint=LLDir::ALL_SKINS.  	std::vector<std::string> paths = -		gDirUtilp->findSkinnedFilenames(LLDir::XUI, xml_filename, true); +		gDirUtilp->findSkinnedFilenames(LLDir::XUI, xml_filename, LLDir::ALL_SKINS);  	if (paths.empty())  	{  		// xml_filename not found at all in any skin -- check whether entire diff --git a/indra/llui/lluicolortable.cpp b/indra/llui/lluicolortable.cpp index 2717445396..ffeff15968 100644 --- a/indra/llui/lluicolortable.cpp +++ b/indra/llui/lluicolortable.cpp @@ -207,9 +207,10 @@ bool LLUIColorTable::loadFromSettings()  {  	bool result = false; -	// pass merge=true because we want colors.xml from every skin dir +	// pass constraint=LLDir::ALL_SKINS because we want colors.xml from every +	// skin dir  	BOOST_FOREACH(std::string colors_path, -				  gDirUtilp->findSkinnedFilenames(LLDir::SKINBASE, "colors.xml", true)) +				  gDirUtilp->findSkinnedFilenames(LLDir::SKINBASE, "colors.xml", LLDir::ALL_SKINS))  	{  		result |= loadFromFilename(colors_path, mLoadedColors);  	} diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp index a7d12476a4..2d0adf14e6 100644 --- a/indra/llvfs/lldir.cpp +++ b/indra/llvfs/lldir.cpp @@ -46,7 +46,6 @@  #include <boost/range/begin.hpp>  #include <boost/range/end.hpp>  #include <algorithm> -#include <iomanip>  #if LL_WINDOWS  #include "lldir_win32.h" @@ -544,10 +543,10 @@ std::string LLDir::getExtension(const std::string& filepath) const  std::string LLDir::findSkinnedFilenameBaseLang(const std::string &subdir,  											   const std::string &filename, -											   bool merge) const +											   ESkinConstraint constraint) const  {  	// This implementation is basically just as described in the declaration comments. -	std::vector<std::string> found(findSkinnedFilenames(subdir, filename, merge)); +	std::vector<std::string> found(findSkinnedFilenames(subdir, filename, constraint));  	if (found.empty())  	{  		return ""; @@ -557,10 +556,10 @@ std::string LLDir::findSkinnedFilenameBaseLang(const std::string &subdir,  std::string LLDir::findSkinnedFilename(const std::string &subdir,  									   const std::string &filename, -									   bool merge) const +									   ESkinConstraint constraint) const  {  	// This implementation is basically just as described in the declaration comments. -	std::vector<std::string> found(findSkinnedFilenames(subdir, filename, merge)); +	std::vector<std::string> found(findSkinnedFilenames(subdir, filename, constraint));  	if (found.empty())  	{  		return ""; @@ -570,7 +569,7 @@ std::string LLDir::findSkinnedFilename(const std::string &subdir,  std::vector<std::string> LLDir::findSkinnedFilenames(const std::string& subdir,  													 const std::string& filename, -													 bool merge) const +													 ESkinConstraint constraint) const  {  	// Recognize subdirs that have no localization.  	static const char* sUnlocalizedData[] = @@ -582,7 +581,9 @@ std::vector<std::string> LLDir::findSkinnedFilenames(const std::string& subdir,  													boost::end(sUnlocalizedData));  	LL_DEBUGS("LLDir") << "subdir '" << subdir << "', filename '" << filename -					   << "', merge " << std::boolalpha << merge << LL_ENDL; +					   << "', constraint " +					   << ((constraint == CURRENT_SKIN)? "CURRENT_SKIN" : "ALL_SKINS") +					   << LL_ENDL;  	// Cache the default language directory for each subdir we've encountered.  	// A cache entry whose value is the empty string means "not localized, @@ -672,8 +673,8 @@ std::vector<std::string> LLDir::findSkinnedFilenames(const std::string& subdir,  		// Here the desired filename exists in the first subsubdir. That means  		// this is a skindir we want to record in results. But if the caller -		// passed merge=false, we must discard all previous skindirs. -		if (! merge) +		// passed constraint=CURRENT_SKIN, we must discard all previous skindirs. +		if (constraint == CURRENT_SKIN)  		{  			results.clear();  		} diff --git a/indra/llvfs/lldir.h b/indra/llvfs/lldir.h index a242802979..ffa2676838 100644 --- a/indra/llvfs/lldir.h +++ b/indra/llvfs/lldir.h @@ -119,6 +119,8 @@ class LLDir  	// these methods search the various skin paths for the specified file in the following order:  	// getUserSkinDir(), getUserDefaultSkinDir(), getSkinDir(), getDefaultSkinDir() +	/// param value for findSkinnedFilenames(), explained below +	enum ESkinConstraint { CURRENT_SKIN, ALL_SKINS };  	/**  	 * Given a filename within skin, return an ordered sequence of paths to  	 * search. Nonexistent files will be filtered out -- which means that the @@ -130,25 +132,25 @@ class LLDir  	 * level of skin subdirectory).  	 * @param filename Desired filename within subdir within skin, e.g.  	 * "panel_login.xml". DO NOT prepend (e.g.) "xui" or the desired language. -	 * @param merge Callers perform two different kinds of processing. When -	 * fetching a XUI file, for instance, the existence of @a filename in the -	 * specified skin completely supercedes any @a filename in the default -	 * skin. For that case, leave the default @a merge=false. The returned -	 * vector will contain only +	 * @param constraint Callers perform two different kinds of processing. +	 * When fetching a XUI file, for instance, the existence of @a filename in +	 * the specified skin completely supercedes any @a filename in the default +	 * skin. For that case, leave the default @a constraint=CURRENT_SKIN. The +	 * returned vector will contain only  	 * ".../<i>current_skin</i>/xui/en/<i>filename</i>",  	 * ".../<i>current_skin</i>/xui/<i>current_language</i>/<i>filename</i>".  	 * But for (e.g.) "strings.xml", we want a given skin to be able to  	 * override only specific entries from the default skin. Any string not  	 * defined in the specified skin will be sought in the default skin. For -	 * that case, pass @a merge=true. The returned vector will contain at -	 * least ".../default/xui/en/strings.xml", +	 * that case, pass @a constraint=ALL_SKINS. The returned vector will +	 * contain at least ".../default/xui/en/strings.xml",  	 * ".../default/xui/<i>current_language</i>/strings.xml",  	 * ".../<i>current_skin</i>/xui/en/strings.xml",  	 * ".../<i>current_skin</i>/xui/<i>current_language</i>/strings.xml".  	 */  	std::vector<std::string> findSkinnedFilenames(const std::string& subdir,  												  const std::string& filename, -												  bool merge=false) const; +												  ESkinConstraint constraint=CURRENT_SKIN) const;  	/// Values for findSkinnedFilenames(subdir) parameter  	static const char *XUI, *TEXTURES, *SKINBASE;  	/** @@ -160,7 +162,7 @@ class LLDir  	 */  	std::string findSkinnedFilenameBaseLang(const std::string &subdir,  											const std::string &filename, -											bool merge=false) const; +											ESkinConstraint constraint=CURRENT_SKIN) const;  	/**  	 * Return the "most localized" pathname from findSkinnedFilenames(), or  	 * the empty string if no such file exists. Parameters are identical to @@ -170,7 +172,7 @@ class LLDir  	 */  	std::string findSkinnedFilename(const std::string &subdir,  									const std::string &filename, -									bool merge=false) const; +									ESkinConstraint constraint=CURRENT_SKIN) const;  	// random filename in common temporary directory  	std::string getTempFilename() const; diff --git a/indra/llvfs/tests/lldir_test.cpp b/indra/llvfs/tests/lldir_test.cpp index a00fc8684c..15a5b6d4f3 100644 --- a/indra/llvfs/tests/lldir_test.cpp +++ b/indra/llvfs/tests/lldir_test.cpp @@ -584,7 +584,7 @@ namespace tut          ensure_equals(lldir.getLanguage(), "en");          // top-level directory of a skin isn't localized -        ensure_equals(lldir.findSkinnedFilenames(LLDir::SKINBASE, "colors.xml", true), +        ensure_equals(lldir.findSkinnedFilenames(LLDir::SKINBASE, "colors.xml", LLDir::ALL_SKINS),                        vec(list_of("install/skins/default/colors.xml")                                   ("user/skins/default/colors.xml")));          // We should not have needed to check for skins/default/en. We should @@ -599,13 +599,13 @@ namespace tut          StringVec expected(vec(list_of("install/skins/default/xui/en/strings.xml")                                 ("user/skins/default/xui/en/strings.xml"))); -        ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", true), +        ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", LLDir::ALL_SKINS),                        expected);          // The first time, we had to probe to find out whether xui was localized.          lldir.ensure_checked("install/skins/default/xui/en");          lldir.clear_checked();          // Now make the same call again -- should return same result -- -        ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", true), +        ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", LLDir::ALL_SKINS),                        expected);          // but this time it should remember that xui is localized.          lldir.ensure_not_checked("install/skins/default/xui/en"); @@ -648,7 +648,7 @@ namespace tut          ensure_equals(lldir.getLanguage(), "fr");          // pass merge=true to request this filename in all relevant skins -        ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", true), +        ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", LLDir::ALL_SKINS),                        vec(list_of                            ("install/skins/default/xui/en/strings.xml")                            ("install/skins/default/xui/fr/strings.xml") @@ -691,7 +691,7 @@ namespace tut          /*------------------------- "steam", "en" --------------------------*/          lldir.setSkinFolder("steam", "en"); -        ensure_equals(lldir.findSkinnedFilenames(LLDir::SKINBASE, "colors.xml", true), +        ensure_equals(lldir.findSkinnedFilenames(LLDir::SKINBASE, "colors.xml", LLDir::ALL_SKINS),                        vec(list_of                            ("install/skins/default/colors.xml")                            ("install/skins/steam/colors.xml") @@ -715,7 +715,7 @@ namespace tut                        vec(list_of("user/skins/steam/xui/en/strings.xml")));          // pass merge=true to request this filename in all relevant skins -        ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", true), +        ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", LLDir::ALL_SKINS),                        vec(list_of                            ("install/skins/default/xui/en/strings.xml")                            ("install/skins/steam/xui/en/strings.xml") @@ -732,7 +732,7 @@ namespace tut                            ("user/skins/steam/xui/fr/strings.xml")));          // pass merge=true to request this filename in all relevant skins -        ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", true), +        ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", LLDir::ALL_SKINS),                        vec(list_of                            ("install/skins/default/xui/en/strings.xml")                            ("install/skins/default/xui/fr/strings.xml") diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 7eb1a202a0..edc43534dd 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -1583,10 +1583,11 @@ struct UIImageDeclarations : public LLInitParam::Block<UIImageDeclarations>  bool LLUIImageList::initFromFile()  { -	// Look for textures.xml in all the right places. Pass merge=true because -	// we want to overlay textures.xml from all the skins directories. +	// Look for textures.xml in all the right places. Pass +	// constraint=LLDir::ALL_SKINS because we want to overlay textures.xml +	// from all the skins directories.  	std::vector<std::string> textures_paths = -		gDirUtilp->findSkinnedFilenames(LLDir::TEXTURES, "textures.xml", true); +		gDirUtilp->findSkinnedFilenames(LLDir::TEXTURES, "textures.xml", LLDir::ALL_SKINS);  	std::vector<std::string>::const_iterator pi(textures_paths.begin()), pend(textures_paths.end());  	if (pi == pend)  	{ | 
