summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorTamás Zolnai <tamas.zolnai@collabora.com>2017-12-21 05:44:04 +0100
committerJan Holesovsky <kendy@collabora.com>2017-12-22 14:46:53 +0100
commit867cbce9d2b272bd56e505d2a12762c8384ec7ea (patch)
treef4d53d52ea47cad62e4b7264847b741646006dc6 /oox
parenta7b7ccb71384d2fdb5a7f076129d89ef78636d67 (diff)
tdf#114613: Repair function does not work after opening PPTX file
We need to disable undo handling during file import. Same is done for other file formats (e.g. PPT, XLSX). Change-Id: I1969c17b4a25b59b0d216ee847b3664e9c2207ca Reviewed-on: https://gerrit.libreoffice.org/46882 Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com> Tested-by: Tamás Zolnai <tamas.zolnai@collabora.com> (cherry picked from commit 02ea9bc36ab47d68940da55f5012677dfaf0a8b8) Reviewed-on: https://gerrit.libreoffice.org/46973 Reviewed-by: Jan Holesovsky <kendy@collabora.com> Tested-by: Jan Holesovsky <kendy@collabora.com>
Diffstat (limited to 'oox')
-rw-r--r--oox/source/ppt/pptimport.cxx18
1 files changed, 18 insertions, 0 deletions
diff --git a/oox/source/ppt/pptimport.cxx b/oox/source/ppt/pptimport.cxx
index f76805235a88..9b68afe98974 100644
--- a/oox/source/ppt/pptimport.cxx
+++ b/oox/source/ppt/pptimport.cxx
@@ -21,6 +21,8 @@
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/document/XUndoManager.hpp>
+#include <com/sun/star/document/XUndoManagerSupplier.hpp>
#include <comphelper/propertysequence.hxx>
#include <osl/diagnose.h>
#include <vcl/msgbox.hxx>
@@ -94,6 +96,19 @@ bool PowerPointImport::importDocument()
file:///<path-to-oox-module>/source/dump/pptxdumper.ini. */
OOX_DUMP_FILE( ::oox::dump::pptx::Dumper );
+ uno::Reference< document::XUndoManagerSupplier > xUndoManagerSupplier (getModel(), UNO_QUERY );
+ uno::Reference< util::XLockable > xUndoManager;
+ bool bWasUnLocked = true;
+ if(xUndoManagerSupplier.is())
+ {
+ xUndoManager = xUndoManagerSupplier->getUndoManager();
+ if(xUndoManager.is())
+ {
+ bWasUnLocked = !xUndoManager->isLocked();
+ xUndoManager->lock();
+ }
+ }
+
importDocumentProperties();
OUString aFragmentPath = getFragmentPathFromFirstTypeFromOfficeDoc( "officeDocument" );
@@ -118,6 +133,9 @@ bool PowerPointImport::importDocument()
pBox->Execute();
}
+ if(xUndoManager.is() && bWasUnLocked)
+ xUndoManager->unlock();
+
return bRet;
}