[Libreoffice-commits] core.git: sd/source vcl/source

Clément Lassieur clement at lassieur.org
Tue Mar 31 13:20:13 PDT 2015


 sd/source/ui/view/DocumentRenderer.cxx |   19 +++++++++++--------
 vcl/source/window/printdlg.cxx         |    8 +++++++-
 2 files changed, 18 insertions(+), 9 deletions(-)

New commits:
commit 3feb370bc82dedfd7dc281aecf8dd670176e52ff
Author: Clément Lassieur <clement at lassieur.org>
Date:   Sun Dec 21 17:14:34 2014 +0100

    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 at bubli.org>
    Tested-by: Katarina Behrens <bubli at bubli.org>

diff --git a/sd/source/ui/view/DocumentRenderer.cxx b/sd/source/ui/view/DocumentRenderer.cxx
index a421de2..8802c7f 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 9cf25e9..c4ea5c7 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


More information about the Libreoffice-commits mailing list