From: Tuukka Lehtonen Date: Tue, 25 Sep 2018 21:15:41 +0000 (+0300) Subject: ConnectionNode returns local bounds even if it has empty child nodes X-Git-Tag: v1.43.0~136^2~358 X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F39%2F2239%2F2;p=simantics%2Fplatform.git ConnectionNode returns local bounds even if it has empty child nodes This fixes a broken element selection case that came up in master, which is an old problem but hasn't really surfaced before. gitlab #134 Change-Id: I0bd3cb8beba9d3d5ccdcbf4b3f1b81d9910a575f --- 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 d4543c6d1..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 @@ -16,6 +16,7 @@ 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; @@ -161,5 +162,17 @@ public class ConnectionNode extends SingleElementNode implements InitValueSuppor 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); + } + }