diff options
author | Armin Le Grand <alg@apache.org> | 2014-03-19 12:34:44 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-03-19 20:27:15 +0000 |
commit | 674a8a084bff6aa089d073b2710cd6a8b6662546 (patch) | |
tree | 0b9376f68fda451d789fdce7768ac66a7dbbc2c6 /vcl/source | |
parent | 43f74365f9a3cc913618e55cae0b050f4b0ca58c (diff) |
Resolves: #i122984# Avoid too many Print JobSetups...
be more tolerant with last line TIFF imports
(cherry picked from commit 0ab284f5064f66a11741fa4aa2e2774c1d7e5f14)
Change-Id: I75c86422bfbf2f83e1027bbc1bd83260de39b3ca
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/gdi/print.cxx | 24 |
1 files changed, 19 insertions, 5 deletions
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(); |