in diagram/src/main/java/jetbrains/jetpad/projectional/diagram/layout/OrthogonalRouter.java [37:69]
public void findRoutes(DiagramView diagramView) {
Set<Rectangle> invalidChildrenRects = new HashSet<>();
for (View child : getItems(diagramView)) {
boolean valid = child.valid().get();
child.validate();
if (!valid) {
invalidChildrenRects.add(getLayoutBounds(child.bounds().get()));
}
}
Set<View> invalidInputs = new HashSet<>();
for (Connection c: diagramView.connections) {
if (!isValid(c)) {
View input = ((PolyLineConnection) c).fromView().get();
if (input != null) {
invalidInputs.add(input);
}
}
}
for (Connection c: diagramView.connections) {
if (!isValid(c)) continue;
if (intersects((PolyLineConnection) c, invalidChildrenRects)) {
c.view().invalidate();
}
View input = ((PolyLineConnection) c).fromView().get();
if (input != null && invalidInputs.contains(input)) {
c.view().invalidate();
}
}
reroute(diagramView);
}