Issue #146 - Part 5: Treat table row groups as containing blocks.

This aligns our behavior with Gecko/Blink.
This commit is contained in:
wolfbeast 2019-11-03 19:09:47 +01:00 committed by Roy Tam
commit af75c920b0
2 changed files with 11 additions and 0 deletions

View file

@ -176,6 +176,14 @@ StickyScrollContainer::ComputeStickyLimits(nsIFrame* aFrame, nsRect* aStick,
nsRect rect =
nsLayoutUtils::GetAllInFlowRectsUnion(aFrame, aFrame->GetParent());
// Note: Table row groups aren't supposed to be containing blocks, but we treat
// them as such anyway.
// Not having this basically disables position:sticky on table cells, which
// would be really unfortunate, and doesn't match what other browsers do.
if (cbFrame != scrolledFrame && cbFrame->GetType() == nsGkAtoms::tableRowGroupFrame) {
cbFrame = cbFrame->GetContainingBlock();
}
// Containing block limits for the position of aFrame relative to its parent.
// The margin box of the sticky element stays within the content box of the
// contaning-block element.