summaryrefslogtreecommitdiff
path: root/xmloff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-08-07 17:37:11 +0100
committerMichael Stahl <Michael.Stahl@cib.de>2019-11-20 15:59:53 +0100
commit37381d11906b19e120862d09ca959e23fc6283d7 (patch)
tree0ea81239aff6520b1e24b33790cd8c315f203b5a /xmloff
parentd570791b290c7567a24620e76f9e6fa07d1efa82 (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 Reviewed-on: https://gerrit.libreoffice.org/77387 Tested-by: Jenkins Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com> (cherry picked from commit 35fe064a67b54b0680b4845477c9b8751edda160) Change-Id: Ic1203d8ec7dfc217aa217135033ae9db2888e19b
Diffstat (limited to 'xmloff')
-rw-r--r--xmloff/source/core/xmlimp.cxx14
-rw-r--r--xmloff/source/script/XMLEventImportHelper.cxx3
2 files changed, 15 insertions, 2 deletions
diff --git a/xmloff/source/core/xmlimp.cxx b/xmloff/source/core/xmlimp.cxx
index fdf943d775a3..cf55462b4602 100644
--- a/xmloff/source/core/xmlimp.cxx
+++ b/xmloff/source/core/xmlimp.cxx
@@ -57,6 +57,7 @@
#include <cppuhelper/supportsservice.hxx>
#include <comphelper/extract.hxx>
#include <comphelper/documentconstants.hxx>
+#include <comphelper/documentinfo.hxx>
#include <comphelper/storagehelper.hxx>
#include <comphelper/propertysequence.hxx>
#include <unotools/fontcvt.hxx>
@@ -399,7 +400,8 @@ SvXMLImport::SvXMLImport(
maNamespaceHandler( new SvXMLImportFastNamespaceHandler() ),
mxFastDocumentHandler( nullptr ),
mbIsFormsSupported( true ),
- mbIsTableShapeSupported( false )
+ mbIsTableShapeSupported( false ),
+ mbNotifyMacroEventRead( false )
{
SAL_WARN_IF( !xContext.is(), "xmloff.core", "got no service manager" );
InitCtor_();
@@ -2177,6 +2179,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 0e45525856af..93fd43da93e8 100644
--- a/xmloff/source/script/XMLEventImportHelper.cxx
+++ b/xmloff/source/script/XMLEventImportHelper.cxx
@@ -36,7 +36,6 @@ XMLEventImportHelper::XMLEventImportHelper() :
{
}
-
XMLEventImportHelper::~XMLEventImportHelper()
{
// delete factories
@@ -117,6 +116,8 @@ SvXMLImportContext* XMLEventImportHelper::CreateContext(
const OUString& rXmlEventName,
const OUString& rLanguage)
{
+ rImport.NotifyMacroEventRead();
+
SvXMLImportContext* pContext = nullptr;
// translate event name form xml to api