canvas: exclude data-* properties from triggering an update.
Allows using data-* properties on canvas and elements, similar to HTML5, without triggering a new rendering of the canvas.
This commit is contained in:
+13
-10
@@ -468,7 +468,10 @@ namespace canvas
|
|||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void Canvas::valueChanged(SGPropertyNode* node)
|
void Canvas::valueChanged(SGPropertyNode* node)
|
||||||
{
|
{
|
||||||
if( boost::starts_with(node->getNameString(), "status") )
|
const std::string& name = node->getNameString();
|
||||||
|
|
||||||
|
if( boost::starts_with(name, "status")
|
||||||
|
|| boost::starts_with(name, "data-") )
|
||||||
return;
|
return;
|
||||||
_render_dirty = true;
|
_render_dirty = true;
|
||||||
|
|
||||||
@@ -507,7 +510,7 @@ namespace canvas
|
|||||||
}
|
}
|
||||||
else if( node->getParent() == _node )
|
else if( node->getParent() == _node )
|
||||||
{
|
{
|
||||||
if( node->getNameString() == "background" )
|
if( name == "background" )
|
||||||
{
|
{
|
||||||
osg::Vec4 color;
|
osg::Vec4 color;
|
||||||
if( _texture.getCamera() && parseColor(node->getStringValue(), color) )
|
if( _texture.getCamera() && parseColor(node->getStringValue(), color) )
|
||||||
@@ -516,35 +519,35 @@ namespace canvas
|
|||||||
_render_dirty = true;
|
_render_dirty = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( node->getNameString() == "mipmapping"
|
else if( name == "mipmapping"
|
||||||
|| node->getNameString() == "coverage-samples"
|
|| name == "coverage-samples"
|
||||||
|| node->getNameString() == "color-samples" )
|
|| name == "color-samples" )
|
||||||
{
|
{
|
||||||
_sampling_dirty = true;
|
_sampling_dirty = true;
|
||||||
}
|
}
|
||||||
else if( node->getNameString() == "additive-blend" )
|
else if( name == "additive-blend" )
|
||||||
{
|
{
|
||||||
_texture.useAdditiveBlend( node->getBoolValue() );
|
_texture.useAdditiveBlend( node->getBoolValue() );
|
||||||
}
|
}
|
||||||
else if( node->getNameString() == "render-always" )
|
else if( name == "render-always" )
|
||||||
{
|
{
|
||||||
_render_always = node->getBoolValue();
|
_render_always = node->getBoolValue();
|
||||||
}
|
}
|
||||||
else if( node->getNameString() == "size" )
|
else if( name == "size" )
|
||||||
{
|
{
|
||||||
if( node->getIndex() == 0 )
|
if( node->getIndex() == 0 )
|
||||||
setSizeX( node->getIntValue() );
|
setSizeX( node->getIntValue() );
|
||||||
else if( node->getIndex() == 1 )
|
else if( node->getIndex() == 1 )
|
||||||
setSizeY( node->getIntValue() );
|
setSizeY( node->getIntValue() );
|
||||||
}
|
}
|
||||||
else if( node->getNameString() == "view" )
|
else if( name == "view" )
|
||||||
{
|
{
|
||||||
if( node->getIndex() == 0 )
|
if( node->getIndex() == 0 )
|
||||||
setViewWidth( node->getIntValue() );
|
setViewWidth( node->getIntValue() );
|
||||||
else if( node->getIndex() == 1 )
|
else if( node->getIndex() == 1 )
|
||||||
setViewHeight( node->getIntValue() );
|
setViewHeight( node->getIntValue() );
|
||||||
}
|
}
|
||||||
else if( node->getNameString() == "freeze" )
|
else if( name == "freeze" )
|
||||||
_texture.setRender( node->getBoolValue() );
|
_texture.setRender( node->getBoolValue() );
|
||||||
else
|
else
|
||||||
handled = false;
|
handled = false;
|
||||||
|
|||||||
@@ -419,7 +419,9 @@ namespace canvas
|
|||||||
if( parent == _node )
|
if( parent == _node )
|
||||||
{
|
{
|
||||||
const std::string& name = child->getNameString();
|
const std::string& name = child->getNameString();
|
||||||
if( StyleInfo const* style_info = getStyleInfo(name) )
|
if( boost::starts_with(name, "data-") )
|
||||||
|
return;
|
||||||
|
else if( StyleInfo const* style_info = getStyleInfo(name) )
|
||||||
{
|
{
|
||||||
SGPropertyNode const* style = child;
|
SGPropertyNode const* style = child;
|
||||||
if( isStyleEmpty(child) )
|
if( isStyleEmpty(child) )
|
||||||
|
|||||||
Reference in New Issue
Block a user