diff options
| author | AlexanderP ProductEngine <apaschenko@productengine.com> | 2013-02-13 20:44:38 +0200 | 
|---|---|---|
| committer | AlexanderP ProductEngine <apaschenko@productengine.com> | 2013-02-13 20:44:38 +0200 | 
| commit | c7cac7896ee4ccdd71dad432f1314b85987e78cf (patch) | |
| tree | 14c66365d351d3bc9a74ea84471bfec2b4ba36d6 | |
| parent | a536cf5f4b3a850ebcab566b814c39ed9da03ceb (diff) | |
CHUI-739 Fixed! FUI toolbars not displayed when switching between CHUI and release viewer : parsing declare values of Enums
| -rw-r--r-- | indra/llcommon/llinitparam.h | 26 | ||||
| -rw-r--r-- | indra/newview/lltoolbarview.cpp | 8 | 
2 files changed, 26 insertions, 8 deletions
| diff --git a/indra/llcommon/llinitparam.h b/indra/llcommon/llinitparam.h index 75c87c4bdb..695403e3f4 100644 --- a/indra/llcommon/llinitparam.h +++ b/indra/llcommon/llinitparam.h @@ -439,7 +439,7 @@ namespace LLInitParam  		{}  		void operator ()(const std::string& name) -	{ +	    {  			*this = name;  		} @@ -516,14 +516,30 @@ namespace LLInitParam  		{  			static bool read(T& param, Parser* parser)  			{ -				// read all enums as ints +				std::string value_string; +				//TypeValues<T>::value_t v; + +				// trying to get the declare value +				parser_read_func_map_t::iterator string_func = parser->mParserReadFuncs->find(&typeid(std::string)); +				if (string_func != parser->mParserReadFuncs->end()) +				{ +					if (string_func->second(*parser, (void*)&value_string)) +					{ +						if (TypeValues<T>::getValueFromName(value_string, param)) +						{ +							return true; +						} +					} +				} + +				// read enums as ints if it not declared as string  				parser_read_func_map_t::iterator found_it = parser->mParserReadFuncs->find(&typeid(S32));  				if (found_it != parser->mParserReadFuncs->end())  				{ -					S32 value; -					if (found_it->second(*parser, (void*)&value)) +					S32 value_S32; +					if (found_it->second(*parser, (void*)&value_S32))  					{ -						param = (T)value; +						param = (T)value_S32;  						return true;  					}  				} diff --git a/indra/newview/lltoolbarview.cpp b/indra/newview/lltoolbarview.cpp index de07ad510b..b2318f9158 100644 --- a/indra/newview/lltoolbarview.cpp +++ b/indra/newview/lltoolbarview.cpp @@ -241,8 +241,9 @@ bool LLToolBarView::loadToolbars(bool force_default)  	LLXUIParser parser;  	if (!err)  	{ -	parser.readXUI(root, toolbar_set, toolbar_file); +	    parser.readXUI(root, toolbar_set, toolbar_file);  	} +  	if (!err && !toolbar_set.validateBlock())  	{  		llwarns << "Unable to validate toolbars from file: " << toolbar_file << llendl; @@ -254,8 +255,9 @@ bool LLToolBarView::loadToolbars(bool force_default)  		if (force_default)  		{  			llerrs << "Unable to load toolbars from default file : " << toolbar_file << llendl; -		return false; -	} +		    return false; +	    } +  		// Try to load the default toolbars  		return loadToolbars(true);  	} | 
