diff --git a/Libraries/LibWeb/Layout/GridFormattingContext.cpp b/Libraries/LibWeb/Layout/GridFormattingContext.cpp index 04180317db..5225500c48 100644 --- a/Libraries/LibWeb/Layout/GridFormattingContext.cpp +++ b/Libraries/LibWeb/Layout/GridFormattingContext.cpp @@ -361,6 +361,8 @@ void GridFormattingContext::for_each_subgrid_item_contributing_to_track_sizing(G // This introspection is recursive. GridFormattingContext subgrid_context(m_state, LayoutMode::IntrinsicSizing, subgrid.box, this); subgrid_context.m_available_space = *m_available_space; + if (dimension == GridDimension::Row && subgrid.used_values.has_definite_width()) + subgrid_context.m_available_space->width = AvailableSize::make_definite(subgrid.used_values.content_width()); subgrid_context.init_grid_lines(GridDimension::Column); subgrid_context.init_grid_lines(GridDimension::Row); subgrid_context.build_grid_areas(); @@ -368,7 +370,7 @@ void GridFormattingContext::for_each_subgrid_item_contributing_to_track_sizing(G subgrid_context.m_explicit_rows_line_count = subgrid_context.m_row_lines.size(); subgrid_context.place_grid_items(); subgrid_context.initialize_grid_tracks_for_columns_and_rows(); - subgrid_context.initialize_gap_tracks(*m_available_space); + subgrid_context.initialize_gap_tracks(*subgrid_context.m_available_space); if (dimension == GridDimension::Row) { subgrid_context.resolve_items_box_metrics(GridDimension::Column); diff --git a/Tests/LibWeb/Layout/expected/grid/subgrid-row-contribution-uses-resolved-fr-column-width.txt b/Tests/LibWeb/Layout/expected/grid/subgrid-row-contribution-uses-resolved-fr-column-width.txt new file mode 100644 index 0000000000..90a4cf6549 --- /dev/null +++ b/Tests/LibWeb/Layout/expected/grid/subgrid-row-contribution-uses-resolved-fr-column-width.txt @@ -0,0 +1,33 @@ +Viewport <#document> at [0,0] [0+0+0 800 0+0+0] [0+0+0 600 0+0+0] [BFC] children: not-inline + BlockContainer at [1,1] [0+1+0 798 0+1+0] [0+1+0 67 0+1+0] [BFC] children: not-inline + BlockContainer at [2,2] [0+1+0 796 0+1+0] [0+1+0 65 0+1+0] children: not-inline + Box at [3,3] [0+1+0 766 0+1+28] [0+1+0 63 0+1+0] [GFC] children: not-inline + BlockContainer <(anonymous)> (not painted) [BFC] children: inline + TextNode <#text> (not painted) + Box at [4,4] [0+1+0 245.328125 0+1+0] [0+1+0 61 0+1+0] [GFC] children: not-inline + BlockContainer <(anonymous)> (not painted) [BFC] children: inline + TextNode <#text> (not painted) + BlockContainer

at [5,5] [0+1+0 243.328125 0+1+0] [0+1+0 37 0+1+0] [BFC] children: inline + frag 0 from TextNode start: 0, length: 26, rect: [5,5 222.375x18] baseline: 13.796875 + "Some long text that should" + frag 1 from TextNode start: 27, length: 26, rect: [5,23 219.03125x18] baseline: 13.796875 + "wrap over to the next line" + TextNode <#text> (not painted) + BlockContainer <(anonymous)> (not painted) [BFC] children: inline + TextNode <#text> (not painted) + BlockContainer <(anonymous)> (not painted) [BFC] children: inline + TextNode <#text> (not painted) + BlockContainer <(anonymous)> at [2,67] [0+0+0 796 0+0+0] [0+0+0 0 0+0+0] children: inline + TextNode <#text> (not painted) + +ViewportPaintable (Viewport<#document>) [0,0 800x600] + PaintableWithLines (BlockContainer) [0,0 800x69] + PaintableWithLines (BlockContainer) [1,1 798x67] + PaintableBox (Box

.outer) [2,2 768x65] + PaintableBox (Box
.card) [3,3 247.328125x63] + PaintableWithLines (BlockContainer

) [4,4 245.328125x39] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer(anonymous)) [2,67 796x0] + +SC for Viewport<#document> [0,0 800x600] (z-index: auto) + SC for BlockContainer [1,1 798x67] (z-index: auto) diff --git a/Tests/LibWeb/Layout/input/grid/subgrid-row-contribution-uses-resolved-fr-column-width.html b/Tests/LibWeb/Layout/input/grid/subgrid-row-contribution-uses-resolved-fr-column-width.html new file mode 100644 index 0000000000..b208c3dce9 --- /dev/null +++ b/Tests/LibWeb/Layout/input/grid/subgrid-row-contribution-uses-resolved-fr-column-width.html @@ -0,0 +1,28 @@ + + +

+
+

Some long text that should wrap over to the next line

+
+