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:
bmlk%gmx.de 2006-04-08 06:10:39 +00:00
Родитель c65c61b8c5
Коммит f8a57076f6
1 изменённых файлов: 31 добавлений и 3 удалений

Просмотреть файл

@ -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) {