diff --git a/mozilla/layout/printing/nsPrintEngine.cpp b/mozilla/layout/printing/nsPrintEngine.cpp index 0f0ab6fb5e5..26e1fd6077e 100644 --- a/mozilla/layout/printing/nsPrintEngine.cpp +++ b/mozilla/layout/printing/nsPrintEngine.cpp @@ -2491,6 +2491,7 @@ nsPrintEngine::ReflowDocList(nsPrintObject* aPO, PRBool aSetPixelScale, PRBool a if (frame) { if (!frame->GetStyleVisibility()->IsVisible()) { aPO->mDontPrint = PR_TRUE; + aPO->mInvisible = PR_TRUE; return NS_OK; } } @@ -3024,11 +3025,13 @@ nsPrintEngine::PrintDocContent(nsPrintObject* aPO, nsresult& aStatus) } } - for (PRInt32 i=0;imKids.Count();i++) { - nsPrintObject* po = (nsPrintObject*)aPO->mKids[i]; - PRBool printed = PrintDocContent(po, aStatus); - if (printed || NS_FAILED(aStatus)) { - return PR_TRUE; + if (!aPO->mInvisible) { + for (PRInt32 i=0;imKids.Count();i++) { + nsPrintObject* po = (nsPrintObject*)aPO->mKids[i]; + PRBool printed = PrintDocContent(po, aStatus); + if (printed || NS_FAILED(aStatus)) { + return PR_TRUE; + } } } return PR_FALSE; @@ -3087,6 +3090,7 @@ nsPrintEngine::DoPrint(nsPrintObject * aPO, PRBool aDoSyncPrinting, PRBool& aDon nsIView* poRootView = aPO->mRootView; NS_ASSERTION(webShell, "The WebShell can't be NULL!"); + NS_ASSERTION(poPresContext, "PrintObject has not been reflowed"); if (mPrt->mPrintProgressParams) { SetDocAndURLIntoProgress(aPO, mPrt->mPrintProgressParams); @@ -4399,10 +4403,12 @@ nsPrintEngine::ShowDocListInternal(nsPrintObject* aPO, PRBool aShow) } } - PRInt32 cnt = aPO->mKids.Count(); - for (PRInt32 i=0;imKids[i], aShow))) { - return NS_ERROR_FAILURE; + if (!aPO->mInvisible) { + PRInt32 cnt = aPO->mKids.Count(); + for (PRInt32 i=0;imKids[i], aShow))) { + return NS_ERROR_FAILURE; + } } } diff --git a/mozilla/layout/printing/nsPrintObject.cpp b/mozilla/layout/printing/nsPrintObject.cpp index c165c055857..cd8ef56de21 100644 --- a/mozilla/layout/printing/nsPrintObject.cpp +++ b/mozilla/layout/printing/nsPrintObject.cpp @@ -47,7 +47,7 @@ nsPrintObject::nsPrintObject() : mSeqFrame(nsnull), mPageFrame(nsnull), mPageNum(-1), mRect(0,0,0,0), mReflowRect(0,0,0,0), mParent(nsnull), mHasBeenPrinted(PR_FALSE), mDontPrint(PR_TRUE), - mPrintAsIs(PR_FALSE), mSkippedPageEject(PR_FALSE), mSharedPresShell(PR_FALSE), mIsHidden(PR_FALSE), + mPrintAsIs(PR_FALSE), mSkippedPageEject(PR_FALSE), mSharedPresShell(PR_FALSE), mIsHidden(PR_FALSE), mInvisible(PR_FALSE), mClipRect(-1,-1, -1, -1), mImgAnimationMode(imgIContainer::kNormalAnimMode), mDocTitle(nsnull), mDocURL(nsnull), mShrinkRatio(1.0), mXMost(0) diff --git a/mozilla/layout/printing/nsPrintObject.h b/mozilla/layout/printing/nsPrintObject.h index 4d2ab42b1cc..5d21bed8353 100644 --- a/mozilla/layout/printing/nsPrintObject.h +++ b/mozilla/layout/printing/nsPrintObject.h @@ -102,6 +102,7 @@ public: PRPackedBool mSkippedPageEject; PRPackedBool mSharedPresShell; PRPackedBool mIsHidden; // Indicates PO is hidden, not reflowed, not shown + PRPackedBool mInvisible; // Indicates PO is set to not visible by CSS nsRect mClipRect;