include/vcl/print.hxx | 1 + vcl/source/gdi/print3.cxx | 18 ++++++++++++++++++ vcl/source/window/printdlg.cxx | 11 +++++++---- 3 files changed, 26 insertions(+), 4 deletions(-)
New commits: commit baa647b52b7984faff3ec7295ecd3407f7cc57ee Author: Daniel <[email protected]> AuthorDate: Mon Aug 6 10:50:17 2018 -0300 Commit: Daniel Silva <[email protected]> CommitDate: Fri Aug 10 21:34:39 2018 +0200 Fix paper size combobox selection Change-Id: I9682e0fcd58b45957e7f488e0b184475a39240c2 Reviewed-on: https://gerrit.libreoffice.org/58644 Tested-by: Jenkins Reviewed-by: Daniel Silva <[email protected]> diff --git a/include/vcl/print.hxx b/include/vcl/print.hxx index 21117df0a5fe..d4ec3219af3d 100644 --- a/include/vcl/print.hxx +++ b/include/vcl/print.hxx @@ -557,6 +557,7 @@ public: SAL_DLLPRIVATE bool getReversePrint() const; SAL_DLLPRIVATE void setPapersizeFromSetup( bool i_bPapersizeFromSetup ); SAL_DLLPRIVATE bool getPapersizeFromSetup() const; + SAL_DLLPRIVATE void setPaperSizeFromUser( Size i_aUserSize ); VCL_PLUGIN_PUBLIC void setPrinterModified( bool i_bPapersizeFromSetup ); VCL_PLUGIN_PUBLIC bool getPrinterModified() const; SAL_DLLPRIVATE void pushPropertiesToPrinter(); diff --git a/vcl/source/gdi/print3.cxx b/vcl/source/gdi/print3.cxx index 69dc05d9a949..0405aeecabfb 100644 --- a/vcl/source/gdi/print3.cxx +++ b/vcl/source/gdi/print3.cxx @@ -151,6 +151,7 @@ public: bool mbLastPage; bool mbReversePageOrder; bool mbPapersizeFromSetup; + bool mbPapersizeFromUser; bool mbPrinterModified; css::view::PrintableState meJobState; @@ -162,6 +163,8 @@ public: // set by user through printer properties subdialog of printer settings dialog Size maDefaultPageSize; + // set by user through print dialog + Size maUserPageSize; // set by user through printer properties subdialog of printer settings dialog sal_Int32 mnDefaultPaperBin; // Set by user through printer properties subdialog of print dialog. @@ -186,6 +189,7 @@ public: mbLastPage( false ), mbReversePageOrder( false ), mbPapersizeFromSetup( false ), + mbPapersizeFromUser( false ), mbPrinterModified( false ), meJobState( css::view::PrintableState_JOB_STARTED ), mpProgress( nullptr ), @@ -196,6 +200,8 @@ public: const Size& getRealPaperSize( const Size& i_rPageSize, bool bNoNUP ) const { + if ( mbPapersizeFromUser ) + return maUserPageSize; if( mbPapersizeFromSetup ) return maDefaultPageSize; if( maMultiPage.nRows * maMultiPage.nColumns > 1 && ! bNoNUP ) @@ -785,6 +791,7 @@ void PrinterController::setPrinter( const VclPtr<Printer>& i_rPrinter ) mpImplData->mxPrinter->Push(); mpImplData->mxPrinter->SetMapMode(MapMode(MapUnit::Map100thMM)); mpImplData->maDefaultPageSize = mpImplData->mxPrinter->GetPaperSize(); + mpImplData->mbPapersizeFromUser = false; mpImplData->mxPrinter->Pop(); mpImplData->mnFixedPaperBin = -1; } @@ -1364,6 +1371,8 @@ void PrinterController::setPapersizeFromSetup( bool i_bPapersizeFromSetup ) { mpImplData->mbPapersizeFromSetup = i_bPapersizeFromSetup; mpImplData->mxPrinter->SetPrinterSettingsPreferred( i_bPapersizeFromSetup ); + if ( i_bPapersizeFromSetup ) + mpImplData->mbPapersizeFromUser = !i_bPapersizeFromSetup; } bool PrinterController::getPapersizeFromSetup() const @@ -1371,6 +1380,15 @@ bool PrinterController::getPapersizeFromSetup() const return mpImplData->mbPapersizeFromSetup; } +void PrinterController::setPaperSizeFromUser( Size i_aUserSize ) +{ + mpImplData->mbPapersizeFromUser = true; + mpImplData->mbPapersizeFromSetup = false; + mpImplData->mxPrinter->SetPrinterSettingsPreferred( false ); + + mpImplData->maUserPageSize = i_aUserSize; +} + void PrinterController::setPrinterModified( bool i_bPrinterModified ) { mpImplData->mbPrinterModified = i_bPrinterModified; diff --git a/vcl/source/window/printdlg.cxx b/vcl/source/window/printdlg.cxx index 7b9ff7f7cd80..ddc8589fd23a 100644 --- a/vcl/source/window/printdlg.cxx +++ b/vcl/source/window/printdlg.cxx @@ -776,15 +776,15 @@ void PrintDialog::setPaperSizes() { mpPaperSizeBox->Clear(); + VclPtr<Printer> aPrt( maPController->getPrinter() ); + mePaper = aPrt->GetPaper(); + if ( isPrintToFile() ) { mpPaperSizeBox->Enable( false ); } else { - VclPtr<Printer> aPrt( maPController->getPrinter() ); - mePaper = aPrt->GetPaper(); - for (int nPaper = 0; nPaper < aPrt->GetPaperInfoCount(); nPaper++) { PaperInfo aInfo = aPrt->GetPaperInfo( nPaper ); @@ -1834,10 +1834,13 @@ IMPL_LINK( PrintDialog, SelectHdl, ListBox&, rBox, void ) PaperInfo aInfo = aPrt->GetPaperInfo( rBox.GetSelectedEntryPos() ); aInfo.doSloppyFit(); mePaper = aInfo.getPaper(); - aPrt->SetPaper( mePaper ); + if ( mePaper == PAPER_USER ) aPrt->SetPaperSizeUser( Size( aInfo.getWidth(), aInfo.getHeight() ) ); + else + aPrt->SetPaper( mePaper ); + maPController->setPaperSizeFromUser( Size( aInfo.getWidth(), aInfo.getHeight() ) ); preparePreview(); } } _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
