зеркало из https://github.com/mozilla/gecko-dev.git
make sure that we process colgroup and rowgroup pseudos in parallel, otherwise we would lose one of them 325984 r/sr=bzbarsky
This commit is contained in:
Родитель
c65c61b8c5
Коммит
f8a57076f6
|
@ -2715,8 +2715,17 @@ ProcessPseudoFrames(nsFrameConstructorState& aState,
|
|||
rv = ProcessPseudoFrame(presContext, pseudoFrames.mRowGroup, aHighestFrame);
|
||||
if (nsLayoutAtoms::tableRowGroupFrame == aHighestType) return rv;
|
||||
if (pseudoFrames.mColGroup.mFrame) {
|
||||
nsIFrame* colGroupHigh;
|
||||
rv = ProcessPseudoFrame(presContext, pseudoFrames.mColGroup,
|
||||
aHighestFrame);
|
||||
colGroupHigh);
|
||||
if (aHighestFrame) {
|
||||
// table frames are special they can have two types of pseudo frames
|
||||
// that need to be processed in one pass, we suffer here from having
|
||||
// the colgroup and the rowgroup on the same childlist
|
||||
// we sort this out inside nsTableFrame
|
||||
colGroupHigh->SetNextSibling(aHighestFrame);
|
||||
}
|
||||
aHighestFrame = colGroupHigh;
|
||||
if (nsLayoutAtoms::tableColGroupFrame == aHighestType) return rv;
|
||||
}
|
||||
if (pseudoFrames.mTableOuter.mFrame) {
|
||||
|
@ -2741,8 +2750,18 @@ ProcessPseudoFrames(nsFrameConstructorState& aState,
|
|||
if (nsLayoutAtoms::tableRowGroupFrame == aHighestType) return rv;
|
||||
}
|
||||
if (pseudoFrames.mColGroup.mFrame) {
|
||||
nsIFrame* colGroupHigh;
|
||||
rv = ProcessPseudoFrame(presContext, pseudoFrames.mColGroup,
|
||||
aHighestFrame);
|
||||
colGroupHigh);
|
||||
if (aHighestFrame &&
|
||||
nsLayoutAtoms::tableRowGroupFrame == aHighestFrame->GetType() ) {
|
||||
// table frames are special they can have two types of pseudo frames
|
||||
// that need to be processed in one pass, we suffer here from having
|
||||
// the colgroup and the rowgroup on the same childlist
|
||||
// we sort this out inside nsTableFrame
|
||||
colGroupHigh->SetNextSibling(aHighestFrame);
|
||||
}
|
||||
aHighestFrame = colGroupHigh;
|
||||
if (nsLayoutAtoms::tableColGroupFrame == aHighestType) return rv;
|
||||
}
|
||||
if (pseudoFrames.mTableOuter.mFrame) {
|
||||
|
@ -2767,8 +2786,17 @@ ProcessPseudoFrames(nsFrameConstructorState& aState,
|
|||
if (nsLayoutAtoms::tableRowGroupFrame == aHighestType) return rv;
|
||||
}
|
||||
if (pseudoFrames.mColGroup.mFrame) {
|
||||
nsIFrame* colGroupHigh;
|
||||
rv = ProcessPseudoFrame(presContext, pseudoFrames.mColGroup,
|
||||
aHighestFrame);
|
||||
colGroupHigh);
|
||||
if (aHighestFrame && nsLayoutAtoms::tableRowGroupFrame == aHighestFrame->GetType() ) {
|
||||
// table frames are special they can have two types of pseudo frames
|
||||
// that need to be processed in one pass, we suffer here from having
|
||||
// the colgroup and the rowgroup on the same childlist
|
||||
// we sort this out inside nsTableFrame
|
||||
colGroupHigh->SetNextSibling(aHighestFrame);
|
||||
}
|
||||
aHighestFrame = colGroupHigh;
|
||||
if (nsLayoutAtoms::tableColGroupFrame == aHighestType) return rv;
|
||||
}
|
||||
if (pseudoFrames.mTableOuter.mFrame) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче