diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-11-03 19:09:47 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-11-03 19:09:47 +0100 |
commit | ce11d5cae866f24b8f7435cdc3725cfd2748595b (patch) | |
tree | c503edc95b12a46ee9e01427861aba8743d88212 /layout/generic/StickyScrollContainer.cpp | |
parent | f1b043af1dd09b2a5235ee88be9a5b547697fa5b (diff) | |
download | UXP-ce11d5cae866f24b8f7435cdc3725cfd2748595b.tar UXP-ce11d5cae866f24b8f7435cdc3725cfd2748595b.tar.gz UXP-ce11d5cae866f24b8f7435cdc3725cfd2748595b.tar.lz UXP-ce11d5cae866f24b8f7435cdc3725cfd2748595b.tar.xz UXP-ce11d5cae866f24b8f7435cdc3725cfd2748595b.zip |
Issue #146 - Part 5: Treat table row groups as containing blocks.
This aligns our behavior with Gecko/Blink.
Diffstat (limited to 'layout/generic/StickyScrollContainer.cpp')
-rw-r--r-- | layout/generic/StickyScrollContainer.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/layout/generic/StickyScrollContainer.cpp b/layout/generic/StickyScrollContainer.cpp index ca68992c3..ff8ebcfef 100644 --- a/layout/generic/StickyScrollContainer.cpp +++ b/layout/generic/StickyScrollContainer.cpp @@ -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. |