summaryrefslogtreecommitdiff
path: root/vcl/source
diff options
context:
space:
mode:
authorArmin Le Grand <alg@apache.org>2014-03-19 12:34:44 +0000
committerArmin Le Grand <alg@apache.org>2014-03-19 12:34:44 +0000
commit0ab284f5064f66a11741fa4aa2e2774c1d7e5f14 (patch)
tree18c16d70a5cf790aab9dc56c86a5b02ed7b920a7 /vcl/source
parent0087ca89e3905009ed947c651f3dc70f3d61ea93 (diff)
i122984 Avoid too many Print JobSetups, be more tolerant with last line TIFF imports
Notes
Notes: merged as: 674a8a084bff6aa089d073b2710cd6a8b6662546
Diffstat (limited to 'vcl/source')
-rw-r--r--vcl/source/gdi/print.cxx24
1 files changed, 19 insertions, 5 deletions
diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx
index d6503b5dc933..76e1642f1bd6 100644
--- a/vcl/source/gdi/print.cxx
+++ b/vcl/source/gdi/print.cxx
@@ -1224,11 +1224,25 @@ sal_Bool Printer::SetPaperSizeUser( const Size& rSize, bool bMatchNearest )
if ( mbInPrintPage )
return sal_False;
- Size aPixSize = LogicToPixel( rSize );
- Size aPageSize = PixelToLogic( aPixSize, MAP_100TH_MM );
- if ( (maJobSetup.ImplGetConstData()->mePaperFormat != PAPER_USER) ||
- (maJobSetup.ImplGetConstData()->mnPaperWidth != aPageSize.Width()) ||
- (maJobSetup.ImplGetConstData()->mnPaperHeight != aPageSize.Height()) )
+ const Size aPixSize = LogicToPixel( rSize );
+ const Size aPageSize = PixelToLogic( aPixSize, MAP_100TH_MM );
+ bool bNeedToChange(maJobSetup.ImplGetConstData()->mnPaperWidth != aPageSize.Width() ||
+ maJobSetup.ImplGetConstData()->mnPaperHeight != aPageSize.Height());
+
+ if(!bNeedToChange)
+ {
+ // #122984# only need to change when Paper is different from PAPER_USER and
+ // the mapped Paper which will created below in the call to ImplFindPaperFormatForUserSize
+ // and will replace maJobSetup.ImplGetConstData()->mePaperFormat. This leads to
+ // unnecessary JobSetups, e.g. when printing a multi-page fax, but also with
+ // normal print
+ const Paper aPaper = ImplGetPaperFormat(aPageSize.Width(), aPageSize.Height());
+
+ bNeedToChange = maJobSetup.ImplGetConstData()->mePaperFormat != PAPER_USER &&
+ maJobSetup.ImplGetConstData()->mePaperFormat != aPaper;
+ }
+
+ if(bNeedToChange)
{
JobSetup aJobSetup = maJobSetup;
ImplJobSetup* pSetupData = aJobSetup.ImplGetData();