X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.diagram.connection%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fconnection%2FRouteGraph.java;h=fe93717662b2220c840ca38d2be848ed2c542d3b;hp=9b707eae7e51524ec96c298042d9694e369cd4e5;hb=0aa36e79f7b28000438c21d266c2f5d4fc7e83f5;hpb=e1625a29f6437d99dde2b911fa41a8d909746253 diff --git a/bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/RouteGraph.java b/bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/RouteGraph.java index 9b707eae7..fe9371766 100644 --- a/bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/RouteGraph.java +++ b/bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/RouteGraph.java @@ -21,9 +21,10 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; +import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import java.util.TreeMap; +import java.util.stream.Collectors; import org.simantics.diagram.connection.rendering.arrows.ILineEndStyle; import org.simantics.diagram.connection.rendering.arrows.PlainLineEndStyle; @@ -1412,9 +1413,7 @@ public class RouteGraph implements Serializable { } // Analyze graph - Map begins = -// new THashMap(); //The ordering of the coordinates in the path should be deterministic between scenegraphs - new TreeMap(RG_COMP); + Map begins = new HashMap(); for(RouteLine line : lines) { add(begins, line); } @@ -1428,7 +1427,9 @@ public class RouteGraph implements Serializable { } // Create paths - for(RoutePoint begin : begins.keySet().toArray(new RoutePoint[begins.size()])) { + // Sort the begins so that the order of segments is deterministic. This is required when comparing e.g. SVG diagrams. + // In case of overlapping begins the order may vary. + for(RoutePoint begin : begins.keySet().stream().sorted(RG_COMP).collect(Collectors.toList())) { RouteLine curLine = begins.remove(begin); drawContinuousPath(path, begins, begin, curLine); }