mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-01-28 00:07:28 +00:00
Bug 387876 - Columns in absolutely positioned div break when changed, r=roc sr=roc blocking1.9=dbaron
This commit is contained in:
parent
dd9a338fdc
commit
244853dccc
@ -1953,16 +1953,35 @@ nsBlockFrame::ReflowDirtyLines(nsBlockReflowState& aState)
|
||||
// -- it's an incremental reflow of a descendant
|
||||
// -- and we didn't reflow any floats (so the available space
|
||||
// didn't change)
|
||||
// XXXldb We should also check that the first line of the next-in-flow
|
||||
// isn't dirty.
|
||||
// -- my chain of next-in-flows either has no first line, or its first
|
||||
// line isn't dirty.
|
||||
PRBool skipPull = PR_FALSE;
|
||||
if (aState.mNextInFlow &&
|
||||
(aState.mReflowState.mFlags.mNextInFlowUntouched &&
|
||||
!lastLineMovedUp &&
|
||||
!(GetStateBits() & NS_FRAME_IS_DIRTY) &&
|
||||
!reflowedFloat)) {
|
||||
NS_FRAME_SET_INCOMPLETE(aState.mReflowStatus);
|
||||
// We'll place lineIter at the last line of this block, so that
|
||||
// nsBlockInFlowLineIterator::Next() will take us to the first
|
||||
// line of my next-in-flow-chain. (But first, check that I
|
||||
// have any lines -- if I don't, just bail out of this
|
||||
// optimization.)
|
||||
line_iterator lineIter = this->end_lines();
|
||||
if (lineIter != this->begin_lines()) {
|
||||
lineIter--; // I have lines; step back from dummy iterator to last line.
|
||||
nsBlockInFlowLineIterator bifLineIter(this, lineIter, PR_FALSE);
|
||||
|
||||
// Check for next-in-flow-chain's first line.
|
||||
// (First, see if there is such a line, and second, see if it's clean)
|
||||
if (!bifLineIter.Next() ||
|
||||
!bifLineIter.GetLine()->IsDirty()) {
|
||||
NS_FRAME_SET_INCOMPLETE(aState.mReflowStatus);
|
||||
skipPull=PR_TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (aState.mNextInFlow) {
|
||||
|
||||
if (!skipPull && aState.mNextInFlow) {
|
||||
// Pull data from a next-in-flow if there's still room for more
|
||||
// content here.
|
||||
while (keepGoing && (nsnull != aState.mNextInFlow)) {
|
||||
|
@ -457,7 +457,6 @@ nsColumnSetFrame::ReflowChildren(nsHTMLReflowMetrics& aDesiredSize,
|
||||
// (It may also have overflowing content that doesn't care about the available height
|
||||
// boundary, but if so, too bad, this optimization is defeated.)
|
||||
PRBool skipResizeHeightShrink = shrinkingHeightOnly
|
||||
&& !(child->GetStateBits() & NS_FRAME_IS_DIRTY)
|
||||
&& child->GetOverflowRect().YMost() <= aConfig.mColMaxHeight;
|
||||
if (!reflowNext && (skipIncremental || skipResizeHeightShrink)) {
|
||||
// This child does not need to be reflowed, but we may need to move it
|
||||
|
Loading…
x
Reference in New Issue
Block a user