diff --git a/src/core/draw/sequence.typ b/src/core/draw/sequence.typ index ac26b7d..d0d15a6 100644 --- a/src/core/draw/sequence.typ +++ b/src/core/draw/sequence.typ @@ -137,13 +137,21 @@ end-info.ll-lvl = ctx.lifelines.at(i2).level * LIFELINE-W / 2 // Compute left/right position at start/end - start-info.insert("lx", start-info.x) - if start-info.ll-lvl != 0 { start-info.lx -= LIFELINE-W / 2 } - end-info.insert("lx", end-info.x) - if end-info.ll-lvl != 0 { end-info.lx -= LIFELINE-W / 2 } - start-info.insert("rx", start-info.x + start-info.ll-lvl) end-info.insert("rx", end-info.x + end-info.ll-lvl) + let start-lx + let end-lx + if seq.outer-lifeline-connect { + start-lx = start-info.x + end-lx = end-info.x + if start-info.ll-lvl != 0 {start-lx -= LIFELINE-W / 2} + if end-info.ll-lvl != 0 {end-lx -= LIFELINE-W / 2} + } else { + start-lx = start-info.rx - LIFELINE-W + end-lx = end-info.rx - LIFELINE-W + } + start-info.insert("lx", start-lx) + end-info.insert("lx", end-lx) // Choose correct points to link let x1 = start-info.rx diff --git a/src/sequence.typ b/src/sequence.typ index a328f4a..c916996 100644 --- a/src/sequence.typ +++ b/src/sequence.typ @@ -17,7 +17,8 @@ disable-src: false, destroy-src: false, lifeline-style: auto, - slant: none + slant: none, + outer-lifeline-connect: false ) = { return (( type: "seq", @@ -39,6 +40,7 @@ destroy-src: destroy-src, lifeline-style: lifeline-style, slant: slant, + outer-lifeline-connect: outer-lifeline-connect, linked-notes: () ),) }