X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scenegraph%2Fsrc%2Forg%2Fsimantics%2Fscenegraph%2Fg2d%2FG2DParentNode.java;h=a752e9253eedf1149b1d6860fe8e2586ffdaf539;hb=4d3f88eb0edb95b8bc7dedb136f0048ff3918506;hp=231b616e2a0a1a8f09497ce12941a6a562782a4c;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/G2DParentNode.java b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/G2DParentNode.java index 231b616e2..a752e9253 100644 --- a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/G2DParentNode.java +++ b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/G2DParentNode.java @@ -122,6 +122,26 @@ public class G2DParentNode extends ParentNode implements IG2DNode, Ini g2d.setTransform(ot); } + @Override + public void refresh() { + for (IG2DNode node : getSortedNodes()) { + if (node.validate()) { + node.refresh(); + } + } + } + + @Override + public void accept(IG2DNodeVisitor visitor) { + visitor.enter(this); + for (IG2DNode node : getSortedNodes()) { + if (node.validate()) { + node.accept(visitor); + } + } + visitor.leave(this); + } + /** * Return the IDs of the children of this node in ascending Z order. This * method will always allocate a new result list and sort it. To get the IDs @@ -329,14 +349,17 @@ public class G2DParentNode extends ParentNode implements IG2DNode, Ini Rectangle2D bounds = null; while(it.hasNext()) { IG2DNode node = it.next(); - Rectangle2D b = node.getBounds(); + Rectangle2D b = node.getBoundsInLocal(ignoreNulls); if(b == null && !ignoreNulls) return null; if(b != null) { - if(bounds == null) { - bounds = b.getFrame(); - } else { - bounds.add(b); + if(!GeometryUtils.isUndefinedRectangle(b)) { + b = node.localToParent(b); + if(bounds == null) { + bounds = b.getFrame(); + } else { + bounds.add(b); + } } } } @@ -591,4 +614,5 @@ public class G2DParentNode extends ParentNode implements IG2DNode, Ini public void synchronizeTransform(double[] data) { this.setTransform(new AffineTransform(data)); } + }