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 /indra | |
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
Diffstat (limited to 'indra')
-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"> |