From 6c70e409e03187c96b057aa5705d49800c6b8b07 Mon Sep 17 00:00:00 2001 From: Tuukka Lehtonen Date: Wed, 26 Sep 2018 00:15:41 +0300 Subject: [PATCH] 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 --- .../scenegraph/g2d/nodes/ConnectionNode.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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); + } + } -- 2.47.0