Skip to content
Snippets Groups Projects
Commit 1128a15f authored by Richard Linden's avatar Richard Linden
Browse files
parents e1e736ef 31a2923b
No related branches found
No related tags found
No related merge requests found
...@@ -127,7 +127,7 @@ namespace LLInitParam ...@@ -127,7 +127,7 @@ namespace LLInitParam
bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, S32 generation){ return true; } bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, S32 generation){ return true; }
void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t name_stack, const LLInitParam::BaseBlock* diff_block) const {} void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t name_stack, const LLInitParam::BaseBlock* diff_block) const {}
bool BaseBlock::inspectBlock(Parser& parser, Parser::name_stack_t name_stack, S32 min_value, S32 max_value) const { return true; } bool BaseBlock::inspectBlock(Parser& parser, Parser::name_stack_t name_stack, S32 min_value, S32 max_value) const { return true; }
bool BaseBlock::merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) { return true; } bool BaseBlock::mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) { return true; }
bool BaseBlock::validateBlock(bool emit_errors) const { return true; } bool BaseBlock::validateBlock(bool emit_errors) const { return true; }
ParamValue<LLUIColor, TypeValues<LLUIColor> >::ParamValue(const LLUIColor& color) ParamValue<LLUIColor, TypeValues<LLUIColor> >::ParamValue(const LLUIColor& color)
......
...@@ -101,7 +101,7 @@ namespace LLInitParam ...@@ -101,7 +101,7 @@ namespace LLInitParam
bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, S32 generation){ return true; } bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, S32 generation){ return true; }
void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t name_stack, const LLInitParam::BaseBlock* diff_block) const {} void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t name_stack, const LLInitParam::BaseBlock* diff_block) const {}
bool BaseBlock::inspectBlock(Parser& parser, Parser::name_stack_t name_stack, S32 min_count, S32 max_count) const { return true; } bool BaseBlock::inspectBlock(Parser& parser, Parser::name_stack_t name_stack, S32 min_count, S32 max_count) const { return true; }
bool BaseBlock::merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) { return true; } bool BaseBlock::mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) { return true; }
bool BaseBlock::validateBlock(bool emit_errors) const { return true; } bool BaseBlock::validateBlock(bool emit_errors) const { return true; }
ParamValue<LLUIColor, TypeValues<LLUIColor> >::ParamValue(const LLUIColor& color) ParamValue<LLUIColor, TypeValues<LLUIColor> >::ParamValue(const LLUIColor& color)
......
...@@ -375,7 +375,7 @@ namespace LLInitParam ...@@ -375,7 +375,7 @@ namespace LLInitParam
//static //static
void BaseBlock::addParam(BlockDescriptor& block_data, const ParamDescriptorPtr in_param, const char* char_name) void BaseBlock::addParam(BlockDescriptor& block_data, const ParamDescriptorPtr in_param, const char* char_name)
{ {
// create a copy of the paramdescriptor in allparams // create a copy of the param descriptor in mAllParams
// so other data structures can store a pointer to it // so other data structures can store a pointer to it
block_data.mAllParams.push_back(in_param); block_data.mAllParams.push_back(in_param);
ParamDescriptorPtr param(block_data.mAllParams.back()); ParamDescriptorPtr param(block_data.mAllParams.back());
...@@ -469,7 +469,7 @@ namespace LLInitParam ...@@ -469,7 +469,7 @@ namespace LLInitParam
// take all provided params from other and apply to self // take all provided params from other and apply to self
// NOTE: this requires that "other" is of the same derived type as this // NOTE: this requires that "other" is of the same derived type as this
bool BaseBlock::merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) bool BaseBlock::mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
{ {
bool some_param_changed = false; bool some_param_changed = false;
BlockDescriptor::all_params_list_t::const_iterator end_it = block_data.mAllParams.end(); BlockDescriptor::all_params_list_t::const_iterator end_it = block_data.mAllParams.end();
......
...@@ -476,8 +476,12 @@ namespace LLInitParam ...@@ -476,8 +476,12 @@ namespace LLInitParam
void init(BlockDescriptor& descriptor, BlockDescriptor& base_descriptor, size_t block_size); void init(BlockDescriptor& descriptor, BlockDescriptor& base_descriptor, size_t block_size);
bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
{
mergeBlock(block_data, other, overwrite);
}
// take all provided params from other and apply to self // take all provided params from other and apply to self
bool merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite); bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite);
// can be updated in getters // can be updated in getters
mutable S32 mChangeVersion; mutable S32 mChangeVersion;
...@@ -896,12 +900,14 @@ namespace LLInitParam ...@@ -896,12 +900,14 @@ namespace LLInitParam
const self_t& src_typed_param = static_cast<const self_t&>(src); const self_t& src_typed_param = static_cast<const self_t&>(src);
self_t& dst_typed_param = static_cast<self_t&>(dst); self_t& dst_typed_param = static_cast<self_t&>(dst);
if (src_typed_param.isProvided() if (src_typed_param.anyProvided())
&& (overwrite || !dst_typed_param.isProvided()))
{ {
if (dst_typed_param.merge(param_value_t::selfBlockDescriptor(), src_typed_param, overwrite)) bool param_provided = src_typed_param.isProvided() && (overwrite || !dst_typed_param.isProvided());
if (dst_typed_param.mergeBlockParam(param_provided, param_value_t::selfBlockDescriptor(), src_typed_param, overwrite))
{ {
dst_typed_param.clearValueName(); dst_typed_param.clearValueName();
dst_typed_param.setProvided(true);
dst_typed_param.enclosingBlock().paramChanged(dst_typed_param, true);
return true; return true;
} }
} }
...@@ -1082,6 +1088,12 @@ namespace LLInitParam ...@@ -1082,6 +1088,12 @@ namespace LLInitParam
std::copy(dst_typed_param.begin(), dst_typed_param.end(), std::back_inserter(new_values)); std::copy(dst_typed_param.begin(), dst_typed_param.end(), std::back_inserter(new_values));
std::swap(dst_typed_param.mValues, new_values); std::swap(dst_typed_param.mValues, new_values);
} }
if (src_typed_param.begin() != src_typed_param.end())
{
dst_typed_param.setProvided(true);
dst_typed_param.enclosingBlock().paramChanged(dst_typed_param, true);
}
return true; return true;
} }
...@@ -1282,6 +1294,13 @@ namespace LLInitParam ...@@ -1282,6 +1294,13 @@ namespace LLInitParam
std::copy(dst_typed_param.begin(), dst_typed_param.end(), std::back_inserter(new_values)); std::copy(dst_typed_param.begin(), dst_typed_param.end(), std::back_inserter(new_values));
std::swap(dst_typed_param.mValues, new_values); std::swap(dst_typed_param.mValues, new_values);
} }
if (src_typed_param.begin() != src_typed_param.end())
{
dst_typed_param.setProvided(true);
dst_typed_param.enclosingBlock().paramChanged(dst_typed_param, true);
}
return true; return true;
} }
...@@ -1301,24 +1320,28 @@ namespace LLInitParam ...@@ -1301,24 +1320,28 @@ namespace LLInitParam
// take all provided params from other and apply to self // take all provided params from other and apply to self
bool overwriteFrom(const self_t& other) bool overwriteFrom(const self_t& other)
{ {
return merge(selfBlockDescriptor(), other, true); return mergeBlock(selfBlockDescriptor(), other, true);
} }
// take all provided params that are not already provided, and apply to self // take all provided params that are not already provided, and apply to self
bool fillFrom(const self_t& other) bool fillFrom(const self_t& other)
{ {
return merge(selfBlockDescriptor(), other, false); return mergeBlock(selfBlockDescriptor(), other, false);
} }
// merge with other block bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const self_t& other, bool overwrite)
bool merge(BlockDescriptor& block_data, const self_t& other, bool overwrite)
{ {
// only merge a choice if we are overwriting with other's contents if (param_provided)
if (overwrite)
{ {
mCurChoice = other.mCurChoice; mergeBlock(block_data, other, overwrite);
return BaseBlock::merge(selfBlockDescriptor(), other, overwrite);
} }
}
// merge with other block
bool mergeBlock(BlockDescriptor& block_data, const self_t& other, bool overwrite)
{
mCurChoice = other.mCurChoice;
return BaseBlock::mergeBlock(selfBlockDescriptor(), other, overwrite);
return false; return false;
} }
...@@ -1445,13 +1468,13 @@ namespace LLInitParam ...@@ -1445,13 +1468,13 @@ namespace LLInitParam
// take all provided params from other and apply to self // take all provided params from other and apply to self
bool overwriteFrom(const self_t& other) bool overwriteFrom(const self_t& other)
{ {
return static_cast<DERIVED_BLOCK*>(this)->merge(selfBlockDescriptor(), other, true); return static_cast<DERIVED_BLOCK*>(this)->mergeBlock(selfBlockDescriptor(), other, true);
} }
// take all provided params that are not already provided, and apply to self // take all provided params that are not already provided, and apply to self
bool fillFrom(const self_t& other) bool fillFrom(const self_t& other)
{ {
return static_cast<DERIVED_BLOCK*>(this)->merge(selfBlockDescriptor(), other, false); return static_cast<DERIVED_BLOCK*>(this)->mergeBlock(selfBlockDescriptor(), other, false);
} }
virtual const BlockDescriptor& mostDerivedBlockDescriptor() const { return selfBlockDescriptor(); } virtual const BlockDescriptor& mostDerivedBlockDescriptor() const { return selfBlockDescriptor(); }
...@@ -1862,7 +1885,15 @@ namespace LLInitParam ...@@ -1862,7 +1885,15 @@ namespace LLInitParam
mValue = value; mValue = value;
} }
bool merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
{
if (param_provided)
{
mergeBlock(block_data, other, overwrite);
}
}
bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
{ {
const derived_t& src_typed_param = static_cast<const derived_t&>(other); const derived_t& src_typed_param = static_cast<const derived_t&>(other);
...@@ -1875,7 +1906,7 @@ namespace LLInitParam ...@@ -1875,7 +1906,7 @@ namespace LLInitParam
else else
{ {
// merge individual parameters into destination // merge individual parameters into destination
return block_t::merge(block_t::selfBlockDescriptor(), src_typed_param, overwrite); return block_t::mergeBlock(block_t::selfBlockDescriptor(), src_typed_param, overwrite);
} }
} }
......
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<avatar_icon <avatar_icon
name="avatar_icon"
default_icon_name="Generic_Person_Large" default_icon_name="Generic_Person_Large"
use_draw_context_alpha="false"> use_draw_context_alpha="false">
</avatar_icon> </avatar_icon>
...@@ -6,20 +6,24 @@ ...@@ -6,20 +6,24 @@
track_color="ScrollbarTrackColor" track_color="ScrollbarTrackColor"
thumb_color="ScrollbarThumbColor" thumb_color="ScrollbarThumbColor"
thickness="15"> thickness="15">
<up_button image_unselected="ScrollArrow_Up" <up_button name="up_button"
image_unselected="ScrollArrow_Up"
image_selected="ScrollArrow_Up" image_selected="ScrollArrow_Up"
scale_image="true" scale_image="true"
hover_glow_amount="0.35"/> hover_glow_amount="0.35"/>
<down_button image_unselected="ScrollArrow_Down" <down_button name="down_button"
image_unselected="ScrollArrow_Down"
image_selected="ScrollArrow_Down" image_selected="ScrollArrow_Down"
scale_image="true" scale_image="true"
hover_glow_amount="0.35"/> hover_glow_amount="0.35"/>
<left_button image_unselected="ScrollArrow_Left" <left_button name="left_button"
image_unselected="ScrollArrow_Left"
image_selected="ScrollArrow_Left" image_selected="ScrollArrow_Left"
scale_image="true" scale_image="true"
hover_glow_amount="0.35"/> hover_glow_amount="0.35"/>
<right_button image_unselected="ScrollArrow_Right" <right_button name="right_button"
image_selected="ScrollArrow_Right" image_unselected="ScrollArrow_Right"
scale_image="true" image_selected="ScrollArrow_Right"
hover_glow_amount="0.35"/> scale_image="true"
hover_glow_amount="0.35"/>
</scroll_bar> </scroll_bar>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment