зеркало из https://github.com/mozilla/gecko-dev.git
Make sure to not propagate special height reflows too far. Bug 391901, r+sr+a=dbaron
This commit is contained in:
Родитель
b06fa80dae
Коммит
cde473408d
|
@ -839,6 +839,9 @@ NS_METHOD nsTableCellFrame::Reflow(nsPresContext* aPresContext,
|
||||||
// but only those than are tables in standards mode. NeedsToObserve
|
// but only those than are tables in standards mode. NeedsToObserve
|
||||||
// will determine how far this is propagated to descendants.
|
// will determine how far this is propagated to descendants.
|
||||||
kidReflowState.mPercentHeightObserver = this;
|
kidReflowState.mPercentHeightObserver = this;
|
||||||
|
// Don't propagate special height reflow state to our kids
|
||||||
|
kidReflowState.mFlags.mSpecialHeightReflow = PR_FALSE;
|
||||||
|
|
||||||
if (aReflowState.mFlags.mSpecialHeightReflow ||
|
if (aReflowState.mFlags.mSpecialHeightReflow ||
|
||||||
(GetFirstInFlow()->GetStateBits() & NS_TABLE_CELL_HAD_SPECIAL_REFLOW)) {
|
(GetFirstInFlow()->GetStateBits() & NS_TABLE_CELL_HAD_SPECIAL_REFLOW)) {
|
||||||
// We need to force the kid to have mVResize set if we've had a
|
// We need to force the kid to have mVResize set if we've had a
|
||||||
|
|
|
@ -1883,10 +1883,8 @@ NS_METHOD nsTableFrame::Reflow(nsPresContext* aPresContext,
|
||||||
}
|
}
|
||||||
nsIFrame* lastChildReflowed = nsnull;
|
nsIFrame* lastChildReflowed = nsnull;
|
||||||
|
|
||||||
nsHTMLReflowState &mutable_rs =
|
NS_ASSERTION(!aReflowState.mFlags.mSpecialHeightReflow,
|
||||||
const_cast<nsHTMLReflowState&>(aReflowState);
|
"Shouldn't be in special height reflow here!");
|
||||||
PRBool oldSpecialHeightReflow = mutable_rs.mFlags.mSpecialHeightReflow;
|
|
||||||
mutable_rs.mFlags.mSpecialHeightReflow = PR_FALSE;
|
|
||||||
|
|
||||||
// do the pass 2 reflow unless this is a special height reflow and we will be
|
// do the pass 2 reflow unless this is a special height reflow and we will be
|
||||||
// initiating a special height reflow
|
// initiating a special height reflow
|
||||||
|
@ -1909,6 +1907,9 @@ NS_METHOD nsTableFrame::Reflow(nsPresContext* aPresContext,
|
||||||
if (needToInitiateSpecialReflow && NS_FRAME_IS_COMPLETE(aStatus)) {
|
if (needToInitiateSpecialReflow && NS_FRAME_IS_COMPLETE(aStatus)) {
|
||||||
// XXXldb Do we need to set the mVResize flag on any reflow states?
|
// XXXldb Do we need to set the mVResize flag on any reflow states?
|
||||||
|
|
||||||
|
nsHTMLReflowState &mutable_rs =
|
||||||
|
const_cast<nsHTMLReflowState&>(aReflowState);
|
||||||
|
|
||||||
// distribute extra vertical space to rows
|
// distribute extra vertical space to rows
|
||||||
CalcDesiredHeight(aReflowState, aDesiredSize);
|
CalcDesiredHeight(aReflowState, aDesiredSize);
|
||||||
mutable_rs.mFlags.mSpecialHeightReflow = PR_TRUE;
|
mutable_rs.mFlags.mSpecialHeightReflow = PR_TRUE;
|
||||||
|
@ -1929,9 +1930,9 @@ NS_METHOD nsTableFrame::Reflow(nsPresContext* aPresContext,
|
||||||
}
|
}
|
||||||
haveDesiredHeight = PR_TRUE;
|
haveDesiredHeight = PR_TRUE;
|
||||||
reflowedChildren = PR_TRUE;
|
reflowedChildren = PR_TRUE;
|
||||||
}
|
|
||||||
|
|
||||||
mutable_rs.mFlags.mSpecialHeightReflow = oldSpecialHeightReflow;
|
mutable_rs.mFlags.mSpecialHeightReflow = PR_FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
aDesiredSize.width = aReflowState.ComputedWidth() +
|
aDesiredSize.width = aReflowState.ComputedWidth() +
|
||||||
|
@ -6130,7 +6131,6 @@ nsTableFrame::PaintBCBorders(nsIRenderingContext& aRenderingContext,
|
||||||
nsTableRowGroupFrame* inFlowRG = nsnull;
|
nsTableRowGroupFrame* inFlowRG = nsnull;
|
||||||
nsTableRowFrame* inFlowRow = nsnull;
|
nsTableRowFrame* inFlowRow = nsnull;
|
||||||
// find startRowIndex, endRowIndex, startRowY
|
// find startRowIndex, endRowIndex, startRowY
|
||||||
nscoord onePixel = nsPresContext::CSSPixelsToAppUnits(1);
|
|
||||||
PRInt32 rowY = startRowY;
|
PRInt32 rowY = startRowY;
|
||||||
for (PRUint32 rgX = 0; rgX < rowGroups.Length() && !done; rgX++) {
|
for (PRUint32 rgX = 0; rgX < rowGroups.Length() && !done; rgX++) {
|
||||||
nsTableRowGroupFrame* rgFrame = rowGroups[rgX];
|
nsTableRowGroupFrame* rgFrame = rowGroups[rgX];
|
||||||
|
|
Загрузка…
Ссылка в новой задаче