diff options
-rw-r--r-- | sd/source/ui/view/DocumentRenderer.cxx | 19 | ||||
-rw-r--r-- | vcl/source/window/printdlg.cxx | 8 |
2 files changed, 18 insertions, 9 deletions
diff --git a/sd/source/ui/view/DocumentRenderer.cxx b/sd/source/ui/view/DocumentRenderer.cxx index a421de2bc64b..8802c7f2701c 100644 --- a/sd/source/ui/view/DocumentRenderer.cxx +++ b/sd/source/ui/view/DocumentRenderer.cxx @@ -161,6 +161,12 @@ namespace { return GetBoolValue("PrintProspect", false); } + bool IsPrinterPreferred(DocumentType eDocType) const + { + bool bIsDraw = eDocType == DOCUMENT_TYPE_DRAW; + return IsTilePage() || IsPageSize() || IsBooklet() || (!bIsDraw && !IsNotes()); + } + bool IsPrintExcluded() const { return (IsNotes() || IsDraw() || IsHandout()) && IsHiddenPages(); @@ -1359,9 +1365,7 @@ private: PrintInfo& rInfo) { SdDrawDocument* pDocument = mrBase.GetMainViewShell()->GetDoc(); - bool bIsDraw = pDocument->GetDocumentType() == DOCUMENT_TYPE_DRAW; rInfo.meOrientation = ORIENTATION_PORTRAIT; - bool bDoDodgyHeightWidthFit = mpOptions->IsBooklet() || (!bIsDraw && !mpOptions->IsNotes()); if( ! mpOptions->IsBooklet()) { @@ -1370,10 +1374,9 @@ private: else if (rInfo.maPageSize.Width() < rInfo.maPageSize.Height()) rInfo.meOrientation = ORIENTATION_LANDSCAPE; - // Draw and Notes should abide by their specified paper size, except - // for booklets + // Draw and Notes should usually abide by their specified paper size Size aPaperSize; - if (!bDoDodgyHeightWidthFit) + if (!mpOptions->IsPrinterPreferred(pDocument->GetDocumentType())) { aPaperSize.setWidth(rInfo.maPageSize.Width()); aPaperSize.setHeight(rInfo.maPageSize.Height()); @@ -1386,7 +1389,7 @@ private: maPrintSize = awt::Size(aPaperSize.Width(), aPaperSize.Height()); - if (bDoDodgyHeightWidthFit) + if (mpOptions->IsPrinterPreferred(pDocument->GetDocumentType())) { if( (rInfo.meOrientation == ORIENTATION_LANDSCAPE && (aPaperSize.Width() < aPaperSize.Height())) @@ -1448,8 +1451,8 @@ private: if (mpOptions->IsTime()) aInfo.msTimeDate += GetSdrGlobalData().GetLocaleData()->getTime( ::tools::Time( ::tools::Time::SYSTEM ), false, false ); - // Draw should use specified paper size when printing, except for booklets - if (!mpOptions->IsBooklet() && mrBase.GetDocShell()->GetDocumentType() == DOCUMENT_TYPE_DRAW) + // Draw and Notes should usually use specified paper size when printing + if (!mpOptions->IsPrinterPreferred(mrBase.GetDocShell()->GetDocumentType())) { aInfo.maPrintSize = mrBase.GetDocument()->GetSdPage(0, PK_STANDARD)->GetSize(); maPrintSize = awt::Size(aInfo.maPrintSize.Width(), diff --git a/vcl/source/window/printdlg.cxx b/vcl/source/window/printdlg.cxx index 9cf25e95a126..c4ea5c7aac3c 100644 --- a/vcl/source/window/printdlg.cxx +++ b/vcl/source/window/printdlg.cxx @@ -1608,7 +1608,9 @@ IMPL_LINK( PrintDialog, ClickHdl, Button*, pButton ) if( pButton == maJobPage.mpSetupButton ) { maPController->setupPrinter( this ); - preparePreview( true, true ); + + // tdf#63905 don't use cache: page size may change + preparePreview( true, false ); } checkControlDependencies(); } @@ -1758,6 +1760,10 @@ IMPL_LINK( PrintDialog, UIOption_RadioHdl, RadioButton*, i_pBtn ) sal_Int32 nVal = it->second; pVal->Value <<= nVal; + // tdf#63905 use paper size set in printer properties + if (pVal->Name == "PageOptions") + maPController->resetPaperToLastConfigured(); + checkOptionalControlDependencies(); // update preview and page settings |