From: Hannu Niemistö Date: Mon, 9 Oct 2017 05:06:20 +0000 (+0300) Subject: Merge "(refs #7531) Functions first and last to Prelude" X-Git-Tag: v1.31.0~138 X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=commitdiff_plain;h=b61161c26b1711e075a685b00d961978640acb82;hp=9dada94874a646bc63fc73ed1fd431456ce50889 Merge "(refs #7531) Functions first and last to Prelude" --- diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/SVGNode.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/SVGNode.java index 4d6547919..0b1ee8b0d 100644 --- a/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/SVGNode.java +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/SVGNode.java @@ -129,7 +129,7 @@ public class SVGNode extends org.simantics.scenegraph.g2d.nodes.SVGNode { } SingleElementNode getSingleElementNode() { - return (SingleElementNode)NodeUtil.getNearestParentOfType(this, SingleElementNode.class); + return (SingleElementNode)NodeUtil.getPossibleNearestParentOfType(this, SingleElementNode.class); } @Override diff --git a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/utils/NodeUtil.java b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/utils/NodeUtil.java index 615899a59..9439369a5 100644 --- a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/utils/NodeUtil.java +++ b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/utils/NodeUtil.java @@ -97,6 +97,18 @@ public final class NodeUtil { } } + public static INode getPossibleNearestParentOfType(INode node, Class clazz) { + ParentNode parent = null; + while (true) { + parent = node.getParent(); + if (parent == null) + return null; + node = parent; + if (clazz.isInstance(node)) + return node; + } + } + public static INode getRootNode(INode node) { ParentNode parent = null; while (true) {