Add 'aLineList' param to MarkLineDirty() so it knows the correct line list for 'aLine'. b=443528 r+sr=roc a=dveditz

git-svn-id: svn://10.0.0.236/trunk@254651 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
mats.palmgren%bredband.net 2008-10-18 14:53:25 +00:00
parent e45d05c463
commit 3e47c7e680
2 changed files with 13 additions and 4 deletions

View File

@ -1458,7 +1458,7 @@ nsBlockFrame::ComputeCombinedArea(const nsHTMLReflowState& aReflowState,
}
nsresult
nsBlockFrame::MarkLineDirty(line_iterator aLine)
nsBlockFrame::MarkLineDirty(line_iterator aLine, const nsLineList* aLineList)
{
// Mark aLine dirty
aLine->MarkDirty();
@ -1474,7 +1474,7 @@ nsBlockFrame::MarkLineDirty(line_iterator aLine)
// Mark previous line dirty if it's an inline line so that it can
// maybe pullup something from the line just affected.
// XXX We don't need to do this if aPrevLine ends in a break-after...
if (aLine != mLines.front() &&
if (aLine != (aLineList ? aLineList : &mLines)->front() &&
aLine->IsInline() &&
aLine.prev()->IsInline()) {
aLine.prev()->MarkDirty();
@ -6259,7 +6259,7 @@ nsBlockFrame::ChildIsDirty(nsIFrame* aChild)
PRBool isValid;
nsBlockInFlowLineIterator iter(this, aChild, &isValid);
if (isValid) {
MarkLineDirty(iter.GetLine());
iter.GetContainer()->MarkLineDirty(iter.GetLine(), iter.GetLineList());
}
}

View File

@ -479,8 +479,12 @@ protected:
* pull-up, mark the previous line dirty as well. Also invalidates textruns
* on those lines because the text in the lines might have changed due to
* addition/removal of frames.
* @param aLine the line to mark dirty
* @param aLineList the line list containing that line, null means the line
* is in 'mLines' of this frame.
*/
nsresult MarkLineDirty(line_iterator aLine);
nsresult MarkLineDirty(line_iterator aLine,
const nsLineList* aLineList = nsnull);
// XXX where to go
PRBool ShouldJustifyLine(nsBlockReflowState& aState,
@ -714,6 +718,11 @@ public:
nsBlockFrame* GetContainer() { return mFrame; }
PRBool GetInOverflow() { return mInOverflowLines != nsnull; }
/**
* Returns the current line list we're iterating, null means
* we're iterating |mLines| of the container.
*/
nsLineList* GetLineList() { return mInOverflowLines; }
/**
* Returns the end-iterator of whatever line list we're in.