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

Caolán McNamara caolanm at redhat.com
Fri Jul 4 05:31:03 PDT 2014


 vcl/source/gdi/print.cxx |   18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

New commits:
commit 1c6bd2c40fd03ec735fd6dbec01520f10ee1d55a
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Jul 4 13:28:08 2014 +0100

    Resolves: fdo#80911 toggle original page orientation on paper fallback
    
    User defined page sizes which match rotated paper sizes available to the
    printer don't work correctly when they are already in landscape mode.  i.e. the
    orientation should be toggled, not overwritten.
    
    Change-Id: I30dca5f988ad72319410a03f47eccff277be8640

diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx
index 6c8bdc4..ded7ebc 100644
--- a/vcl/source/gdi/print.cxx
+++ b/vcl/source/gdi/print.cxx
@@ -1352,6 +1352,7 @@ void Printer::ImplFindPaperFormatForUserSize( JobSetup& aJobSetup, bool bMatchNe
     int     nLandscapeAngle = GetLandscapeAngle();
     int     nPaperCount     = GetPaperInfoCount();
     bool    bFound = false;
+    bool    bToggleOrient = false;
 
     PaperInfo aInfo(pSetupData->mnPaperWidth, pSetupData->mnPaperHeight);
 
@@ -1364,7 +1365,6 @@ void Printer::ImplFindPaperFormatForUserSize( JobSetup& aJobSetup, bool bMatchNe
         {
             pSetupData->mePaperFormat = ImplGetPaperFormat( rPaperInfo.getWidth(),
                                                             rPaperInfo.getHeight() );
-            pSetupData->meOrientation = ORIENTATION_PORTRAIT;
             bFound = true;
             break;
         }
@@ -1388,8 +1388,8 @@ void Printer::ImplFindPaperFormatForUserSize( JobSetup& aJobSetup, bool bMatchNe
             {
                 pSetupData->mePaperFormat = ImplGetPaperFormat( rPaperInfo.getWidth(),
                                                                 rPaperInfo.getHeight() );
-                pSetupData->meOrientation = ORIENTATION_LANDSCAPE;
                 bFound = true;
+                bToggleOrient = true;
                 break;
             }
         }
@@ -1399,7 +1399,6 @@ void Printer::ImplFindPaperFormatForUserSize( JobSetup& aJobSetup, bool bMatchNe
     {
          sal_Int64 nBestMatch = SAL_MAX_INT64;
          int nBestIndex = 0;
-         Orientation eBestOrientation = ORIENTATION_PORTRAIT;
          for( int i = 0; i < nPaperCount; i++ )
          {
              const PaperInfo& rPaperInfo = GetPaperInfo( i );
@@ -1412,7 +1411,7 @@ void Printer::ImplFindPaperFormatForUserSize( JobSetup& aJobSetup, bool bMatchNe
              {
                  nBestMatch = nMatch;
                  nBestIndex = i;
-                 eBestOrientation = ORIENTATION_PORTRAIT;
+                 bToggleOrient = false;
              }
 
              // check landscape match
@@ -1423,13 +1422,20 @@ void Printer::ImplFindPaperFormatForUserSize( JobSetup& aJobSetup, bool bMatchNe
              {
                  nBestMatch = nMatch;
                  nBestIndex = i;
-                 eBestOrientation = ORIENTATION_LANDSCAPE;
+                 bToggleOrient = true;
              }
          }
          const PaperInfo& rBestInfo = GetPaperInfo( nBestIndex );
          pSetupData->mePaperFormat = ImplGetPaperFormat( rBestInfo.getWidth(),
                                                          rBestInfo.getHeight() );
-         pSetupData->meOrientation = eBestOrientation;
+    }
+
+    if (bToggleOrient)
+    {
+        if (pSetupData->meOrientation == ORIENTATION_PORTRAIT)
+            pSetupData->meOrientation = ORIENTATION_LANDSCAPE;
+        else
+            pSetupData->meOrientation = ORIENTATION_PORTRAIT;
     }
 }
 


More information about the Libreoffice-commits mailing list