diff --git a/diylc/diylc-core/src/org/diylc/netlist/ContinuityGraph.java b/diylc/diylc-core/src/org/diylc/netlist/ContinuityGraph.java index 5a99b139..6bd11aab 100644 --- a/diylc/diylc-core/src/org/diylc/netlist/ContinuityGraph.java +++ b/diylc/diylc-core/src/org/diylc/netlist/ContinuityGraph.java @@ -20,6 +20,7 @@ package org.diylc.netlist; import java.awt.geom.Area; import java.awt.geom.Point2D; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Optional; @@ -45,14 +46,19 @@ public class ContinuityGraph { } public List findAreasFor(Point2D point) { - Optional first = groupTree.search(point, NetlistBuilder.eps).stream() - .filter(node -> node.getArea().getArea().contains(point)).findFirst(); - - return first.map(node -> - areaGroupMap.get(node.getGroupId()) + List matchingNodes = groupTree.search(point, NetlistBuilder.eps) + .stream() + .filter(node -> node.getArea().getArea().contains(point)) + .sorted(Comparator.comparing(x -> x.getArea().getZIndex(), Comparator.reverseOrder())) + .collect(Collectors.toList()); + + if (matchingNodes.isEmpty()) + return null; + + return areaGroupMap.get(matchingNodes.get(0).getGroupId()) .stream() .map(x -> x.getArea()) - .collect(Collectors.toList())).orElse(null); + .collect(Collectors.toList()); } public static class ContinuityNode { diff --git a/diylc/diylc-swing/dict.txt b/diylc/diylc-swing/dict.txt index 5f715562..7c7e3f0d 100644 --- a/diylc/diylc-swing/dict.txt +++ b/diylc/diylc-swing/dict.txt @@ -49,6 +49,7 @@ AWG Alternate And Angle Offset +Apply Model B-C-E BJT Background Box @@ -93,6 +94,7 @@ G-D-S MOSFET G-O-I REGULATOR G-S-D JFET G-S-D MOSFET +GF1 Generate DIYLC Netlist (excl. Switches) Generate DIYLC Netlist (incl. Switches) Gray