pseudo rowgroups might be wrapped in a scrollframe, bug 331679 r/sr=bzbarsky

This commit is contained in:
bmlk%gmx.de 2006-04-22 10:28:13 +00:00
Родитель 2bb5326ad4
Коммит c3ce06f886
1 изменённых файлов: 25 добавлений и 6 удалений

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

@ -2614,6 +2614,23 @@ ProcessPseudoFrame(nsPseudoFrameData& aPseudoData,
return rv;
}
static nsresult
ProcessPseudoRowGroupFrame(nsPseudoFrameData& aPseudoData,
nsIFrame*& aParent)
{
nsresult rv = NS_OK;
aParent = aPseudoData.mFrame;
nsTableRowGroupFrame* rgFrame = nsTableFrame::GetRowGroupFrame(aParent);
nsFrameItems* items = &aPseudoData.mChildList;
if (items && items->childList) {
rv = rgFrame->SetInitialChildList(nsnull, items->childList);
if (NS_FAILED(rv)) return rv;
}
aPseudoData.Reset();
return rv;
}
static nsresult
ProcessPseudoTableFrame(nsPseudoFrames& aPseudoFrames,
nsIFrame*& aParent)
@ -2692,12 +2709,12 @@ ProcessPseudoFrames(nsFrameConstructorState& aState,
if (nsLayoutAtoms::tableRowFrame == aHighestType) return rv;
}
if (pseudoFrames.mRowGroup.mFrame) {
rv = ProcessPseudoFrame(pseudoFrames.mRowGroup, aHighestFrame);
rv = ProcessPseudoRowGroupFrame(pseudoFrames.mRowGroup, aHighestFrame);
if (nsLayoutAtoms::tableRowGroupFrame == aHighestType) return rv;
}
}
else if (nsLayoutAtoms::tableRowGroupFrame == pseudoFrames.mLowestType) {
rv = ProcessPseudoFrame(pseudoFrames.mRowGroup, aHighestFrame);
rv = ProcessPseudoRowGroupFrame(pseudoFrames.mRowGroup, aHighestFrame);
if (nsLayoutAtoms::tableRowGroupFrame == aHighestType) return rv;
if (pseudoFrames.mColGroup.mFrame) {
nsIFrame* colGroupHigh;
@ -2730,7 +2747,7 @@ ProcessPseudoFrames(nsFrameConstructorState& aState,
if (nsLayoutAtoms::tableRowFrame == aHighestType) return rv;
if (pseudoFrames.mRowGroup.mFrame) {
rv = ProcessPseudoFrame(pseudoFrames.mRowGroup, aHighestFrame);
rv = ProcessPseudoRowGroupFrame(pseudoFrames.mRowGroup, aHighestFrame);
if (nsLayoutAtoms::tableRowGroupFrame == aHighestType) return rv;
}
if (pseudoFrames.mColGroup.mFrame) {
@ -2765,7 +2782,7 @@ ProcessPseudoFrames(nsFrameConstructorState& aState,
if (nsLayoutAtoms::tableRowFrame == aHighestType) return rv;
}
if (pseudoFrames.mRowGroup.mFrame) {
rv = ProcessPseudoFrame(pseudoFrames.mRowGroup, aHighestFrame);
rv = ProcessPseudoRowGroupFrame(pseudoFrames.mRowGroup, aHighestFrame);
if (nsLayoutAtoms::tableRowGroupFrame == aHighestType) return rv;
}
if (pseudoFrames.mColGroup.mFrame) {
@ -3015,8 +3032,10 @@ nsCSSFrameConstructor::CreatePseudoRowFrame(nsTableCreator& aTableCreat
{
nsresult rv = NS_OK;
nsIFrame* parentFrame = (aState.mPseudoFrames.mRowGroup.mFrame)
? aState.mPseudoFrames.mRowGroup.mFrame : aParentFrameIn;
nsIFrame* parentFrame = aParentFrameIn;
if (aState.mPseudoFrames.mRowGroup.mFrame) {
parentFrame = (nsIFrame*) nsTableFrame::GetRowGroupFrame(aState.mPseudoFrames.mRowGroup.mFrame);
}
if (!parentFrame) return rv;
nsStyleContext *parentStyle;