mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-05 20:15:58 +00:00
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:
parent
41bc35fd99
commit
21c3eddde8
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user