sw/source/uibase/app/appopt.cxx | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
New commits: commit 65611a4772b6537658dbbc9392cdac31aef6c7a7 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Mon Dec 2 10:56:17 2019 +0100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Tue Dec 3 08:45:59 2019 +0100 tdf#47583 sw: Don't mix doc print settings into option dialog Show and manage the default Writer print options in the "Tools" -> "Options" -> "LibreOfficeDev Writer" -> "Print" dialog and don't mix in the document-specific values of the currently opened document, as this is rather confusing as described in tdf#47583. There is a separate dialog to manage the settings for the currently opened document available via "File" -> "Printer Settings" -> "Options". At a quick glance, this also matches the behaviour for Calc, which doesn't mix in the current doc's settings either. This handles the case for the Writer-specific print options. For a more general approach on whether and how document-specific options should be handled in the "Tools" -> "Options" dialog at all, there are already tdf#43786 ("Intransparent Use of Options") and tdf#105751 ("Separate document saved options from global options in Options dialog"). Side note: The previous implementation also wasn't synchronizing the settings both ways. Changes made in the "File" -> "Printer Settings" -> "Options" dialog did show up in the "Tools" -> "Options" -> "LibreOfficeDev Writer" -> "Print" dialog at once, but not the other way around. The reason is that Writer-specific print settings are currently managed in two places in DocumentDeviceManager: (1) its SwPrintData, accessible via 'DocumentDeviceManager::{g,s}etPrintData' (2) the print data set in its 'SfxPrinter*' ('DocumentDeviceManager::{g,s}etPrinter') The "File" -> "Printer Settings" -> "Options" dialog uses the settings from the SfxPrinter. So, to make synchronization work both ways with the previous implementation, the changes made in the "Tools" -> "Options" dialog would also have to be applied for (2), not just (1), e.g. this way: diff --git a/sw/source/uibase/app/appopt.cxx b/sw/source/uibase/app/appopt.cxx index 9c7e24592014..83bae7eb71b9 100644 --- a/sw/source/uibase/app/appopt.cxx +++ b/sw/source/uibase/app/appopt.cxx @@ -371,8 +371,15 @@ void SwModule::ApplyItemSet( sal_uInt16 nId, const SfxItemSet& rSet ) const SwAddPrinterItem* pAddPrinterAttr = static_cast<const SwAddPrinterItem*>(pItem); *pOpt = *pAddPrinterAttr; - if(pAppView) + if(pAppView) { pAppView->GetWrtShell().getIDocumentDeviceAccess().setPrintData( *pOpt ); + SfxPrinter* pDocPrinter = pAppView->GetWrtShell().getIDocumentDeviceAccess().getPrinter(false); + if (pDocPrinter) { + SfxItemSet aOptions(pDocPrinter->GetOptions()); + aOptions.Put(*pAddPrinterAttr); + pDocPrinter->SetOptions(aOptions); + } + } } } (Maybe that should be consolidated at some point in time...) Change-Id: I74961f4d8947e200b415e6e32e128a0ce3d317f5 Reviewed-on: https://gerrit.libreoffice.org/84212 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> (cherry picked from commit d23c52cbf7e48130fec1e48bf726c563035a3497) Reviewed-on: https://gerrit.libreoffice.org/84250 diff --git a/sw/source/uibase/app/appopt.cxx b/sw/source/uibase/app/appopt.cxx index 9c7e24592014..f071b85997fe 100644 --- a/sw/source/uibase/app/appopt.cxx +++ b/sw/source/uibase/app/appopt.cxx @@ -209,13 +209,7 @@ std::unique_ptr<SfxItemSet> SwModule::CreateItemSet( sal_uInt16 nId ) pRet->Put(aGridItem); // Options for PrintTabPage - const SwPrintData* pOpt = pAppView ? - &pAppView->GetWrtShell().getIDocumentDeviceAccess().getPrintData() : - nullptr; - - if(!pOpt) - pOpt = GetPrtOptions(!bTextDialog); - + const SwPrintData* pOpt = GetPrtOptions(!bTextDialog); SwAddPrinterItem aAddPrinterItem(*pOpt ); pRet->Put(aAddPrinterItem); @@ -370,9 +364,6 @@ void SwModule::ApplyItemSet( sal_uInt16 nId, const SfxItemSet& rSet ) { const SwAddPrinterItem* pAddPrinterAttr = static_cast<const SwAddPrinterItem*>(pItem); *pOpt = *pAddPrinterAttr; - - if(pAppView) - pAppView->GetWrtShell().getIDocumentDeviceAccess().setPrintData( *pOpt ); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits