Bug 1947482: Anchor resolution takes axis, not side. r=firefox-style-system-reviewers,emilio

Differential Revision: https://phabricator.services.mozilla.com/D238962
This commit is contained in:
David Shin
2025-02-20 18:26:22 +00:00
parent 41b43cea76
commit 894d84866a
11 changed files with 66 additions and 68 deletions

View File

@@ -1911,8 +1911,7 @@ already_AddRefed<CSSValue> nsComputedDOMStyle::GetNonStaticPositionOffset(
const nsStylePosition* positionData = StylePosition();
int32_t sign = 1;
const auto positionProperty = StyleDisplay()->mPosition;
auto side = aSide;
auto coord = positionData->GetAnchorResolvedInset(side, positionProperty);
auto coord = positionData->GetAnchorResolvedInset(aSide, positionProperty);
if (coord->IsAuto()) {
if (!aResolveAuto) {
@@ -1920,8 +1919,8 @@ already_AddRefed<CSSValue> nsComputedDOMStyle::GetNonStaticPositionOffset(
val->SetString("auto");
return val.forget();
}
side = NS_OPPOSITE_SIDE(side);
coord = positionData->GetAnchorResolvedInset(side, positionProperty);
coord = positionData->GetAnchorResolvedInset(NS_OPPOSITE_SIDE(aSide),
positionProperty);
sign = -1;
}
if (coord->IsAuto()) {
@@ -1941,11 +1940,8 @@ already_AddRefed<CSSValue> nsComputedDOMStyle::GetNonStaticPositionOffset(
return PixelsToCSSValue(0.0f);
}
// TODO(dshin, bug 1947482): Anchor resolution only cares about the axis it's
// being resolved in, so we should be able to use `PhysicalAxis` and not worry
// about keeping track of `side`.
nscoord result = lp.ResolveWithAnchor(
percentageBase, ToStylePhysicalSide(side), positionProperty);
percentageBase, GetStylePhysicalAxis(aSide), positionProperty);
return AppUnitsToCSSValue(sign * result);
}