oox/source/ppt/pptimport.cxx | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-)
New commits: commit 5dfaf7a608a1827d1b56ac7a7d4651f26e4754d1 Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Mon Oct 14 00:12:23 2019 +0300 Commit: Michael Stahl <michael.st...@cib.de> CommitDate: Mon Oct 14 13:10:23 2019 +0200 tdf#127164: Disable Undo during pptx save Change-Id: I07fe6895cc2ba43dfa1716e67bdbb4e697e3420c Reviewed-on: https://gerrit.libreoffice.org/80727 Tested-by: Jenkins Reviewed-by: Jim Raykowski <rayk...@gmail.com> (cherry picked from commit 03ec3b7dd11656c8b64a94efb172e17d97ea662e) Reviewed-on: https://gerrit.libreoffice.org/80756 Tested-by: Xisco FaulĂ <xiscofa...@libreoffice.org> Reviewed-by: Michael Stahl <michael.st...@cib.de> diff --git a/oox/source/ppt/pptimport.cxx b/oox/source/ppt/pptimport.cxx index d65e408d3c13..9476eca2d825 100644 --- a/oox/source/ppt/pptimport.cxx +++ b/oox/source/ppt/pptimport.cxx @@ -25,6 +25,7 @@ #include <com/sun/star/document/XUndoManager.hpp> #include <com/sun/star/document/XUndoManagerSupplier.hpp> #include <comphelper/propertysequence.hxx> +#include <comphelper/scopeguard.hxx> #include <osl/diagnose.h> #include <vcl/svapp.hxx> #include <vcl/weld.hxx> @@ -232,17 +233,28 @@ sal_Bool SAL_CALL PowerPointImport::filter( const Sequence< PropertyValue >& rDe Reference<css::lang::XMultiServiceFactory> aFactory(getComponentContext()->getServiceManager(), UNO_QUERY_THROW); Reference< XExporter > xExporter(aFactory->createInstanceWithArguments("com.sun.star.comp.Impress.oox.PowerPointExport", aArguments), UNO_QUERY); - if (xExporter.is()) + if (Reference<XFilter> xFilter{ xExporter, UNO_QUERY }) { - Reference< XComponent > xDocument( getModel(), UNO_QUERY ); - Reference< XFilter > xFilter( xExporter, UNO_QUERY ); - - if (xFilter.is()) + Reference<util::XLockable> xUndoManager; + bool bWasUnLocked = true; + if (Reference<document::XUndoManagerSupplier> xUMS{ getModel(), UNO_QUERY }) { - xExporter->setSourceDocument( xDocument ); - if( xFilter->filter( rDescriptor ) ) - return true; + xUndoManager = xUMS->getUndoManager(); + if (xUndoManager.is()) + { + bWasUnLocked = !xUndoManager->isLocked(); + xUndoManager->lock(); + } } + comphelper::ScopeGuard aGuard([xUndoManager, bWasUnLocked] { + if (xUndoManager && bWasUnLocked) + xUndoManager->unlock(); + }); + + Reference< XComponent > xDocument(getModel(), UNO_QUERY); + xExporter->setSourceDocument(xDocument); + if (xFilter->filter(rDescriptor)) + return true; } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits