From 92bf7d3ba7238e404b9d4ea030d7bf9b9652ff21 Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Mon, 8 Jan 2024 03:16:19 +0100 Subject: [PATCH] LibWeb: Always add "ending" line during lines init in GFC This moves us a bit toward correctly representing two separate concepts from the spec: lines and tracks. Lines divide the grid into tracks, so there should always be a line concluding the last track. --- .../LibWeb/Layout/GridFormattingContext.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp index 8e992c8164..b3238c06cd 100644 --- a/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp @@ -1412,8 +1412,8 @@ void GridFormattingContext::place_grid_items() { auto grid_template_columns = grid_container().computed_values().grid_template_columns(); auto grid_template_rows = grid_container().computed_values().grid_template_rows(); - auto column_count = m_column_lines.size(); - auto row_count = m_row_lines.size(); + auto column_tracks_count = m_column_lines.size() - 1; + auto row_tracks_count = m_row_lines.size() - 1; // https://drafts.csswg.org/css-grid/#overview-placement // 2.2. Placing Items @@ -1437,7 +1437,7 @@ void GridFormattingContext::place_grid_items() return IterationDecision::Continue; }); - m_occupation_grid = OccupationGrid(column_count, row_count); + m_occupation_grid = OccupationGrid(column_tracks_count, row_tracks_count); build_grid_areas(); @@ -1930,8 +1930,8 @@ void GridFormattingContext::run(Box const&, LayoutMode, AvailableSpace const& av auto const& grid_computed_values = grid_container().computed_values(); // NOTE: We store explicit grid sizes to later use in determining the position of items with negative index. - m_explicit_columns_line_count = m_column_lines.size() + 1; - m_explicit_rows_line_count = m_row_lines.size() + 1; + m_explicit_columns_line_count = m_column_lines.size(); + m_explicit_rows_line_count = m_row_lines.size(); place_grid_items(); @@ -2294,8 +2294,7 @@ void GridFormattingContext::init_grid_lines(GridDimension dimension) }; expand_lines_definition(lines_definition); - if (line_names.size() > 0) - lines.append({ .names = line_names }); + lines.append({ .names = line_names }); } void OccupationGrid::set_occupied(int column_start, int column_end, int row_start, int row_end)