Browse Source

LibWeb: Respect box-sizing in min-height calculation of grid container

Aliaksandr Kalenik 1 year ago
parent
commit
ed42b12123

+ 9 - 0
Tests/LibWeb/Layout/expected/grid/grid-container-min-height-border-box.txt

@@ -0,0 +1,9 @@
+Viewport <#document> at (0,0) content-size 800x600 children: not-inline
+  BlockContainer <html> at (0,0) content-size 800x600 [BFC] children: not-inline
+    BlockContainer <body> at (8,8) content-size 784x300 children: not-inline
+      Box <div.box> at (8,208) content-size 784x100 [GFC] children: not-inline
+
+ViewportPaintable (Viewport<#document>) [0,0 800x600]
+  PaintableWithLines (BlockContainer<HTML>) [0,0 800x600]
+    PaintableWithLines (BlockContainer<BODY>) [8,8 784x300]
+      PaintableBox (Box<DIV>.box) [8,8 784x300]

+ 9 - 0
Tests/LibWeb/Layout/input/grid/grid-container-min-height-border-box.html

@@ -0,0 +1,9 @@
+<style type="text/css">
+.box {
+    display: grid;
+    min-height: 300px;
+    padding-top: 200px;
+    box-sizing: border-box;
+    background-color: magenta;
+}
+</style><div class="box"></div>

+ 2 - 1
Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp

@@ -1924,7 +1924,8 @@ void GridFormattingContext::run(Box const&, LayoutMode, AvailableSpace const& av
 
     auto const& containing_block_state = m_state.get(*grid_container().containing_block());
     auto height_of_containing_block = containing_block_state.content_height();
-    auto min_height = grid_container().computed_values().min_height().to_px(grid_container(), height_of_containing_block);
+    auto height_of_container_block_as_available_size = AvailableSize::make_definite(height_of_containing_block);
+    auto min_height = calculate_inner_height(grid_container(), height_of_container_block_as_available_size, grid_computed_values.min_height()).to_px(grid_container());
 
     // If automatic grid container height is less than min-height, we need to re-run the track sizing algorithm
     if (m_automatic_content_height < min_height) {