]> gerrit.simantics Code Review - simantics/platform.git/commitdiff
SVGNode assignments are not always applied in rendering 50/1150/4
authorAntti Villberg <antti.villberg@semantum.fi>
Fri, 27 Oct 2017 17:15:15 +0000 (20:15 +0300)
committerTuukka Lehtonen <tuukka.lehtonen@semantum.fi>
Sat, 28 Oct 2017 07:35:58 +0000 (10:35 +0300)
refs #7580

Change-Id: Ib9cc914ea37466825bbec964393083e17deab5b4

bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/SVGNode.java
bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/SVGNodeAssignment.java

index 42ae2e4c93d34c9b8cdb48f502fb653a6975856f..6fd25e6f8359cbf81dfe7922448d837915618a18 100644 (file)
@@ -131,6 +131,7 @@ public class SVGNode extends G2DNode implements InitValueSupport, LoaderNode {
         }
         this.data = cached;
         this.defaultData = cached;
+        cleanDiagramCache();
     }
 
     @SyncField("targetSize")
@@ -208,7 +209,7 @@ public class SVGNode extends G2DNode implements InitValueSupport, LoaderNode {
                     diagramCache = null;
                 }
 
-                // Lets check for rootAssignment that contributes the whole SVG 
+                // Lets check for rootAssignment that contributes the whole SVG
                 SVGNodeAssignment rootAssignment = null;
                 if (!assignments.isEmpty()) {
                     for (SVGNodeAssignment ass : assignments) {
@@ -322,6 +323,8 @@ public class SVGNode extends G2DNode implements InitValueSupport, LoaderNode {
                     } else {
                         e.setAttribute(ass.attributeNameOrId, ass.value);
                     }
+                } else {
+                    System.err.println("Element with id='" + ass.elementId + " was not found.");
                 }
             }
 
@@ -345,6 +348,9 @@ public class SVGNode extends G2DNode implements InitValueSupport, LoaderNode {
 
         boolean changed = false;
 
+        // Without this elements are sometimes not found by id!
+        diagram.updateTime(0);
+
         for (SVGNodeAssignment ass : assignments) {
             SVGElement e = diagram.getElement(ass.elementId);
             if (e != null) {
@@ -371,6 +377,9 @@ public class SVGNode extends G2DNode implements InitValueSupport, LoaderNode {
             }
         }
 
+        // Without this the attribute values are not correctly reflected in rendering
+        diagram.updateTime(0);
+
         return changed;
     }
 
@@ -448,7 +457,7 @@ public class SVGNode extends G2DNode implements InitValueSupport, LoaderNode {
                 URI uri = univ.loadSVG(new ByteArrayInputStream(dataBytes), digest);
                 diagramCache = univ.getDiagram(uri, false);
                 if (diagramCache != null) {
-                    SVGRoot root = diagramCache.getRoot(); 
+                    SVGRoot root = diagramCache.getRoot();
                     if (root == null) return new Rectangle2D.Double();
                     return (Rectangle2D)root.getBoundingBox().clone();
                 }
index ac292bc4a2014cc65ff34ccb52f2198990128c2a..13ce8137b537b0b94db09f7a535dba8615ef08e9 100644 (file)
@@ -48,4 +48,8 @@ public class SVGNodeAssignment {
                        return false;
                return true;
        }
+       @Override
+       public String toString() {
+               return "SVGNodeAssignment eid=" + elementId + " attributeNameOrId=" + attributeNameOrId + " value=" + value;
+       }
 }
\ No newline at end of file