diff options
author | bptato <nincsnevem662@gmail.com> | 2024-04-16 09:27:45 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2024-04-16 09:27:45 +0200 |
commit | 191d71795c5a56b0e517fa8b888a06cade77641b (patch) | |
tree | f1dafe2fc2fb2555c55ff2a7cc3b3d06b3a3df58 | |
parent | aebf28ff0be104f97e5eaf8e61126bed132ad04b (diff) | |
download | chawan-191d71795c5a56b0e517fa8b888a06cade77641b.tar.gz |
layout: fix list-item positioning
we also have to move the inner box offset to the parent
-rw-r--r-- | src/layout/box.nim | 7 | ||||
-rw-r--r-- | src/layout/engine.nim | 8 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/layout/box.nim b/src/layout/box.nim index bbb3d91e..79f927ef 100644 --- a/src/layout/box.nim +++ b/src/layout/box.nim @@ -76,3 +76,10 @@ type firstBaseline*: LayoutUnit # baseline of the last line box of all descendants baseline*: LayoutUnit + +func `+`*(a, b: Offset): Offset = + return Offset(x: a.x + b.x, y: a.y + b.y) + +proc `+=`*(a: var Offset; b: Offset) = + a.x += b.x + a.y += b.y diff --git a/src/layout/engine.nim b/src/layout/engine.nim index aea9f2c8..788824da 100644 --- a/src/layout/engine.nim +++ b/src/layout/engine.nim @@ -1348,7 +1348,7 @@ proc layoutListItem(bctx: var BlockContext; box: BlockBox; if builder.marker != nil: # wrap marker + main box in a new box let innerBox = BlockBox( - computed: builder.computed, + computed: builder.content.computed, node: builder.node, offset: Offset(x: sizes.margin.left), margin: sizes.margin @@ -1373,9 +1373,11 @@ proc layoutListItem(bctx: var BlockContext; box: BlockBox; box.baseline = innerBox.baseline box.firstBaseline = innerBox.firstBaseline box.size = innerBox.size - # innerBox can keep its margin without double margin, it won't be used - # anymore. + # move innerBox margin & offset to outer box + box.offset += innerBox.offset box.margin = innerBox.margin + innerBox.offset = Offset() + innerBox.margin = RelativeRect() box.nested = @[marker, innerBox] else: bctx.layoutFlow(box, builder.content, sizes) |