diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/css/csstree.nim | 5 | ||||
-rw-r--r-- | src/css/layout.nim | 17 |
2 files changed, 13 insertions, 9 deletions
diff --git a/src/css/csstree.nim b/src/css/csstree.nim index 80d73758..79872920 100644 --- a/src/css/csstree.nim +++ b/src/css/csstree.nim @@ -263,6 +263,11 @@ proc getParent(frame: var TreeFrame; computed: CSSValues; display: CSSDisplay): if frame.computed{"list-style-position"} == ListStylePositionOutside and frame.children.len >= 2: return frame.children[1].anonChildren + of DisplayTableCell: + if frame.anonComputed == nil: + frame.anonComputed = frame.inheritFor(DisplayFlowRoot) + frame.children.add(initStyledAnon(frame.parent, frame.anonComputed)) + return frame.children[^1].anonChildren elif display in DisplayInternalTable: return frame.addAnonTable(parentDisplay, display) else: diff --git a/src/css/layout.nim b/src/css/layout.nim index 7d94c138..f943d55e 100644 --- a/src/css/layout.nim +++ b/src/css/layout.nim @@ -2322,15 +2322,14 @@ proc preLayoutTableRow(pctx: var TableContext; row, parent: BlockBox; return ctx proc alignTableCell(cell: BlockBox; availableHeight, baseline: LUnit) = - case cell.computed{"vertical-align"}.keyword - of VerticalAlignTop: - cell.state.offset.y = 0 - of VerticalAlignMiddle: - cell.state.offset.y = availableHeight div 2 - cell.state.size.h div 2 - of VerticalAlignBottom: - cell.state.offset.y = availableHeight - cell.state.size.h - else: - cell.state.offset.y = baseline - cell.state.firstBaseline + let firstChild = BlockBox(cell.firstChild) + if firstChild != nil: + firstChild.state.offset.y = case cell.computed{"vertical-align"}.keyword + of VerticalAlignTop: 0.toLUnit() + of VerticalAlignMiddle: availableHeight div 2 - cell.state.size.h div 2 + of VerticalAlignBottom: availableHeight - cell.state.size.h + else: baseline - cell.state.firstBaseline + cell.state.size.h = availableHeight proc layoutTableRow(tctx: TableContext; ctx: RowContext; parent, row: BlockBox) = |