From 3feb370bc82dedfd7dc281aecf8dd670176e52ff Mon Sep 17 00:00:00 2001
From: Clément Lassieur <clement@lassieur.org>
Date: Sun, 21 Dec 2014 17:14:34 +0100
Subject: tdf#63905: fix regression by using paper size set in printer
 properties

Change-Id: I51407c4b7ebbe3782539e1cb6f3c8294ae29566e
Reviewed-on: https://gerrit.libreoffice.org/13763
Reviewed-by: Katarina Behrens <bubli@bubli.org>
Tested-by: Katarina Behrens <bubli@bubli.org>
---
 sd/source/ui/view/DocumentRenderer.cxx | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

(limited to 'sd')

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(),
-- 
cgit