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
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 {}
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; }
ParamValue<LLUIColor, TypeValues<LLUIColor> >::ParamValue(const LLUIColor& color)
......
......@@ -101,7 +101,7 @@ namespace LLInitParam
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 {}
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; }
ParamValue<LLUIColor, TypeValues<LLUIColor> >::ParamValue(const LLUIColor& color)
......
......@@ -375,7 +375,7 @@ namespace LLInitParam
//static
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
block_data.mAllParams.push_back(in_param);
ParamDescriptorPtr param(block_data.mAllParams.back());
......@@ -469,7 +469,7 @@ namespace LLInitParam
// take all provided params from other and apply to self
// 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;
BlockDescriptor::all_params_list_t::const_iterator end_it = block_data.mAllParams.end();
......
......@@ -476,8 +476,12 @@ namespace LLInitParam
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
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
mutable S32 mChangeVersion;
......@@ -896,12 +900,14 @@ namespace LLInitParam
const self_t& src_typed_param = static_cast<const self_t&>(src);
self_t& dst_typed_param = static_cast<self_t&>(dst);
if (src_typed_param.isProvided()
&& (overwrite || !dst_typed_param.isProvided()))
if (src_typed_param.anyProvided())
{
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.setProvided(true);
dst_typed_param.enclosingBlock().paramChanged(dst_typed_param, true);
return true;
}
}
......@@ -1082,6 +1088,12 @@ namespace LLInitParam
std::copy(dst_typed_param.begin(), dst_typed_param.end(), std::back_inserter(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;
}
......@@ -1282,6 +1294,13 @@ namespace LLInitParam
std::copy(dst_typed_param.begin(), dst_typed_param.end(), std::back_inserter(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;
}
......@@ -1301,24 +1320,28 @@ namespace LLInitParam
// take all provided params from other and apply to self
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
bool fillFrom(const self_t& other)
{
return merge(selfBlockDescriptor(), other, false);
return mergeBlock(selfBlockDescriptor(), other, false);
}
// merge with other block
bool merge(BlockDescriptor& block_data, const self_t& other, bool overwrite)
bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const self_t& other, bool overwrite)
{
// only merge a choice if we are overwriting with other's contents
if (overwrite)
if (param_provided)
{
mCurChoice = other.mCurChoice;
return BaseBlock::merge(selfBlockDescriptor(), other, overwrite);
mergeBlock(block_data, 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;
}
......@@ -1445,13 +1468,13 @@ namespace LLInitParam
// take all provided params from other and apply to self
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
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(); }
......@@ -1862,7 +1885,15 @@ namespace LLInitParam
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);
......@@ -1875,7 +1906,7 @@ namespace LLInitParam
else
{
// 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" ?>
<avatar_icon
name="avatar_icon"
default_icon_name="Generic_Person_Large"
use_draw_context_alpha="false">
</avatar_icon>
......@@ -6,20 +6,24 @@
track_color="ScrollbarTrackColor"
thumb_color="ScrollbarThumbColor"
thickness="15">
<up_button image_unselected="ScrollArrow_Up"
<up_button name="up_button"
image_unselected="ScrollArrow_Up"
image_selected="ScrollArrow_Up"
scale_image="true"
hover_glow_amount="0.35"/>
<down_button image_unselected="ScrollArrow_Down"
<down_button name="down_button"
image_unselected="ScrollArrow_Down"
image_selected="ScrollArrow_Down"
scale_image="true"
hover_glow_amount="0.35"/>
<left_button image_unselected="ScrollArrow_Left"
<left_button name="left_button"
image_unselected="ScrollArrow_Left"
image_selected="ScrollArrow_Left"
scale_image="true"
hover_glow_amount="0.35"/>
<right_button image_unselected="ScrollArrow_Right"
image_selected="ScrollArrow_Right"
scale_image="true"
hover_glow_amount="0.35"/>
<right_button name="right_button"
image_unselected="ScrollArrow_Right"
image_selected="ScrollArrow_Right"
scale_image="true"
hover_glow_amount="0.35"/>
</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