You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
3.5 KiB
89 lines
3.5 KiB
From 1c6bd2c40fd03ec735fd6dbec01520f10ee1d55a Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
|
Date: Fri, 4 Jul 2014 13:28:08 +0100
|
|
Subject: [PATCH] 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
|
|
---
|
|
vcl/source/gdi/print.cxx | 18 ++++++++++++------
|
|
1 file changed, 12 insertions(+), 6 deletions(-)
|
|
|
|
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;
|
|
}
|
|
}
|
|
|
|
--
|
|
1.9.3
|
|
|