diff --git a/d2layouts/d2grid/grid_diagram.go b/d2layouts/d2grid/grid_diagram.go index f9a69b92d..0aa3ce463 100644 --- a/d2layouts/d2grid/grid_diagram.go +++ b/d2layouts/d2grid/grid_diagram.go @@ -123,7 +123,5 @@ func (gd *gridDiagram) cleanup(obj *d2graph.Object, graph *d2graph.Graph) { restore(obj, child) child.IterDescendants(restore) } - for _, e := range gd.edges { - graph.Edges = append(graph.Edges, e) - } + graph.Edges = append(graph.Edges, gd.edges...) } diff --git a/d2layouts/d2grid/layout.go b/d2layouts/d2grid/layout.go index a3fb3a963..709bb4848 100644 --- a/d2layouts/d2grid/layout.go +++ b/d2layouts/d2grid/layout.go @@ -84,6 +84,9 @@ func withoutGridDiagrams(ctx context.Context, g *d2graph.Graph, layout d2graph.L sort.SliceStable(obj.ChildrenArray, func(i, j int) bool { return objectOrder[obj.ChildrenArray[i].AbsID()] < objectOrder[obj.ChildrenArray[j].AbsID()] }) + sort.SliceStable(g.Edges, func(i, j int) bool { + return edgeOrder[g.Edges[i].AbsID()] < edgeOrder[g.Edges[j].AbsID()] + }) for _, o := range tempGraph.Objects { toRemove[o] = struct{}{}