fixed group name and description overflow

This commit is contained in:
2025-07-28 23:45:06 +02:00
parent d6c390f3c5
commit fe01e63dd0

View File

@@ -3,6 +3,9 @@
#import "/src/consts.typ": * #import "/src/consts.typ": *
#import "/src/core/utils.typ": get-ctx, set-ctx, expand-parent-group #import "/src/core/utils.typ": get-ctx, set-ctx, expand-parent-group
#let display-name(name) = text(name, weight: "bold")
#let display-desc(desc) = text([\[#desc\]], weight: "bold", size: .8em)
#let render-start(grp) = get-ctx(ctx => { #let render-start(grp) = get-ctx(ctx => {
let grp = grp let grp = grp
ctx.y -= Y-SPACE ctx.y -= Y-SPACE
@@ -44,8 +47,8 @@
#let draw-group(x0, x1, y0, y1, group) = { #let draw-group(x0, x1, y0, y1, group) = {
let name = text(group.name, weight: "bold") let name = display-name(group.name)
let m = measure(box(name)) let m = measure(name)
let w = m.width / 1pt + 15 let w = m.width / 1pt + 15
let h = m.height / 1pt + 6 let h = m.height / 1pt + 6
draw.rect( draw.rect(
@@ -71,7 +74,7 @@
if group.desc != none { if group.desc != none {
draw.content( draw.content(
(x0 + w, y0), (x0 + w, y0),
text([\[#group.desc\]], weight: "bold", size: .8em), display-desc(group.desc),
anchor: "north-west", anchor: "north-west",
padding: 3pt padding: 3pt
) )
@@ -86,7 +89,7 @@
) )
draw.content( draw.content(
(x0, y), (x0, y),
text([\[#elmt.desc\]], weight: "bold", size: .8em), display-desc(elmt.desc),
anchor: "north-west", anchor: "north-west",
padding: 3pt padding: 3pt
) )
@@ -105,6 +108,22 @@
let x0 = min-x - 10 let x0 = min-x - 10
let x1 = max-x + 10 let x1 = max-x + 10
// Fit name and descriptions
let name-m = measure(display-name(group.name))
let width = name-m.width / 1pt + 15
if group.desc != none {
let desc-m = measure(display-desc(group.desc))
width += desc-m.width / 1pt + 6
}
if group.grp-type == "alt" {
width = calc.max(width, ..group.elses.map(e => {
let elmt = e.at(1)
let desc-m = measure(display-desc(elmt.desc))
return desc-m.width / 1pt + 6
}))
}
x1 = calc.max(x1, x0 + width + 3)
draw-group(x0, x1, start-y, ctx.y, group) draw-group(x0, x1, start-y, ctx.y, group)
if group.grp-type == "alt" { if group.grp-type == "alt" {