]> git.mxchange.org Git - simgear.git/commitdiff
canvas: exclude data-* properties from triggering an update.
authorThomas Geymayer <tomgey@gmail.com>
Tue, 27 May 2014 15:54:37 +0000 (17:54 +0200)
committerThomas Geymayer <tomgey@gmail.com>
Tue, 27 May 2014 15:56:46 +0000 (17:56 +0200)
Allows using data-* properties on canvas and elements,
similar to HTML5, without triggering a new rendering of
the canvas.

simgear/canvas/Canvas.cxx
simgear/canvas/elements/CanvasElement.cxx

index c199f54f3745501667ff0ba43b2d786feb268273..8b02f49c7b8b63cbbb7cccc279e6910561249b4a 100644 (file)
@@ -468,7 +468,10 @@ namespace canvas
   //----------------------------------------------------------------------------
   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;
     _render_dirty = true;
 
@@ -507,7 +510,7 @@ namespace canvas
     }
     else if( node->getParent() == _node )
     {
-      if( node->getNameString() == "background" )
+      if( name == "background" )
       {
         osg::Vec4 color;
         if( _texture.getCamera() && parseColor(node->getStringValue(), color) )
@@ -516,35 +519,35 @@ namespace canvas
           _render_dirty = true;
         }
       }
-      else if(    node->getNameString() == "mipmapping"
-              || node->getNameString() == "coverage-samples"
-              || node->getNameString() == "color-samples" )
+      else if(   name == "mipmapping"
+              || name == "coverage-samples"
+              || name == "color-samples" )
       {
         _sampling_dirty = true;
       }
-      else if( node->getNameString() == "additive-blend" )
+      else if( name == "additive-blend" )
       {
         _texture.useAdditiveBlend( node->getBoolValue() );
       }
-      else if( node->getNameString() == "render-always" )
+      else if( name == "render-always" )
       {
         _render_always = node->getBoolValue();
       }
-      else if( node->getNameString() == "size" )
+      else if( name == "size" )
       {
         if( node->getIndex() == 0 )
           setSizeX( node->getIntValue() );
         else if( node->getIndex() == 1 )
           setSizeY( node->getIntValue() );
       }
-      else if( node->getNameString() == "view" )
+      else if( name == "view" )
       {
         if( node->getIndex() == 0 )
           setViewWidth( node->getIntValue() );
         else if( node->getIndex() == 1 )
           setViewHeight( node->getIntValue() );
       }
-      else if( node->getNameString() == "freeze" )
+      else if( name == "freeze" )
         _texture.setRender( node->getBoolValue() );
       else
         handled = false;
index c763ab865be90d2f92c48a9cb48ee706d0f79c25..9bb75b1281d702f3de6b65dd1a1fdcfdc3ab7a16 100644 (file)
@@ -419,7 +419,9 @@ namespace canvas
     if( parent == _node )
     {
       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;
         if( isStyleEmpty(child) )