X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scenegraph%2Fsrc%2Forg%2Fsimantics%2Fscenegraph%2Fg2d%2Fnodes%2FConnectionNode.java;h=9331a1edea5afea8ae5cc5b086d790bb92e02d95;hb=fe29fd8956c3881e261ec4eee1cdd2ac27bc0554;hp=a83ca52647719d4dd3d4001605f9a3086336bdb9;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/ConnectionNode.java b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/ConnectionNode.java index a83ca5264..9331a1ede 100644 --- a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/ConnectionNode.java +++ b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/ConnectionNode.java @@ -13,11 +13,14 @@ package org.simantics.scenegraph.g2d.nodes; import java.awt.Color; import java.awt.Composite; +import java.awt.Graphics2D; import java.awt.Stroke; import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; import org.simantics.diagram.connection.RouteGraph; import org.simantics.scenegraph.INode; +import org.simantics.scenegraph.g2d.G2DRenderingHints; import org.simantics.scenegraph.g2d.IG2DNode; import org.simantics.scenegraph.g2d.events.MouseEvent; import org.simantics.scenegraph.g2d.nodes.connection.RouteGraphNode; @@ -150,4 +153,26 @@ public class ConnectionNode extends SingleElementNode implements InitValueSuppor return false; } + @Override + public void beforeRender(Graphics2D g) { + g.setRenderingHint(G2DRenderingHints.KEY_BEGIN_ELEMENT, "connection"); + } + + @Override + public void afterRender(Graphics2D g) { + g.setRenderingHint(G2DRenderingHints.KEY_END_ELEMENT, "connection"); + } + + @Override + public Rectangle2D getBoundsInLocal() { + // #134: Route graph connections render their own selection. + // ElementPainter will place an empty G2DParentNode + // called "selection" under this ConnectionNode which + // should be ignored in bounds calculations. + // Otherwise this node will not support being inserted + // into a spatial search structure and further selections + // will fail. + return super.getBoundsInLocal(true); + } + }