diff options
| author | Richard Nelson <richard@lindenlab.com> | 2009-10-15 19:56:45 +0000 | 
|---|---|---|
| committer | Richard Nelson <richard@lindenlab.com> | 2009-10-15 19:56:45 +0000 | 
| commit | 5edb4f2171fb92ff64913459a63afb20474db25a (patch) | |
| tree | 2a32ae948197921d81f90de735637df8c758c96a | |
| parent | 56fed69c4a5c801e46b61f85e6e01fcd302ae2e5 (diff) | |
removed requirement for specializing ParamCompare on boost::function types
eliminated usage of iterator_range from LLInitParam
made LLTextEditor::addChar consistent with truncate in counting text bytes (not including null terminator)
EXT-1494 - Avatar profile description text truncated to 255 characters
reviewed by Leyla
| -rw-r--r-- | indra/llui/lllineeditor.cpp | 17 | ||||
| -rw-r--r-- | indra/llui/lllineeditor.h | 11 | ||||
| -rw-r--r-- | indra/llui/llscrollbar.cpp | 12 | ||||
| -rw-r--r-- | indra/llui/llscrollbar.h | 7 | ||||
| -rw-r--r-- | indra/llui/lltexteditor.cpp | 2 | ||||
| -rw-r--r-- | indra/llui/llui.cpp | 13 | ||||
| -rw-r--r-- | indra/llui/llui.h | 7 | ||||
| -rw-r--r-- | indra/llui/lluictrl.cpp | 21 | ||||
| -rw-r--r-- | indra/llui/lluictrl.h | 17 | ||||
| -rw-r--r-- | indra/llui/lluiimage.cpp | 3 | ||||
| -rw-r--r-- | indra/llui/lluiimage.h | 6 | ||||
| -rw-r--r-- | indra/llxuixml/llinitparam.cpp | 41 | ||||
| -rw-r--r-- | indra/llxuixml/llinitparam.h | 61 | ||||
| -rw-r--r-- | indra/llxuixml/lluicolor.cpp | 13 | ||||
| -rw-r--r-- | indra/llxuixml/lluicolor.h | 16 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_edit_profile.xml | 2 | 
16 files changed, 71 insertions, 178 deletions
| diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index 0db515ab41..e053477d58 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -2514,20 +2514,3 @@ LLWString LLLineEditor::getConvertedText() const  	}  	return text;  } - -namespace LLInitParam -{ -	template<> -	bool ParamCompare<LLLinePrevalidateFunc>::equals(const LLLinePrevalidateFunc &a, const LLLinePrevalidateFunc &b) -	{ -		return false; -	} - -	template<> -	bool ParamCompare<boost::function<void (LLLineEditor *)> >::equals( -		const boost::function<void (LLLineEditor *)> &a, -		const boost::function<void (LLLineEditor *)> &b) -	{ -		return false; -	} -} diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h index 6e81969f00..3d7bbdff89 100644 --- a/indra/llui/lllineeditor.h +++ b/indra/llui/lllineeditor.h @@ -391,15 +391,4 @@ private:  }; // end class LLLineEditor -namespace LLInitParam -{ -    template<> -	bool ParamCompare<LLLinePrevalidateFunc>::equals( -		const LLLinePrevalidateFunc &a, const LLLinePrevalidateFunc &b);  - -    template<> -	bool ParamCompare<boost::function<void (LLLineEditor *)> >::equals( -		const boost::function<void (LLLineEditor *)> &a, const boost::function<void (LLLineEditor *)> &b);  -} -  #endif  // LL_LINEEDITOR_ diff --git a/indra/llui/llscrollbar.cpp b/indra/llui/llscrollbar.cpp index 7db34a0608..cb4147709d 100644 --- a/indra/llui/llscrollbar.cpp +++ b/indra/llui/llscrollbar.cpp @@ -640,15 +640,3 @@ void LLScrollbar::onLineDownBtnPressed( const LLSD& data )  {  	changeLine( mStepSize, TRUE );  } - - -namespace LLInitParam -{ -    template<> -	bool ParamCompare<boost::function<void (S32, LLScrollbar*)> >::equals( -		const boost::function<void (S32, LLScrollbar*)> &a, -		const boost::function<void (S32, LLScrollbar*)> &b)  -	{ -		return false; -	} -} diff --git a/indra/llui/llscrollbar.h b/indra/llui/llscrollbar.h index e4c5712fb7..2e95779624 100644 --- a/indra/llui/llscrollbar.h +++ b/indra/llui/llscrollbar.h @@ -167,11 +167,4 @@ private:  }; -namespace LLInitParam -{ -    template<> -	bool ParamCompare<boost::function<void (S32, LLScrollbar*)> >::equals( -		const boost::function<void (S32, LLScrollbar*)> &a, const boost::function<void (S32, LLScrollbar*)> &b);  -} -  #endif  // LL_SCROLLBAR_H diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 74373e7803..74ffad0f53 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -990,7 +990,7 @@ void LLTextEditor::removeChar()  // Add a single character to the text  S32 LLTextEditor::addChar(S32 pos, llwchar wc)  { -	if ( (wstring_utf8_length( getWText() ) + wchar_utf8_length( wc ))  >= mMaxTextByteLength) +	if ( (wstring_utf8_length( getWText() ) + wchar_utf8_length( wc ))  > mMaxTextByteLength)  	{  		make_ui_sound("UISndBadKeystroke");  		return 0; diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index 9a90ee267e..ec9220a984 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -1918,16 +1918,11 @@ namespace LLInitParam  		declare("blue", LLColor4::blue);  	} -	template<> -	class ParamCompare<const LLFontGL*> +	bool ParamCompare<const LLFontGL*, boost::false_type>::equals(const LLFontGL* a, const LLFontGL* b)  	{ -	public: -		static bool equals(const LLFontGL* a, const LLFontGL* b) -		{ -			return !(a->getFontDesc() < b->getFontDesc()) -				&& !(b->getFontDesc() < a->getFontDesc()); -		} -	}; +		return !(a->getFontDesc() < b->getFontDesc()) +			&& !(b->getFontDesc() < a->getFontDesc()); +	}  	TypedParam<const LLFontGL*>::TypedParam(BlockDescriptor& descriptor, const char* _name, const LLFontGL*const value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count)  	:	super_t(descriptor, _name, value, func, min_count, max_count), diff --git a/indra/llui/llui.h b/indra/llui/llui.h index f071e8dc47..db18957a97 100644 --- a/indra/llui/llui.h +++ b/indra/llui/llui.h @@ -437,6 +437,13 @@ namespace LLInitParam  	};  	template<> +	struct ParamCompare<const LLFontGL*, boost::false_type> +	{ +		static bool equals(const LLFontGL* a, const LLFontGL* b); +	}; + + +	template<>  	class TypedParam<LLCoordGL>  	:	public BlockValue<LLCoordGL>  	{ diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp index 84b1c92097..0faff5eff6 100644 --- a/indra/llui/lluictrl.cpp +++ b/indra/llui/lluictrl.cpp @@ -849,24 +849,3 @@ BOOL LLUICtrl::getTentative() const  // virtual  void LLUICtrl::setColor(const LLColor4& color)							  { } - - -namespace LLInitParam -{ -    template<>  -	bool ParamCompare<LLUICtrl::commit_callback_t>::equals( -		const LLUICtrl::commit_callback_t &a,  -		const LLUICtrl::commit_callback_t &b) -    { -    	return false; -    } -     -    -    template<>  -	bool ParamCompare<LLUICtrl::enable_callback_t>::equals( -		const LLUICtrl::enable_callback_t &a,  -		const LLUICtrl::enable_callback_t &b) -    { -    	return false; -    } -} diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h index 1d34cb39ec..45fe47772b 100644 --- a/indra/llui/lluictrl.h +++ b/indra/llui/lluictrl.h @@ -327,21 +327,4 @@ private:  	class DefaultTabGroupFirstSorter;  }; -namespace LLInitParam -{    -    template<>  -	bool ParamCompare<LLUICtrl::commit_callback_t>::equals( -		const LLUICtrl::commit_callback_t &a,  -		const LLUICtrl::commit_callback_t &b);  -		 -    template<>  -	bool ParamCompare<LLUICtrl::enable_callback_t>::equals( -		const LLUICtrl::enable_callback_t &a,  -		const LLUICtrl::enable_callback_t &b);  -     -    template<> -	bool ParamCompare<LLLazyValue<LLColor4> >::equals( -		const LLLazyValue<LLColor4> &a, const LLLazyValue<LLColor4> &b);  -} -  #endif  // LL_LLUICTRL_H diff --git a/indra/llui/lluiimage.cpp b/indra/llui/lluiimage.cpp index ab0d65e731..51828e5731 100644 --- a/indra/llui/lluiimage.cpp +++ b/indra/llui/lluiimage.cpp @@ -152,8 +152,7 @@ namespace LLInitParam  	} -	template<> -	bool ParamCompare<LLUIImage*>::equals( +	bool ParamCompare<LLUIImage*, boost::false_type>::equals(  		LLUIImage* const &a,  		LLUIImage* const &b)  	{ diff --git a/indra/llui/lluiimage.h b/indra/llui/lluiimage.h index 4ec24e98dc..9f505bea79 100644 --- a/indra/llui/lluiimage.h +++ b/indra/llui/lluiimage.h @@ -108,8 +108,10 @@ namespace LLInitParam  	// Need custom comparison function for our test app, which only loads  	// LLUIImage* as NULL.  	template<> -	bool ParamCompare<LLUIImage*>::equals( -		LLUIImage* const &a, LLUIImage* const &b); +	struct ParamCompare<LLUIImage*, boost::false_type> +	{ +		static bool equals(LLUIImage* const &a, LLUIImage* const &b); +	};  }  typedef LLPointer<LLUIImage> LLUIImagePtr; diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp index 1b867b79c9..1abd411f37 100644 --- a/indra/llxuixml/llinitparam.cpp +++ b/indra/llxuixml/llinitparam.cpp @@ -127,7 +127,7 @@ namespace LLInitParam  	bool BaseBlock::submitValue(const Parser::name_stack_t& name_stack, Parser& p, bool silent)  	{ -		if (!deserializeBlock(p, boost::make_iterator_range(name_stack.begin(), name_stack.end()))) +		if (!deserializeBlock(p, std::make_pair(name_stack.begin(), name_stack.end())))  		{  			if (!silent)  			{ @@ -304,11 +304,11 @@ namespace LLInitParam  	bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack)  	{  		BlockDescriptor& block_data = getBlockDescriptor(); -		bool names_left = !name_stack.empty(); +		bool names_left = name_stack.first != name_stack.second;  		if (names_left)  		{ -			const std::string& top_name = name_stack.front().first; +			const std::string& top_name = name_stack.first->first;  			ParamDescriptor::deserialize_func_t deserialize_func = NULL;  			Param* paramp = NULL; @@ -331,10 +331,11 @@ namespace LLInitParam  				}  			} -			Parser::name_stack_range_t new_name_stack(++name_stack.begin(), name_stack.end()); +			Parser::name_stack_range_t new_name_stack(name_stack.first, name_stack.second); +			++new_name_stack.first;  			if (deserialize_func)  			{ -				return deserialize_func(*paramp, p, new_name_stack, name_stack.empty() ? -1 : name_stack.front().second); +				return deserialize_func(*paramp, p, new_name_stack, name_stack.first == name_stack.second ? -1 : name_stack.first->second);  			}  		} @@ -346,7 +347,7 @@ namespace LLInitParam  			Param* paramp = getParamFromHandle((*it)->mParamHandle);  			ParamDescriptor::deserialize_func_t deserialize_func = (*it)->mDeserializeFunc; -			if (deserialize_func && deserialize_func(*paramp, p, name_stack, name_stack.empty() ? -1 : name_stack.front().second)) +			if (deserialize_func && deserialize_func(*paramp, p, name_stack, name_stack.first == name_stack.second ? -1 : name_stack.first->second))  			{  				mLastChangedParam = (*it)->mParamHandle;  				return true; @@ -499,33 +500,7 @@ namespace LLInitParam  		return param_changed;  	} - -	template<> -	bool ParamCompare<boost::function<void (const std::string &,void *)> >::equals( -	   const boost::function<void (const std::string &,void *)> &a, -	   const boost::function<void (const std::string &,void *)> &b) -	{ -		return false; -	} - -	template<> -	bool ParamCompare<boost::function<void (const LLSD &,const LLSD &)> >::equals( -	   const boost::function<void (const LLSD &,const LLSD &)> &a, -	   const boost::function<void (const LLSD &,const LLSD &)> &b) -	{ -		return false; -	} - -	template<> -	bool ParamCompare<boost::function<void (void)> >::equals( -		const boost::function<void (void)> &a, -		const boost::function<void (void)> &b) -	{ -		return false; -	} - -	template<> -	bool ParamCompare<LLSD>::equals(const LLSD &a, const LLSD &b) +	bool ParamCompare<LLSD, boost::false_type>::equals(const LLSD &a, const LLSD &b)  	{  		return false;  	} diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h index 88bc430504..193d8c1f64 100644 --- a/indra/llxuixml/llinitparam.h +++ b/indra/llxuixml/llinitparam.h @@ -39,25 +39,31 @@  #include <stddef.h>  #include <boost/function.hpp>  #include <boost/bind.hpp> -#include <boost/range/iterator_range.hpp> +#include <boost/type_traits/is_convertible.hpp>  #include "llregistry.h"  #include "llmemory.h"  namespace LLInitParam  { -    template <typename T>  -    class ParamCompare { -    public: -    	static bool equals(const T &a, const T &b); +	template <typename T, typename IS_BOOST_FUNCTION = boost::is_convertible<T, boost::function_base>::type > +    struct ParamCompare  +	{ +    	static bool equals(const T &a, const T &b) +		{ +			return a == b; +		}      }; -    template<class T> -    bool ParamCompare<T>::equals(const T &a, const T&b) -    { -    	return a == b; -    } - +	// boost function types are not comparable +	template<typename T> +	struct ParamCompare<T, boost::true_type> +	{ +		static bool equals(const T&a, const T &b) +		{ +			return false; +		} +	};  	// default constructor adaptor for InitParam Values  	// constructs default instances of the given type, returned by const reference @@ -192,7 +198,7 @@ namespace LLInitParam  		};  		typedef std::vector<std::pair<std::string, S32> >			name_stack_t; -		typedef boost::iterator_range<name_stack_t::const_iterator>	name_stack_range_t; +		typedef std::pair<name_stack_t::const_iterator, name_stack_t::const_iterator>	name_stack_range_t;  		typedef std::vector<std::string>							possible_values_t;  		typedef boost::function<bool (void*)>															parser_read_func_t; @@ -535,7 +541,7 @@ namespace LLInitParam  		{   			self_t& typed_param = static_cast<self_t&>(param);  			// no further names in stack, attempt to parse value now -			if (name_stack.empty()) +			if (name_stack.first == name_stack.second)  			{  				if (parser.readValue<T>(typed_param.mData.mValue))  				{ @@ -886,7 +892,7 @@ namespace LLInitParam  			self_t& typed_param = static_cast<self_t&>(param);  			value_t value;  			// no further names in stack, attempt to parse value now -			if (name_stack.empty()) +			if (name_stack.first == name_stack.second)  			{  				// attempt to read value directly  				if (parser.readValue<value_t>(value)) @@ -1541,7 +1547,7 @@ namespace LLInitParam  			static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation)  			{ -				if (name_stack.empty()) +				if (name_stack.first == name_stack.second)  				{  					//std::string message = llformat("Deprecated value %s ignored", getName().c_str());  					//parser.parserWarning(message); @@ -1600,7 +1606,7 @@ namespace LLInitParam  		{  			self_t& typed_param = static_cast<self_t&>(param);  			// type to apply parse direct value T -			if (name_stack.empty()) +			if (name_stack.first == name_stack.second)  			{  				if(parser.readValue<T>(typed_param.mData.mValue))  				{ @@ -1811,24 +1817,11 @@ namespace LLInitParam  		}  	}; -    template<> -	bool ParamCompare<boost::function<void (const std::string &,void *)> >::equals( -		const boost::function<void (const std::string &,void *)> &a, -		const boost::function<void (const std::string &,void *)> &b); -	 -	template<> -	bool ParamCompare<boost::function<void (const LLSD &,const LLSD &)> >::equals( -		const boost::function<void (const LLSD &,const LLSD &)> &a, -		const boost::function<void (const LLSD &,const LLSD &)> &b); - -	template<> -	bool ParamCompare<boost::function<void (void)> >::equals( -		const boost::function<void (void)> &a, -		const boost::function<void (void)> &b); - - -	template<> -	bool ParamCompare<LLSD>::equals(const LLSD &a, const LLSD &b); +	template<>  +	struct ParamCompare<LLSD, boost::false_type> +	{ +		static bool equals(const LLSD &a, const LLSD &b); +	};  }  #endif // LL_LLPARAM_H diff --git a/indra/llxuixml/lluicolor.cpp b/indra/llxuixml/lluicolor.cpp index ef0fa5d634..0065edb309 100644 --- a/indra/llxuixml/lluicolor.cpp +++ b/indra/llxuixml/lluicolor.cpp @@ -58,14 +58,9 @@ bool LLUIColor::isReference() const  namespace LLInitParam  {  	// used to detect equivalence with default values on export -	template<> -	class ParamCompare<LLUIColor> +	bool ParamCompare<LLUIColor, boost::false_type>::equals(const LLUIColor &a, const LLUIColor &b)  	{ -	public: -		static bool equals(const LLUIColor &a, const LLUIColor &b) -		{ -			// do not detect value equivalence, treat pointers to colors as distinct from color values -			return (a.mColorPtr == NULL && b.mColorPtr == NULL ? a.mColor == b.mColor : a.mColorPtr == b.mColorPtr); -		} -	}; +		// do not detect value equivalence, treat pointers to colors as distinct from color values +		return (a.mColorPtr == NULL && b.mColorPtr == NULL ? a.mColor == b.mColor : a.mColorPtr == b.mColorPtr); +	}  } diff --git a/indra/llxuixml/lluicolor.h b/indra/llxuixml/lluicolor.h index 365f61003b..aff81a695d 100644 --- a/indra/llxuixml/lluicolor.h +++ b/indra/llxuixml/lluicolor.h @@ -11,11 +11,12 @@  #define LL_LLUICOLOR_H_  #include "v4color.h" +#include <boost/type_traits/integral_constant.hpp> // for boost::false_type  namespace LLInitParam  { -	template<typename T> -	class ParamCompare; +	template<typename T, typename IS_BOOST_FUNCTION> +	struct ParamCompare;  }  class LLUIColor @@ -36,10 +37,19 @@ public:  	bool isReference() const;  private: -	friend class LLInitParam::ParamCompare<LLUIColor>; +	friend struct LLInitParam::ParamCompare<LLUIColor, boost::false_type>;  	const LLColor4* mColorPtr;  	LLColor4 mColor;  }; +namespace LLInitParam +{ +	template<> +	struct ParamCompare<class LLUIColor, boost::false_type> +	{ +		static bool equals(const class LLUIColor& a, const class LLUIColor& b); +	}; +} +  #endif diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml index b728c23bc5..0202323dcf 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml @@ -139,6 +139,7 @@         layout="topleft"         left="120"         top="30" +       max_length="511"         name="sl_description_edit"         width="115"         word_wrap="true"> @@ -194,6 +195,7 @@         layout="topleft"         left="120"         top="195" +       max_length="254"         name="fl_description_edit"         width="115"         word_wrap="true"> | 
