Bug 289090. Get the pagesequenceframe from the frame constructor, don't poke around the frame hierarchy trying to find it. r+sr=bzbarsky

This commit is contained in:
roc+%cs.cmu.edu 2005-04-05 22:46:56 +00:00
parent 41bc35fd99
commit 21c3eddde8
3 changed files with 9 additions and 35 deletions

View File

@ -1883,6 +1883,7 @@ nsCSSFrameConstructor::nsCSSFrameConstructor(nsIDocument *aDocument,
, mFixedContainingBlock(nsnull)
, mDocElementContainingBlock(nsnull)
, mGfxScrollFrame(nsnull)
, mPageSequenceFrame(nsnull)
, mUpdateCount(0)
, mQuotesDirty(PR_FALSE)
, mCountersDirty(PR_FALSE)
@ -4420,9 +4421,6 @@ nsCSSFrameConstructor::ConstructRootFrame(nsIContent* aDocElement,
// how the root frame hierarchy should look
// XXXbz if you change this method, change
// PresShell::GetPageSequenceFrame accordingly!
/*
---------------No Scrollbars------
@ -4525,6 +4523,7 @@ nsCSSFrameConstructor::ConstructRootFrame(nsIContent* aDocElement,
} else {
// Create a page sequence frame
NS_NewSimplePageSequenceFrame(mPresShell, &rootFrame);
mPageSequenceFrame = rootFrame;
rootPseudo = nsCSSAnonBoxes::pageSequence;
}

View File

@ -181,6 +181,7 @@ public:
nsILayoutHistoryState* aFrameState);
nsIFrame* GetInitialContainingBlock() { return mInitialContainingBlock; }
nsIFrame* GetPageSequenceFrame() { return mPageSequenceFrame; }
private:
@ -984,6 +985,7 @@ private:
nsIFrame* mFixedContainingBlock;
nsIFrame* mDocElementContainingBlock;
nsIFrame* mGfxScrollFrame;
nsIFrame* mPageSequenceFrame;
nsQuoteList mQuoteList;
nsCounterManager mCounterManager;
PRUint16 mUpdateCount;

View File

@ -3478,39 +3478,12 @@ PresShell::GetPageSequenceFrame(nsIPageSequenceFrame** aResult) const
return NS_ERROR_NULL_POINTER;
}
nsIPageSequenceFrame* pageSequence = nsnull;
// The page sequence frame is the child of the rootFrame
nsIFrame *rootFrame = FrameManager()->GetRootFrame();
nsIFrame* child = rootFrame->GetFirstChild(nsnull);
if (nsnull != child) {
// but the child could be wrapped in a scrollframe so lets check
nsIScrollableFrame* scrollable = nsnull;
nsresult rv = child->QueryInterface(NS_GET_IID(nsIScrollableFrame),
(void **)&scrollable);
if (NS_SUCCEEDED(rv) && (nsnull != scrollable)) {
// if it is then get the scrolled frame
child = scrollable->GetScrolledFrame();
} else {
if (mPresContext->Type() == nsPresContext::eContext_PrintPreview) {
child = child->GetFirstChild(nsnull);
}
}
// make sure the child is a pageSequence
rv = child->QueryInterface(NS_GET_IID(nsIPageSequenceFrame),
(void**)&pageSequence);
NS_ASSERTION(NS_SUCCEEDED(rv),"Error: Could not find pageSequence!");
*aResult = pageSequence;
return NS_OK;
}
*aResult = nsnull;
return NS_ERROR_FAILURE;
nsIFrame* frame = mFrameConstructor->GetPageSequenceFrame();
if (frame) {
CallQueryInterface(frame, aResult);
}
return *aResult ? NS_OK : NS_ERROR_FAILURE;
}
void