Bug 170688. Make nsAbsoluteContainingBlock::IncrementalReflow really incrementally reflow every absolute child that needs it, even if we find that a full block reflow will be necessary. r=dbaron,sr=kin,a=asa
git-svn-id: svn://10.0.0.236/trunk@132432 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -292,7 +292,9 @@ nsAbsoluteContainingBlock::IncrementalReflow(nsIFrame* aDelegatin
|
||||
PRBool& aWasHandled)
|
||||
{
|
||||
// Initialize the OUT parameters
|
||||
aWasHandled = PR_FALSE;
|
||||
// Assume we handled the incremental reflow
|
||||
// until we find something that requires a full block reflow
|
||||
aWasHandled = PR_TRUE;
|
||||
|
||||
// See if the reflow command is targeted at us.
|
||||
nsReflowPath *path = aReflowState.path;
|
||||
@@ -331,15 +333,11 @@ nsAbsoluteContainingBlock::IncrementalReflow(nsIFrame* aDelegatin
|
||||
reason, status);
|
||||
}
|
||||
}
|
||||
|
||||
// Indicate we handled the reflow command.
|
||||
aWasHandled = PR_TRUE;
|
||||
} else {
|
||||
// Reflow command is targeted directly at this block.
|
||||
// We cannot handle this incrementally, we have to go to full reflow.
|
||||
// Full reflow of nsBlockFrame reflows all absolutely positioned children,
|
||||
// so skip the incremental update below.
|
||||
return NS_OK;
|
||||
// A reflow command is targeted directly at this block.
|
||||
// The block will have to do a proper reflow.
|
||||
// But keep going to make sure that we process any dirty absolute frames, below.
|
||||
aWasHandled = PR_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -347,10 +345,6 @@ nsAbsoluteContainingBlock::IncrementalReflow(nsIFrame* aDelegatin
|
||||
nsReflowPath::iterator end = path->EndChildren();
|
||||
|
||||
if (iter != end && mAbsoluteFrames.NotEmpty()) {
|
||||
// One of our children has been targeted for reflow. By default,
|
||||
// assume we've handled it.
|
||||
aWasHandled = PR_TRUE;
|
||||
|
||||
for ( ; iter != end; ++iter) {
|
||||
// See if it's one of our absolutely positioned child frames
|
||||
if (mAbsoluteFrames.ContainsFrame(*iter)) {
|
||||
|
||||
@@ -292,7 +292,9 @@ nsAbsoluteContainingBlock::IncrementalReflow(nsIFrame* aDelegatin
|
||||
PRBool& aWasHandled)
|
||||
{
|
||||
// Initialize the OUT parameters
|
||||
aWasHandled = PR_FALSE;
|
||||
// Assume we handled the incremental reflow
|
||||
// until we find something that requires a full block reflow
|
||||
aWasHandled = PR_TRUE;
|
||||
|
||||
// See if the reflow command is targeted at us.
|
||||
nsReflowPath *path = aReflowState.path;
|
||||
@@ -331,15 +333,11 @@ nsAbsoluteContainingBlock::IncrementalReflow(nsIFrame* aDelegatin
|
||||
reason, status);
|
||||
}
|
||||
}
|
||||
|
||||
// Indicate we handled the reflow command.
|
||||
aWasHandled = PR_TRUE;
|
||||
} else {
|
||||
// Reflow command is targeted directly at this block.
|
||||
// We cannot handle this incrementally, we have to go to full reflow.
|
||||
// Full reflow of nsBlockFrame reflows all absolutely positioned children,
|
||||
// so skip the incremental update below.
|
||||
return NS_OK;
|
||||
// A reflow command is targeted directly at this block.
|
||||
// The block will have to do a proper reflow.
|
||||
// But keep going to make sure that we process any dirty absolute frames, below.
|
||||
aWasHandled = PR_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -347,10 +345,6 @@ nsAbsoluteContainingBlock::IncrementalReflow(nsIFrame* aDelegatin
|
||||
nsReflowPath::iterator end = path->EndChildren();
|
||||
|
||||
if (iter != end && mAbsoluteFrames.NotEmpty()) {
|
||||
// One of our children has been targeted for reflow. By default,
|
||||
// assume we've handled it.
|
||||
aWasHandled = PR_TRUE;
|
||||
|
||||
for ( ; iter != end; ++iter) {
|
||||
// See if it's one of our absolutely positioned child frames
|
||||
if (mAbsoluteFrames.ContainsFrame(*iter)) {
|
||||
|
||||
Reference in New Issue
Block a user