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 Leylamaster
parent
56fed69c4a
commit
5edb4f2171
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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_
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -436,6 +436,13 @@ namespace LLInitParam
|
|||
static void declareValues();
|
||||
};
|
||||
|
||||
template<>
|
||||
struct ParamCompare<const LLFontGL*, boost::false_type>
|
||||
{
|
||||
static bool equals(const LLFontGL* a, const LLFontGL* b);
|
||||
};
|
||||
|
||||
|
||||
template<>
|
||||
class TypedParam<LLCoordGL>
|
||||
: public BlockValue<LLCoordGL>
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -152,8 +152,7 @@ namespace LLInitParam
|
|||
}
|
||||
|
||||
|
||||
template<>
|
||||
bool ParamCompare<LLUIImage*>::equals(
|
||||
bool ParamCompare<LLUIImage*, boost::false_type>::equals(
|
||||
LLUIImage* const &a,
|
||||
LLUIImage* const &b)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
Loading…
Reference in New Issue