tdf#148806 doc vba: accept module AutoOpen.Main
This is the lowest priority way of running AutoOpen,
and it only applies to Word, not Excel.
There is some code in basic/source/classes/sb.cxx
that was somewhat finding this before it got lost in LO 7.4
with commit beb6c62e99.
TODO: these AutoOpens should only run with a public sub,
not a private one.
Change-Id: I8a733cde13f96636942d84a0b05520692aac3e52
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141094
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
#include <com/sun/star/document/XEventBroadcaster.hpp>
|
||||
#include <com/sun/star/frame/XModel.hpp>
|
||||
#include <com/sun/star/script/ModuleType.hpp>
|
||||
#include <com/sun/star/script/vba/VBAEventId.hpp>
|
||||
#include <com/sun/star/script/vba/XVBAModuleInfo.hpp>
|
||||
#include <com/sun/star/script/XLibraryContainer.hpp>
|
||||
#include <com/sun/star/util/VetoException.hpp>
|
||||
@@ -367,7 +368,22 @@ VbaEventsHelperBase::ModulePathMap& VbaEventsHelperBase::updateModulePathMap( co
|
||||
{
|
||||
const EventHandlerInfo& rInfo = rEventInfo.second;
|
||||
if( rInfo.mnModuleType == nModuleType )
|
||||
rPathMap[ rInfo.mnEventId ] = resolveVBAMacro( mpShell, maLibraryName, rModuleName, rInfo.maMacroName );
|
||||
{
|
||||
OUString sName = resolveVBAMacro(mpShell, maLibraryName, rModuleName,
|
||||
rInfo.maMacroName);
|
||||
// Only in Word (with lowest priority), an Auto* module can execute a "Public Sub Main"
|
||||
if (sName.isEmpty() && rModuleName.isEmpty()
|
||||
&& getImplementationName() == "SwVbaEventsHelper")
|
||||
{
|
||||
if (rInfo.mnEventId == css::script::vba::VBAEventId::AUTO_NEW
|
||||
|| rInfo.mnEventId == css::script::vba::VBAEventId::AUTO_OPEN
|
||||
|| rInfo.mnEventId == css::script::vba::VBAEventId::AUTO_CLOSE)
|
||||
{
|
||||
sName = resolveVBAMacro(mpShell, maLibraryName, rInfo.maMacroName, "Main");
|
||||
}
|
||||
}
|
||||
rPathMap[rInfo.mnEventId] = sName;
|
||||
}
|
||||
}
|
||||
return rPathMap;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user