diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-08-07 17:37:11 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-08-13 13:26:15 +0200 |
commit | b3edf85e0fe6ca03dc26e1bf531be82193bc9627 (patch) | |
tree | 62887e38b2f0b06ca8e74fffd126560b5b0c8049 /xmloff | |
parent | c78dd0a726b32d922a0d75a26a51d4c30612368c (diff) |
warn on load when a document binds an event to a macro
a) treat shared/Scripts equivalently to document scripts
This doesn't automatically warn/block running those scripts when used in a
freshly loaded document on its own however
because DocumentMacroMode::checkMacrosOnLoading will see at...
if ( m_xData->m_rDocumentAccess.documentStorageHasMacros() || hasMacroLibrary() )
that the document contains no macros and flip the allow macros flag to true so
that potentially new uses of macros added by the user during the edit are
allowed to run
b) so, add an additional flag to indicate existence of use of macros in a document
c) for odf import, set it when a script:event-listener tag is encountered
d) for html import when registerScriptEvents or SwFormatINetFormat::SetMacroTable is called
e) for doc import when Read_F_Macro or StoreMacroCmds is called as well for good measure
f) for xls import when registerScriptEvent or ScMacroInfo::SetMacro is called
g) for oox import when VbaProject::attachMacros is called
Change-Id: Ic1203d8ec7dfc217aa217135033ae9db2888e19b
Reviewed-on: https://gerrit.libreoffice.org/77131
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'xmloff')
-rw-r--r-- | xmloff/source/core/xmlimp.cxx | 14 | ||||
-rw-r--r-- | xmloff/source/script/XMLEventImportHelper.cxx | 3 |
2 files changed, 15 insertions, 2 deletions
diff --git a/xmloff/source/core/xmlimp.cxx b/xmloff/source/core/xmlimp.cxx index b2b04e799ef0..525b557969dc 100644 --- a/xmloff/source/core/xmlimp.cxx +++ b/xmloff/source/core/xmlimp.cxx @@ -63,6 +63,7 @@ #include <cppuhelper/supportsservice.hxx> #include <comphelper/extract.hxx> #include <comphelper/documentconstants.hxx> +#include <comphelper/documentinfo.hxx> #include <comphelper/storagehelper.hxx> #include <comphelper/attributelist.hxx> #include <unotools/fontcvt.hxx> @@ -400,7 +401,8 @@ SvXMLImport::SvXMLImport( isFastContext( false ), maNamespaceHandler( new SvXMLImportFastNamespaceHandler() ), mbIsFormsSupported( true ), - mbIsTableShapeSupported( false ) + mbIsTableShapeSupported( false ), + mbNotifyMacroEventRead( false ) { SAL_WARN_IF( !xContext.is(), "xmloff.core", "got no service manager" ); InitCtor_(); @@ -2155,6 +2157,16 @@ void SvXMLImport::registerNamespaces() } } +void SvXMLImport::NotifyMacroEventRead() +{ + if (mbNotifyMacroEventRead) + return; + + comphelper::DocumentInfo::notifyMacroEventRead(mxModel); + + mbNotifyMacroEventRead = true; +} + SvXMLImportFastNamespaceHandler::SvXMLImportFastNamespaceHandler() { } diff --git a/xmloff/source/script/XMLEventImportHelper.cxx b/xmloff/source/script/XMLEventImportHelper.cxx index ffc6089cc7d5..42788bb1e0b2 100644 --- a/xmloff/source/script/XMLEventImportHelper.cxx +++ b/xmloff/source/script/XMLEventImportHelper.cxx @@ -36,7 +36,6 @@ XMLEventImportHelper::XMLEventImportHelper() : { } - XMLEventImportHelper::~XMLEventImportHelper() { // delete factories @@ -107,6 +106,8 @@ SvXMLImportContext* XMLEventImportHelper::CreateContext( const OUString& rXmlEventName, const OUString& rLanguage) { + rImport.NotifyMacroEventRead(); + SvXMLImportContext* pContext = nullptr; // translate event name from xml to api |