summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Base/res/html/misc/display-grid.html8
-rw-r--r--Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp6
2 files changed, 14 insertions, 0 deletions
diff --git a/Base/res/html/misc/display-grid.html b/Base/res/html/misc/display-grid.html
index 812d6c9b94..4b50444c51 100644
--- a/Base/res/html/misc/display-grid.html
+++ b/Base/res/html/misc/display-grid.html
@@ -40,6 +40,14 @@
<div class="grid-item">1</div>
</div>
+<!-- Spans causing positions outside the inherit grid. (span 2 with an end position of 1 causes the start to be -1) -->
+<p>If you can see this message then the test passed.</p>
+<div class="grid-container">
+ <div class="grid-item" style="grid-row: span 2 / 1; grid-column: span 2 / 1;">1</div>
+ <div class="grid-item" style="grid-row: span 2 / 1;">2</div>
+ <div class="grid-item" style="grid-column: span 2 / 1;">3</div>
+</div>
+
<!-- Different column sizes -->
<p>Should render a 2x2 grid with columns 50px and 50%</p>
<div
diff --git a/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp
index dbacea653a..7b607cd0fd 100644
--- a/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp
+++ b/Userland/Libraries/LibWeb/Layout/GridFormattingContext.cpp
@@ -225,6 +225,9 @@ void GridFormattingContext::run(Box const& box, LayoutMode, AvailableSpace const
if (child_box.computed_values().grid_row_end().is_position() && child_box.computed_values().grid_row_start().is_span()) {
row_span = child_box.computed_values().grid_row_start().raw_value();
row_start = row_end - row_span;
+ // FIXME: Remove me once have implemented spans overflowing into negative indexes, e.g., grid-row: span 2 / 1
+ if (row_start < 0)
+ row_start = 1;
}
// If a name is given as a <custom-ident>, only lines with that name are counted. If not enough
@@ -354,6 +357,9 @@ void GridFormattingContext::run(Box const& box, LayoutMode, AvailableSpace const
if (child_box.computed_values().grid_column_end().is_position() && child_box.computed_values().grid_column_start().is_span()) {
column_span = child_box.computed_values().grid_column_start().raw_value();
column_start = column_end - column_span;
+ // FIXME: Remove me once have implemented spans overflowing into negative indexes, e.g., grid-column: span 2 / 1
+ if (column_start < 0)
+ column_start = 1;
}
// If a name is given as a <custom-ident>, only lines with that name are counted. If not enough