From 674a8a084bff6aa089d073b2710cd6a8b6662546 Mon Sep 17 00:00:00 2001 From: Armin Le Grand Date: Wed, 19 Mar 2014 12:34:44 +0000 Subject: Resolves: #i122984# Avoid too many Print JobSetups... be more tolerant with last line TIFF imports (cherry picked from commit 0ab284f5064f66a11741fa4aa2e2774c1d7e5f14) Change-Id: I75c86422bfbf2f83e1027bbc1bd83260de39b3ca --- vcl/source/gdi/print.cxx | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'vcl/source/gdi') diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx index 8e97d4bc62c2..ba69c1c97545 100644 --- a/vcl/source/gdi/print.cxx +++ b/vcl/source/gdi/print.cxx @@ -1213,11 +1213,25 @@ bool Printer::SetPaperSizeUser( const Size& rSize, bool bMatchNearest ) if ( mbInPrintPage ) return 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) + { + // #i122984# 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(); -- cgit