Title: [292221] trunk/Source/WebCore
Revision
292221
Author
[email protected]
Date
2022-04-01 07:45:00 -0700 (Fri, 01 Apr 2022)

Log Message

Add RenderGrid parameter to resolveGridPositionsFromStyle
https://bugs.webkit.org/show_bug.cgi?id=238660

Patch by Rob Buis <[email protected]> on 2022-04-01
Reviewed by Javier Fernandez.

The containing block of an out of flow grid item does
not have to be of type RenderGrid. To obtain the correct
RenderGrid pass it at the time the RenderGrid calls
resolveGridPositionsFromStyle.

* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::populateExplicitGridAndOrderIterator const):
(WebCore::RenderGrid::computeGridPositionsForOutOfFlowChild const):
* rendering/style/GridPositionsResolver.cpp:
(WebCore::GridPositionsResolver::resolveGridPositionsFromStyle):
* rendering/style/GridPositionsResolver.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (292220 => 292221)


--- trunk/Source/WebCore/ChangeLog	2022-04-01 14:39:36 UTC (rev 292220)
+++ trunk/Source/WebCore/ChangeLog	2022-04-01 14:45:00 UTC (rev 292221)
@@ -1,3 +1,22 @@
+2022-04-01  Rob Buis  <[email protected]>
+
+        Add RenderGrid parameter to resolveGridPositionsFromStyle
+        https://bugs.webkit.org/show_bug.cgi?id=238660
+
+        Reviewed by Javier Fernandez.
+
+        The containing block of an out of flow grid item does
+        not have to be of type RenderGrid. To obtain the correct
+        RenderGrid pass it at the time the RenderGrid calls
+        resolveGridPositionsFromStyle.
+
+        * rendering/RenderGrid.cpp:
+        (WebCore::RenderGrid::populateExplicitGridAndOrderIterator const):
+        (WebCore::RenderGrid::computeGridPositionsForOutOfFlowChild const):
+        * rendering/style/GridPositionsResolver.cpp:
+        (WebCore::GridPositionsResolver::resolveGridPositionsFromStyle):
+        * rendering/style/GridPositionsResolver.h:
+
 2022-04-01  Chris Dumez  <[email protected]>
 
         Unreviewed, update DerivedSources-output.xcfilelist to fix build.

Modified: trunk/Source/WebCore/rendering/RenderGrid.cpp (292220 => 292221)


--- trunk/Source/WebCore/rendering/RenderGrid.cpp	2022-04-01 14:39:36 UTC (rev 292220)
+++ trunk/Source/WebCore/rendering/RenderGrid.cpp	2022-04-01 14:45:00 UTC (rev 292221)
@@ -801,7 +801,7 @@
         if (!populator.collectChild(*child))
             continue;
         
-        GridSpan rowPositions = GridPositionsResolver::resolveGridPositionsFromStyle(*child, ForRows);
+        GridSpan rowPositions = GridPositionsResolver::resolveGridPositionsFromStyle(*this, *child, ForRows);
         if (!isSubgridRows()) {
             if (!rowPositions.isIndefinite()) {
                 explicitRowStart = std::max<int>(explicitRowStart, -rowPositions.untranslatedStartLine());
@@ -813,7 +813,7 @@
             }
         }
 
-        GridSpan columnPositions = GridPositionsResolver::resolveGridPositionsFromStyle(*child, ForColumns);
+        GridSpan columnPositions = GridPositionsResolver::resolveGridPositionsFromStyle(*this, *child, ForColumns);
         if (!isSubgridColumns()) {
             if (!columnPositions.isIndefinite()) {
                 explicitColumnStart = std::max<int>(explicitColumnStart, -columnPositions.untranslatedStartLine());
@@ -2052,7 +2052,7 @@
 {
     ASSERT(child.isOutOfFlowPositioned());
     int lastLine = numTracks(direction, m_grid);
-    GridSpan span = GridPositionsResolver::resolveGridPositionsFromStyle(child, direction);
+    GridSpan span = GridPositionsResolver::resolveGridPositionsFromStyle(*this, child, direction);
     if (span.isIndefinite())
         return false;
 

Modified: trunk/Source/WebCore/rendering/style/GridPositionsResolver.cpp (292220 => 292221)


--- trunk/Source/WebCore/rendering/style/GridPositionsResolver.cpp	2022-04-01 14:39:36 UTC (rev 292220)
+++ trunk/Source/WebCore/rendering/style/GridPositionsResolver.cpp	2022-04-01 14:45:00 UTC (rev 292221)
@@ -595,11 +595,8 @@
     return 0;
 }
 
-GridSpan GridPositionsResolver::resolveGridPositionsFromStyle(const RenderBox& gridItem, GridTrackSizingDirection direction)
+GridSpan GridPositionsResolver::resolveGridPositionsFromStyle(const RenderGrid& gridContainer, const RenderBox& gridItem, GridTrackSizingDirection direction)
 {
-    auto* gridContainer = downcast<RenderGrid>(gridItem.containingBlock());
-    ASSERT(gridContainer);
-
     GridPosition initialPosition, finalPosition;
     adjustGridPositionsFromStyle(gridItem, direction, initialPosition, finalPosition);
 
@@ -612,18 +609,18 @@
 
     if (initialPosition.shouldBeResolvedAgainstOppositePosition()) {
         // Infer the position from the final position ('auto / 1' or 'span 2 / 3' case).
-        auto endLine = resolveGridPositionFromStyle(*gridContainer, finalPosition, finalSide);
-        return resolveGridPositionAgainstOppositePosition(*gridContainer, endLine, initialPosition, initialSide);
+        auto endLine = resolveGridPositionFromStyle(gridContainer, finalPosition, finalSide);
+        return resolveGridPositionAgainstOppositePosition(gridContainer, endLine, initialPosition, initialSide);
     }
 
     if (finalPosition.shouldBeResolvedAgainstOppositePosition()) {
         // Infer our position from the initial position ('1 / auto' or '3 / span 2' case).
-        auto startLine = resolveGridPositionFromStyle(*gridContainer, initialPosition, initialSide);
-        return resolveGridPositionAgainstOppositePosition(*gridContainer, startLine, finalPosition, finalSide);
+        auto startLine = resolveGridPositionFromStyle(gridContainer, initialPosition, initialSide);
+        return resolveGridPositionAgainstOppositePosition(gridContainer, startLine, finalPosition, finalSide);
     }
 
-    int startLine = resolveGridPositionFromStyle(*gridContainer, initialPosition, initialSide);
-    int endLine = resolveGridPositionFromStyle(*gridContainer, finalPosition, finalSide);
+    int startLine = resolveGridPositionFromStyle(gridContainer, initialPosition, initialSide);
+    int endLine = resolveGridPositionFromStyle(gridContainer, finalPosition, finalSide);
 
     if (startLine > endLine)
         std::swap(startLine, endLine);

Modified: trunk/Source/WebCore/rendering/style/GridPositionsResolver.h (292220 => 292221)


--- trunk/Source/WebCore/rendering/style/GridPositionsResolver.h	2022-04-01 14:39:36 UTC (rev 292220)
+++ trunk/Source/WebCore/rendering/style/GridPositionsResolver.h	2022-04-01 14:45:00 UTC (rev 292221)
@@ -91,7 +91,7 @@
     static GridPositionSide initialPositionSide(GridTrackSizingDirection);
     static GridPositionSide finalPositionSide(GridTrackSizingDirection);
     static unsigned spanSizeForAutoPlacedItem(const RenderBox&, GridTrackSizingDirection);
-    static GridSpan resolveGridPositionsFromStyle(const RenderBox&, GridTrackSizingDirection);
+    static GridSpan resolveGridPositionsFromStyle(const RenderGrid& gridContainer, const RenderBox&, GridTrackSizingDirection);
     static unsigned explicitGridColumnCount(const RenderGrid&);
     static unsigned explicitGridRowCount(const RenderGrid&);
 };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to