From 025b49661655dfba5d50f94c9948c5c3b3fd416b Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Tue, 24 Jan 2023 17:20:24 +0300 Subject: [PATCH] LibWeb: Improve column width distribution --- .../LibWeb/Layout/TableFormattingContext.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp index de232faf31e..23f1572ca8d 100644 --- a/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp @@ -346,6 +346,20 @@ void TableFormattingContext::distribute_width_to_columns() if (columns_total_used_width() < available_width) { expand_columns_to_fill_available_width(ColumnType::Percent); } + + if (columns_total_used_width() < available_width) { + // NOTE: if all columns got their max width and there is still width to distribute left + // it should be assigned to columns proportionally to their max width + CSSPixels grid_max = 0.0f; + for (auto& column : m_columns) { + grid_max += column.max_width; + } + + auto width_to_distribute = available_width - columns_total_used_width(); + for (auto& column : m_columns) { + column.used_width += width_to_distribute * column.max_width / grid_max; + } + } } void TableFormattingContext::determine_intrisic_size_of_table_container(AvailableSpace const& available_space)