diff options
author | bptato <nincsnevem662@gmail.com> | 2025-05-03 17:30:56 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2025-05-03 17:49:32 +0200 |
commit | 015aa0fd92ece4bdc1f645131b96369f801ed961 (patch) | |
tree | 1563324b8e12ad6f9275704285fa0e91c941f3be /src/server/buffer.nim | |
parent | cdfa5ea9aa451b6be5790382881431eec2722394 (diff) | |
download | chawan-015aa0fd92ece4bdc1f645131b96369f801ed961.tar.gz |
layout, csstree: build stacking contexts together with tree
We often redo sub-layouts in layout, and this makes stacking contexts very hard to build reliably there. This fixes a bug where positioned descendants of flex items would sometimes mysteriously disappear.
Diffstat (limited to 'src/server/buffer.nim')
-rw-r--r-- | src/server/buffer.nim | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/server/buffer.nim b/src/server/buffer.nim index f8ced08d..6f3e004f 100644 --- a/src/server/buffer.nim +++ b/src/server/buffer.nim @@ -725,9 +725,10 @@ proc maybeReshape(buffer: Buffer) = if document == nil or document.documentElement == nil: return # not parsed yet, nothing to render if document.invalid: - buffer.rootBox = document.documentElement.buildTree(buffer.rootBox, + let stack = document.documentElement.buildTree(buffer.rootBox, buffer.config.markLinks) - let stack = buffer.rootBox.layout(addr buffer.attrs) + buffer.rootBox = BlockBox(stack.box) + buffer.rootBox.layout(addr buffer.attrs) buffer.lines.render(buffer.bgcolor, stack, addr buffer.attrs, buffer.images) document.invalid = false if buffer.hasTask(bcOnReshape): |