Kaydet (Commit) 2a1fe443 authored tarafından Katarina Behrens's avatar Katarina Behrens

Related tdf#91362: disable paper size & orientation selection

Unless 'Use only papersize from printer prefs' is toggled on,
whatever the user sets here doesn't have any effect on the actual
printing (page settings from the document are used instead). It is
misleading to have the user believe otherwise.

It was really challenging to have this one toggle get all the way
down through several layers of abstraction, though ...

Change-Id: If240084ca23b3946a92882a6ee47dbc161b3b86c
Reviewed-on: https://gerrit.libreoffice.org/16812Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarKatarina Behrens <Katarina.Behrens@cib.de>
üst 459bcc22
...@@ -320,7 +320,7 @@ public: ...@@ -320,7 +320,7 @@ public:
bool SetJobSetup( const JobSetup& rSetup ); bool SetJobSetup( const JobSetup& rSetup );
const JobSetup& GetJobSetup() const { return maJobSetup; } const JobSetup& GetJobSetup() const { return maJobSetup; }
bool Setup( vcl::Window* pWindow = NULL ); bool Setup( vcl::Window* pWindow = NULL, bool bPapersizeFromSetup = false );
bool SetPrinterProps( const Printer* pPrinter ); bool SetPrinterProps( const Printer* pPrinter );
// SetPrinterOptions is used internally only now // SetPrinterOptions is used internally only now
......
...@@ -50,6 +50,7 @@ struct PrinterInfo : JobData ...@@ -50,6 +50,7 @@ struct PrinterInfo : JobData
// a list of special features separated by ',' not used by psprint // a list of special features separated by ',' not used by psprint
// but assigned from the outside (currently for "fax","pdf=","autoqueue","external_dialog") // but assigned from the outside (currently for "fax","pdf=","autoqueue","external_dialog")
OUString m_aFeatures; OUString m_aFeatures;
bool m_bPapersizeFromSetup;
PrinterInfo() : PrinterInfo() :
JobData() JobData()
......
...@@ -560,6 +560,7 @@ bool PspSalInfoPrinter::Setup( SalFrame* pFrame, ImplJobSetup* pJobSetup ) ...@@ -560,6 +560,7 @@ bool PspSalInfoPrinter::Setup( SalFrame* pFrame, ImplJobSetup* pJobSetup )
SetData( ~0, pJobSetup ); SetData( ~0, pJobSetup );
JobData::constructFromStreamBuffer( pJobSetup->mpDriverData, pJobSetup->mnDriverDataLen, aInfo ); JobData::constructFromStreamBuffer( pJobSetup->mpDriverData, pJobSetup->mnDriverDataLen, aInfo );
} }
aInfo.m_bPapersizeFromSetup = pJobSetup->mbPapersizeFromSetup;
if (SetupPrinterDriver(aInfo)) if (SetupPrinterDriver(aInfo))
{ {
......
...@@ -256,6 +256,14 @@ void RTSPaperPage::update() ...@@ -256,6 +256,14 @@ void RTSPaperPage::update()
m_pSlotText->Enable( false ); m_pSlotText->Enable( false );
m_pSlotBox->Enable( false ); m_pSlotBox->Enable( false );
} }
// disable those, unless user wants to use papersize from printer prefs
// as they have no influence on what's going to be printed anyway
if (!m_pParent->m_aJobData.m_bPapersizeFromSetup)
{
m_pPaperBox->Enable( false );
m_pOrientBox->Enable( false );
}
} }
IMPL_LINK( RTSPaperPage, SelectHdl, ListBox*, pBox ) IMPL_LINK( RTSPaperPage, SelectHdl, ListBox*, pBox )
...@@ -286,6 +294,7 @@ IMPL_LINK( RTSPaperPage, SelectHdl, ListBox*, pBox ) ...@@ -286,6 +294,7 @@ IMPL_LINK( RTSPaperPage, SelectHdl, ListBox*, pBox )
m_pParent->m_aJobData.m_aContext.setValue( pKey, pValue ); m_pParent->m_aJobData.m_aContext.setValue( pKey, pValue );
update(); update();
} }
m_pParent->SetDataModified( true ); m_pParent->SetDataModified( true );
return 0; return 0;
} }
......
...@@ -43,6 +43,7 @@ struct ImplJobSetup ...@@ -43,6 +43,7 @@ struct ImplJobSetup
long mnPaperHeight; // paper height (100th mm) long mnPaperHeight; // paper height (100th mm)
sal_uIntPtr mnDriverDataLen; // length of system specific data sal_uIntPtr mnDriverDataLen; // length of system specific data
sal_uInt8* mpDriverData; // system specific data (will be streamed a byte block) sal_uInt8* mpDriverData; // system specific data (will be streamed a byte block)
bool mbPapersizeFromSetup;
std::unordered_map< OUString, OUString, OUStringHash > maValueMap; std::unordered_map< OUString, OUString, OUStringHash > maValueMap;
ImplJobSetup(); ImplJobSetup();
......
...@@ -61,6 +61,7 @@ ImplJobSetup::ImplJobSetup() ...@@ -61,6 +61,7 @@ ImplJobSetup::ImplJobSetup()
mnPaperHeight = 0; mnPaperHeight = 0;
mnDriverDataLen = 0; mnDriverDataLen = 0;
mpDriverData = NULL; mpDriverData = NULL;
mbPapersizeFromSetup = false;
} }
ImplJobSetup::ImplJobSetup( const ImplJobSetup& rJobSetup ) : ImplJobSetup::ImplJobSetup( const ImplJobSetup& rJobSetup ) :
...@@ -83,6 +84,7 @@ ImplJobSetup::ImplJobSetup( const ImplJobSetup& rJobSetup ) : ...@@ -83,6 +84,7 @@ ImplJobSetup::ImplJobSetup( const ImplJobSetup& rJobSetup ) :
} }
else else
mpDriverData = NULL; mpDriverData = NULL;
mbPapersizeFromSetup = rJobSetup.mbPapersizeFromSetup;
maValueMap = rJobSetup.maValueMap; maValueMap = rJobSetup.maValueMap;
} }
......
...@@ -1133,7 +1133,7 @@ bool Printer::SetJobSetup( const JobSetup& rSetup ) ...@@ -1133,7 +1133,7 @@ bool Printer::SetJobSetup( const JobSetup& rSetup )
return false; return false;
} }
bool Printer::Setup( vcl::Window* pWindow ) bool Printer::Setup( vcl::Window* pWindow, bool bPapersizeFromSetup )
{ {
if ( IsDisplayPrinter() ) if ( IsDisplayPrinter() )
return false; return false;
...@@ -1142,6 +1142,8 @@ bool Printer::Setup( vcl::Window* pWindow ) ...@@ -1142,6 +1142,8 @@ bool Printer::Setup( vcl::Window* pWindow )
return false; return false;
JobSetup aJobSetup = maJobSetup; JobSetup aJobSetup = maJobSetup;
ImplJobSetup* pData = aJobSetup.ImplGetData();
pData->mbPapersizeFromSetup = bPapersizeFromSetup;
SalFrame* pFrame; SalFrame* pFrame;
if ( !pWindow ) if ( !pWindow )
pWindow = ImplGetDefaultWindow(); pWindow = ImplGetDefaultWindow();
...@@ -1153,7 +1155,7 @@ bool Printer::Setup( vcl::Window* pWindow ) ...@@ -1153,7 +1155,7 @@ bool Printer::Setup( vcl::Window* pWindow )
ImplSVData* pSVData = ImplGetSVData(); ImplSVData* pSVData = ImplGetSVData();
pSVData->maAppData.mnModalMode++; pSVData->maAppData.mnModalMode++;
nImplSysDialog++; nImplSysDialog++;
bool bSetup = mpInfoPrinter->Setup( pFrame, aJobSetup.ImplGetData() ); bool bSetup = mpInfoPrinter->Setup( pFrame, pData );
pSVData->maAppData.mnModalMode--; pSVData->maAppData.mnModalMode--;
nImplSysDialog--; nImplSysDialog--;
if ( bSetup ) if ( bSetup )
......
...@@ -825,7 +825,7 @@ bool PrinterController::setupPrinter( vcl::Window* i_pParent ) ...@@ -825,7 +825,7 @@ bool PrinterController::setupPrinter( vcl::Window* i_pParent )
} }
// call driver setup // call driver setup
bRet = mpImplData->mxPrinter->Setup( i_pParent ); bRet = mpImplData->mxPrinter->Setup( i_pParent, getPapersizeFromSetup() );
Size aNewPaperSize(mpImplData->mxPrinter->GetPaperSize()); Size aNewPaperSize(mpImplData->mxPrinter->GetPaperSize());
if (bRet) if (bRet)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment