) [10,10 33.609375x19.46875]
+ PaintableWithLines (BlockContainer.ab) [10,10 33.609375x19.46875]
+ TextPaintable (TextNode<#text>)
+ PaintableWithLines (BlockContainer(anonymous)) [8,31.46875 784x0]
diff --git a/Tests/LibWeb/Layout/input/table/keyword-value-does-not-constrain-column.html b/Tests/LibWeb/Layout/input/table/keyword-value-does-not-constrain-column.html
new file mode 100644
index 0000000000..5dea3be1b9
--- /dev/null
+++ b/Tests/LibWeb/Layout/input/table/keyword-value-does-not-constrain-column.html
@@ -0,0 +1,5 @@
+
diff --git a/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp
index 3721933887..44918d5b29 100644
--- a/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp
+++ b/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp
@@ -62,11 +62,13 @@ CSSPixels TableFormattingContext::run_caption_layout(LayoutMode layout_mode, CSS
void TableFormattingContext::compute_constrainedness()
{
// Definition of constrainedness: https://www.w3.org/TR/css-tables-3/#constrainedness
+ // NB: The definition uses https://www.w3.org/TR/CSS21/visudet.html#propdef-width for width, which doesn't include
+ // keyword values. The remaining checks can be simplified to checking whether the size is a length.
size_t column_index = 0;
TableGrid::for_each_child_box_matching(table_box(), is_table_column_group, [&](auto& column_group_box) {
TableGrid::for_each_child_box_matching(column_group_box, is_table_column, [&](auto& column_box) {
auto const& computed_values = column_box.computed_values();
- if (!computed_values.width().is_auto() && !computed_values.width().is_percentage()) {
+ if (computed_values.width().is_length()) {
m_columns[column_index].is_constrained = true;
}
auto const& col_node = static_cast(*column_box.dom_node());
@@ -77,18 +79,18 @@ void TableFormattingContext::compute_constrainedness()
for (auto& row : m_rows) {
auto const& computed_values = row.box->computed_values();
- if (!computed_values.height().is_auto() && !computed_values.height().is_percentage()) {
+ if (computed_values.height().is_length()) {
row.is_constrained = true;
}
}
for (auto& cell : m_cells) {
auto const& computed_values = cell.box->computed_values();
- if (!computed_values.width().is_auto() && !computed_values.width().is_percentage()) {
+ if (computed_values.width().is_length()) {
m_columns[cell.column_index].is_constrained = true;
}
- if (!computed_values.height().is_auto() && !computed_values.height().is_percentage()) {
+ if (computed_values.height().is_length()) {
m_rows[cell.row_index].is_constrained = true;
}
}
|