[webkit-changes] [WebKit/WebKit] b3db10: [css-grid] align-items/align-self: last baseline s...
Sammy Gill
noreply at github.com
Wed Oct 25 13:39:31 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b3db1071742474d5876270a3f5bd3d7c391dc083
https://github.com/WebKit/WebKit/commit/b3db1071742474d5876270a3f5bd3d7c391dc083
Author: Sammy Gill <sammy.gill at apple.com>
Date: 2023-10-25 (Wed, 25 Oct 2023)
Changed paths:
M LayoutTests/imported/w3c/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-005-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-006-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-007-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-008-expected.txt
M Source/WebCore/rendering/GridBaselineAlignment.cpp
M Source/WebCore/rendering/GridBaselineAlignment.h
M Source/WebCore/rendering/GridLayoutFunctions.cpp
M Source/WebCore/rendering/GridLayoutFunctions.h
M Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp
Log Message:
-----------
[css-grid] align-items/align-self: last baseline should take into consideration the extra margin from non-orthogonal ancestor subgrids
https://bugs.webkit.org/show_bug.cgi?id=262646
rdar://problem/116484865
Reviewed by Matt Woodrow.
Grid performs last baseline alignment by using the "descent," value of
grid items, which is the distance from the under side of the grid item's
margin box to its ascent value. For subgridded items, this can include
extra margins imposed by ancestor subgrids. In order to properly
support subgridded items for last baseline alignment we need the extra
layer of margin on the under side of the grid item so that we can
properly compute its descent value. This patch is a first step at that
by focusing on the scenario in which we are aligning in the grid's
column axis (align-self/align-items) and there are no orthogonal
ancestor subgrids or orthogonal "root," grid.
This requires 3 main changes:
1.) Start using extraMarginForSubgridAncestors() to compute the margins
imposed by the ancestor subgrids. Previously, for first baseline
alignment, we were walking up the ancestor subgrid chain and collecting
the extra layer of margin. extraMarginForSubgridAncestors() already did
this (and includes the subgrids' gutters), so we should be using this
instead of duplicating code.
2.) Refactor extraMarginForSubgrid and extraMarginForSubgridAncestors
to return a new type: ExtraMarginsFromSubgrids. Instead of returning the
sum of the extra layer of margins both both sides of the track, this
struct keeps them separate and allows the caller to choose whether they
want the sum or the margins on a specific side.
3.) Pass extraTotalMargin() to descentForChild(). Since the descent
value is computed by finding the distance from the grid item's under
side of the margin box, extraTotalMargin() is needed to find the correct
side of the item's margin box with the extra layer of margins.
* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-005-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-006-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-007-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/subgrid/subgrid-baseline-008-expected.txt:
* Source/WebCore/rendering/GridBaselineAlignment.cpp:
(WebCore::GridBaselineAlignment::logicalAscentForChild const):
(WebCore::GridBaselineAlignment::ascentForChild const):
(WebCore::GridBaselineAlignment::descentForChild const):
* Source/WebCore/rendering/GridBaselineAlignment.h:
* Source/WebCore/rendering/GridLayoutFunctions.cpp:
(WebCore::GridLayoutFunctions::extraMarginForSubgrid):
(WebCore::GridLayoutFunctions::extraMarginForSubgridAncestors):
(WebCore::GridLayoutFunctions::marginLogicalSizeForChild):
* Source/WebCore/rendering/GridLayoutFunctions.h:
(WebCore::ExtraMarginsFromSubgrids::extraTrackStartMargin const):
(WebCore::ExtraMarginsFromSubgrids::extraTrackEndMargin const):
(WebCore::ExtraMarginsFromSubgrids::extraTotalMargin const):
(WebCore::ExtraMarginsFromSubgrids::operator+=):
(WebCore::ExtraMarginsFromSubgrids::addTrackStartMargin):
(WebCore::ExtraMarginsFromSubgrids::addTrackEndMargin):
* Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:
(WebCore::GridTrackSizingAlgorithmStrategy::updateOverridingContainingBlockContentSizeForChild const):
Canonical link: https://commits.webkit.org/269781@main
More information about the webkit-changes
mailing list