Bug 429337: re-landing patch, with bustage fix. (bustage fix initializes nsPrintSettingsGTK::mPrintSelectionOnly to false in default constructor. Wasn't getting initialized before.)

This commit is contained in:
dholbert@cs.stanford.edu 2008-04-21 18:18:26 -07:00
parent 76c508bef0
commit 7e014b1722
3 changed files with 8 additions and 15 deletions

View File

@ -235,6 +235,12 @@ nsSimplePageSequenceFrame::Reflow(nsPresContext* aPresContext,
nsSize pageSize = aPresContext->GetPageSize();
mPageData->mReflowSize = pageSize;
// If we're printing a selection, we need to reflow with
// unconstrained height, to make sure we'll get to the selection
// even if it's beyond the first page of content.
if (nsIPrintSettings::kRangeSelection == mPrintRangeType) {
mPageData->mReflowSize.height = NS_UNCONSTRAINEDSIZE;
}
mPageData->mReflowMargin = mMargin;
// Compute the size of each page and the x coordinate that each page will

View File

@ -1897,20 +1897,6 @@ nsPrintEngine::ReflowPrintObject(nsPrintObject * aPO)
PR_PL(("In DV::ReflowPrintObject PO: %p (%9s) Setting w,h to %d,%d\n", aPO,
gFrameTypesStr[aPO->mFrameType], adjSize.width, adjSize.height));
// XXX - Hack Alert
// OK, so there is a selection, we will print the entire selection
// on one page and then crop the page.
// This means you can never print any selection that is longer than
// one page, but it keeps it from page breaking in the middle of your
// print of the selection (see also nsSimplePageSequence.cpp)
PRInt16 printRangeType = nsIPrintSettings::kRangeAllPages;
mPrt->mPrintSettings->GetPrintRange(&printRangeType);
if (printRangeType == nsIPrintSettings::kRangeSelection &&
IsThereARangeSelection(mPrt->mCurrentFocusWin)) {
adjSize.height = NS_UNCONSTRAINEDSIZE;
}
// Here we decide whether we need scrollbars and
// what the parent will be of the widget
// How this logic presently works: Print Preview is always as-is (as far

View File

@ -76,7 +76,8 @@ NS_IMPL_ISUPPORTS_INHERITED1(nsPrintSettingsGTK,
nsPrintSettingsGTK::nsPrintSettingsGTK() :
mPageSetup(NULL),
mPrintSettings(NULL),
mGTKPrinter(NULL)
mGTKPrinter(NULL),
mPrintSelectionOnly(PR_FALSE)
{
// The aim here is to set up the objects enough that silent printing works well.
// These will be replaced anyway if the print dialog is used.