From 196a3986d68f795db8afbc04afc34d07298d922a Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 12 Jun 2020 23:18:51 +0200 Subject: [PATCH] LibWeb: First cut of extremely naive table row layout This first version simply auto-sizes all table cells and then places them on a horizontal line. --- Libraries/LibWeb/Layout/LayoutTableRow.cpp | 13 +++++++++++-- Libraries/LibWeb/Layout/LayoutTableRowGroup.cpp | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Libraries/LibWeb/Layout/LayoutTableRow.cpp b/Libraries/LibWeb/Layout/LayoutTableRow.cpp index 44f9209783..e241e642de 100644 --- a/Libraries/LibWeb/Layout/LayoutTableRow.cpp +++ b/Libraries/LibWeb/Layout/LayoutTableRow.cpp @@ -39,9 +39,18 @@ LayoutTableRow::~LayoutTableRow() { } -void LayoutTableRow::layout(LayoutMode layout_mode) +void LayoutTableRow::layout(LayoutMode) { - LayoutBox::layout(layout_mode); + float tallest_cell_height = 0; + float content_width = 0; + for_each_child_of_type([&](auto& cell) { + cell.layout(LayoutMode::OnlyRequiredLineBreaks); + cell.set_offset(effective_offset().translated(content_width, 0)); + content_width += cell.width(); + tallest_cell_height = max(tallest_cell_height, cell.height()); + }); + set_width(content_width); + set_height(tallest_cell_height); } LayoutTableCell* LayoutTableRow::first_cell() diff --git a/Libraries/LibWeb/Layout/LayoutTableRowGroup.cpp b/Libraries/LibWeb/Layout/LayoutTableRowGroup.cpp index 0f60749847..1ae56218a0 100644 --- a/Libraries/LibWeb/Layout/LayoutTableRowGroup.cpp +++ b/Libraries/LibWeb/Layout/LayoutTableRowGroup.cpp @@ -49,6 +49,7 @@ void LayoutTableRowGroup::layout(LayoutMode layout_mode) float content_height = 0; for_each_child_of_type([&](auto& row) { + row.set_offset(0, content_height); row.layout(layout_mode); content_height += row.height(); });