[ooo-build-commit] .: patches/dev300 patches/vba

Noel Power noelp at kemper.freedesktop.org
Mon Aug 9 06:25:36 PDT 2010


 patches/dev300/apply                        |    2 
 patches/vba/vba-msvbahelper-splitbuilt.diff |  314 +++++++++++++++++++++-------
 2 files changed, 243 insertions(+), 73 deletions(-)

New commits:
commit 8e38ec567de0f2936f278274cb87469d873cc6c4
Author: Noel Power <noel.power at novell.com>
Date:   Mon Aug 9 14:24:16 2010 +0100

    fixup port vba-msvbahelper-splitbuilt to m2
    
    * patches/dev300/apply:
    * patches/vba/vba-msvbahelper-splitbuilt.diff:

diff --git a/patches/dev300/apply b/patches/dev300/apply
index b036a29..bbcdd94 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -1586,6 +1586,8 @@ fix-name-range-separator.diff, n#597351
 vbahelper-no-oox.diff
 # misc changes to modify strange upstream changes
 vba-misc-tweakupstream-m2.diff
+# unoize msvbahelper to solve some dependency issues for split build
+vba-msvbahelper-splitbuilt.diff
 [ VBAUntested ]
 SectionOwner => noelpwer
 # KEEP - unfinished autotext stuff 
diff --git a/patches/vba/vba-msvbahelper-splitbuilt.diff b/patches/vba/vba-msvbahelper-splitbuilt.diff
index 42682c5..787f0ee 100644
--- a/patches/vba/vba-msvbahelper-splitbuilt.diff
+++ b/patches/vba/vba-msvbahelper-splitbuilt.diff
@@ -1,9 +1,9 @@
 diff --git filter/inc/filter/msfilter/msvbahelper.hxx filter/inc/filter/msfilter/msvbahelper.hxx
 deleted file mode 100644
-index 1e2032e..0000000
+index 1623fd3..0000000
 --- filter/inc/filter/msfilter/msvbahelper.hxx
 +++ /dev/null
-@@ -1,55 +0,0 @@
+@@ -1,56 +0,0 @@
 -/*************************************************************************
 - *
 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -54,7 +54,8 @@ index 1e2032e..0000000
 -    };
 -
 -    MSFILTER_DLLPUBLIC String makeMacroURL( const String& sMacroName );
--    MSFILTER_DLLPUBLIC  VBAMacroResolvedInfo resolveVBAMacro( SfxObjectShell* pShell, const rtl::OUString& sMod, bool bSearchGlobalTemplates = false );
+-    MSFILTER_DLLPUBLIC ::rtl::OUString extractMacroName( const ::rtl::OUString& rMacroUrl );
+-    MSFILTER_DLLPUBLIC VBAMacroResolvedInfo resolveVBAMacro( SfxObjectShell* pShell, const rtl::OUString& sMod, bool bSearchGlobalTemplates = false );
 -    MSFILTER_DLLPUBLIC sal_Bool executeMacro( SfxObjectShell* pShell, const String& sMacroName, com::sun::star::uno::Sequence< com::sun::star::uno::Any >& aArgs, com::sun::star::uno::Any& aRet, const com::sun::star::uno::Any& aCaller );
 -} }
 -
@@ -119,10 +120,10 @@ index eead43c..3b92f80 100644
              sControlData.push_back( aProp );
 diff --git filter/source/msfilter/msvbahelper.cxx filter/source/msfilter/msvbahelper.cxx
 deleted file mode 100644
-index ef8a242..0000000
+index 0ad623d..0000000
 --- filter/source/msfilter/msvbahelper.cxx
 +++ /dev/null
-@@ -1,394 +0,0 @@
+@@ -1,411 +0,0 @@
 -/*************************************************************************
 - *
 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -168,16 +169,27 @@ index ef8a242..0000000
 -
 -using namespace ::com::sun::star;
 -
--const static rtl::OUString sUrlPart0 = rtl::OUString::createFromAscii( "vnd.sun.star.script:");
--const static rtl::OUString sUrlPart1 = rtl::OUString::createFromAscii( "?language=Basic&location=document"); 
--
 -namespace ooo { namespace vba {
 -
+-const static rtl::OUString sUrlPart0 = rtl::OUString::createFromAscii( "vnd.sun.star.script:");
+-const static rtl::OUString sUrlPart1 = rtl::OUString::createFromAscii( "?language=Basic&location=document");
+-
 -String makeMacroURL( const String& sMacroName )
 -{
 -    return sUrlPart0.concat( sMacroName ).concat( sUrlPart1 ) ;
 -}
 -
+-::rtl::OUString extractMacroName( const ::rtl::OUString& rMacroUrl )
+-{
+-    if( (rMacroUrl.getLength() > sUrlPart0.getLength() + sUrlPart1.getLength()) &&
+-        rMacroUrl.match( sUrlPart0 ) &&
+-        rMacroUrl.match( sUrlPart1, rMacroUrl.getLength() - sUrlPart1.getLength() ) )
+-    {
+-        return rMacroUrl.copy( sUrlPart0.getLength(), rMacroUrl.getLength() - sUrlPart0.getLength() - sUrlPart1.getLength() );
+-    }
+-    return ::rtl::OUString();
+-}
+-
 -SfxObjectShell* findShellForUrl( const rtl::OUString& sMacroURLOrPath )
 -{
 -    SfxObjectShell* pFoundShell=NULL;
@@ -330,9 +342,15 @@ index ef8a242..0000000
 -    if ( !pShell )
 -        return aRes;
 -    aRes.SetMacroDocContext( pShell );
+-    
+-    // the name may be enclosed in apostrophs
+-    ::rtl::OUString sMacroUrl = MacroName;
+-    sal_Int32 nMacroLen = MacroName.getLength();
+-    if( (nMacroLen >= 2) && (MacroName[0] == '\'') && (MacroName[nMacroLen-1] == '\'') )
+-        sMacroUrl = MacroName.copy( 1, nMacroLen - 2 );
+-    
 -    // parse the macro name
--    sal_Int32 nDocSepIndex = MacroName.indexOfAsciiL( "!", 1 );
--    String sMacroUrl = MacroName;
+-    sal_Int32 nDocSepIndex = sMacroUrl.indexOf( '!' );
 -
 -    String sContainer;
 -    String sModule;
@@ -345,8 +363,8 @@ index ef8a242..0000000
 -        // recursively
 -
 -        // assume for now that the document name is *this* document
--        String sDocUrlOrPath = MacroName.copy( 0, nDocSepIndex );
--        sMacroUrl = MacroName.copy( nDocSepIndex + 1 );
+-        String sDocUrlOrPath = sMacroUrl.copy( 0, nDocSepIndex );
+-        sMacroUrl = sMacroUrl.copy( nDocSepIndex + 1 );
 -        OSL_TRACE("doc search, current shell is 0x%x", pShell );
 -        SfxObjectShell* pFoundShell = NULL;
 -        if( bSearchGlobalTemplates )
@@ -369,7 +387,7 @@ index ef8a242..0000000
 -        // document is created from ) 
 -    
 -        // macro format = Container.Module.Procedure
--        parseMacro( MacroName, sContainer, sModule, sProcedure ); 
+-        parseMacro( sMacroUrl, sContainer, sModule, sProcedure );
 -        uno::Reference< lang::XMultiServiceFactory> xSF( pShell->GetModel(), uno::UNO_QUERY);
 -        uno::Reference< container::XNameContainer > xPrjNameCache;
 -        if ( xSF.is() )
@@ -540,10 +558,10 @@ index 0000000..e971b8c
 +#endif
 diff --git offapi/com/sun/star/script/XVBAMacroHelper.idl offapi/com/sun/star/script/XVBAMacroHelper.idl
 new file mode 100644
-index 0000000..a240259
+index 0000000..04ef842
 --- /dev/null
 +++ offapi/com/sun/star/script/XVBAMacroHelper.idl
-@@ -0,0 +1,21 @@
+@@ -0,0 +1,22 @@
 +#ifndef com_sun_star_script_XVBAMacroHelper_idl
 +#define com_sun_star_script_XVBAMacroHelper_idl
 +#ifndef __com_sun_star_uno_XInterface_idl__ 
@@ -560,6 +578,7 @@ index 0000000..a240259
 +interface XVBAMacroHelper : com::sun::star::uno::XInterface
 +{
 +    string makeMacroURL( [in] string sMacroName );
++    string extractMacroNameFromURL( [in] string sURL );
 +    com::sun::star::script::XVBAMacroResolvedInfo resolveVBAMacro( [in] com::sun::star::frame::XModel model, [in] string moduleName, [in] boolean bSearchGlobalTemplates );
 +    boolean executeMacro( [in] com::sun::star::frame::XModel model, [in] string smacroName, [inout] sequence< any > aArgs, [inout] any aRet, [in] any aCaller );
 +};
@@ -590,10 +609,10 @@ index 0000000..7d4b37e
 +}; }; }; };
 +#endif
 diff --git offapi/com/sun/star/script/makefile.mk offapi/com/sun/star/script/makefile.mk
-index c6c6416..2cdca88 100644
+index 0282816..c9927c3 100644
 --- offapi/com/sun/star/script/makefile.mk
 +++ offapi/com/sun/star/script/makefile.mk
-@@ -53,6 +53,10 @@ IDLFILES=\
+@@ -54,6 +54,10 @@ IDLFILES=\
          XVBAModuleInfo.idl\
      ModuleInfo.idl\
      ModuleType.idl\
@@ -604,10 +623,6 @@ index c6c6416..2cdca88 100644
  
  # ------------------------------------------------------------------
  
-diff --git oox/util/.makefile.mk.swp oox/util/.makefile.mk.swp
-deleted file mode 100644
-index ad7e40f..0000000
-Binary files oox/util/.makefile.mk.swp and /dev/null differ
 diff --git sc/source/filter/excel/makefile.mk sc/source/filter/excel/makefile.mk
 index a84f4aa..e8b170e 100644
 --- sc/source/filter/excel/makefile.mk
@@ -621,61 +636,65 @@ index a84f4aa..e8b170e 100644
          $(SLO)$/xlchart.obj					\
          $(SLO)$/xlformula.obj				\
 diff --git sc/source/filter/excel/xlescher.cxx sc/source/filter/excel/xlescher.cxx
-index fab4df4..23bfc24 100644
+index 13ac02f..6e1067d 100644
 --- sc/source/filter/excel/xlescher.cxx
 +++ sc/source/filter/excel/xlescher.cxx
-@@ -30,6 +30,8 @@
+@@ -32,6 +32,7 @@
  
  #include <com/sun/star/drawing/XControlShape.hpp>
  #include <com/sun/star/script/ScriptEventDescriptor.hpp>
-+#include <com/sun/star/script/theVBAMacroHelper.hpp>
 +
  #include <svx/unoapi.hxx>
- #include "xestream.hxx"
  #include "document.hxx"
-@@ -42,7 +44,7 @@
- #include <basic/sbmod.hxx>
- #include <basic/sbmeth.hxx>
- #include <basic/basmgr.hxx>
+ #include "xestream.hxx"
+diff --git sc/source/filter/excel/xltools.cxx sc/source/filter/excel/xltools.cxx
+index e2bb19d..51146d5 100644
+--- sc/source/filter/excel/xltools.cxx
++++ sc/source/filter/excel/xltools.cxx
+@@ -34,7 +34,6 @@
+ #include <unotools/fontcvt.hxx>
+ #include <sfx2/objsh.hxx>
+ #include <editeng/editstat.hxx>
 -#include <filter/msfilter/msvbahelper.hxx>
+ #include "xestream.hxx"
+ #include "document.hxx"
+ #include "docuno.hxx"
+@@ -46,8 +45,15 @@
+ #include "xistream.hxx"
+ #include "xiroot.hxx"
+ #include "xltools.hxx"
 +#include <comphelper/processfactory.hxx>
++#include <com/sun/star/script/theVBAMacroHelper.hpp>
  
  using ::rtl::OUString;
- using ::com::sun::star::uno::Reference;
-@@ -51,6 +53,9 @@ using ::com::sun::star::drawing::XShape;
- using ::com::sun::star::drawing::XControlShape;
- using ::com::sun::star::awt::XControlModel;
- using ::com::sun::star::script::ScriptEventDescriptor;
++using ::com::sun::star::uno::Reference;
++
 +using ::com::sun::star::script::XVBAMacroHelper;
 +using ::com::sun::star::script::XVBAMacroResolvedInfo;
 +using ::com::sun::star::script::theVBAMacroHelper;
  
- // Structs and classes ========================================================
+ // GUID import/export =========================================================
  
-@@ -339,11 +344,19 @@ Reference< XControlModel > XclControlHelper::GetControlModel( Reference< XShape
- OUString XclControlHelper::GetScMacroName( const String& rXclMacroName, SfxObjectShell* pDocShell )
+@@ -695,9 +701,16 @@ const OUString XclTools::maSbMacroSuffix( RTL_CONSTASCII_USTRINGPARAM( "?languag
+ OUString XclTools::GetSbMacroUrl( const String& rMacroName, SfxObjectShell* pDocShell )
  {
-     String sTmp( rXclMacroName );
--    if( rXclMacroName.Len() > 0 )
-+    Reference< XVBAMacroHelper > xMacroHelper;
+     OSL_ENSURE( rMacroName.Len() > 0, "XclTools::GetSbMacroUrl - macro name is empty" );
+-    ::ooo::vba::VBAMacroResolvedInfo aMacroInfo = ::ooo::vba::resolveVBAMacro( pDocShell, rMacroName, false );
+-    if( aMacroInfo.IsResolved() )
+-        return ::ooo::vba::makeMacroURL( aMacroInfo.ResolvedMacro() );
 +    try
 +    {
-+        xMacroHelper =  theVBAMacroHelper::get( comphelper::getProcessComponentContext() );
++        Reference< XVBAMacroHelper > xMacroHelper =  theVBAMacroHelper::get( comphelper::getProcessComponentContext() );
++        Reference< XVBAMacroResolvedInfo > xResolvedMacro = xMacroHelper->resolveVBAMacro( pDocShell->GetModel(), rMacroName, sal_False );
++        if ( xResolvedMacro->getResolved() )
++            return xMacroHelper->makeMacroURL( xResolvedMacro->getResolvedMacro() );
 +    }
 +    catch( com::sun::star::uno::Exception& )
 +    {
 +    }
-+    if( xMacroHelper.is() && ( rXclMacroName.Len() > 0 ) )
-     {
--        ooo::vba::VBAMacroResolvedInfo aMacro = ooo::vba::resolveVBAMacro( pDocShell, rXclMacroName, false );
--        if ( aMacro.IsResolved() )
--            return ooo::vba::makeMacroURL( aMacro.ResolvedMacro() );
-+       Reference< XVBAMacroResolvedInfo > xResolvedMacro = xMacroHelper->resolveVBAMacro( pDocShell->GetModel(), rXclMacroName, sal_False );
-+        if ( xResolvedMacro->getResolved() )
-+            return xMacroHelper->makeMacroURL( xResolvedMacro->getResolvedMacro() );
- 
-     }
      return OUString();
+ }
+ 
 diff --git sc/source/ui/vba/vbaeventshelper.cxx sc/source/ui/vba/vbaeventshelper.cxx
 index db7340e..346c05d 100644
 --- sc/source/ui/vba/vbaeventshelper.cxx
@@ -776,6 +795,94 @@ index db7340e..346c05d 100644
  	}
      
  	return result;
+diff --git sc/source/ui/vba/vbasheetobject.cxx sc/source/ui/vba/vbasheetobject.cxx
+index 215a62c..daad041 100755
+--- sc/source/ui/vba/vbasheetobject.cxx
++++ sc/source/ui/vba/vbasheetobject.cxx
+@@ -32,11 +32,12 @@
+ #include <com/sun/star/script/ScriptEventDescriptor.hpp>
+ #include <com/sun/star/script/XEventAttacherManager.hpp>
+ #include <com/sun/star/style/VerticalAlignment.hpp>
++#include <com/sun/star/script/theVBAMacroHelper.hpp>
++
+ #include <ooo/vba/excel/Constants.hpp>
+ #include <ooo/vba/excel/XlOrientation.hpp>
+ #include <ooo/vba/excel/XlPlacement.hpp>
+ #include <rtl/ustrbuf.hxx>
+-#include <filter/msfilter/msvbahelper.hxx>
+ #include <oox/helper/helper.hxx>
+ #include "vbafont.hxx"
+ 
+@@ -308,6 +309,13 @@ ScVbaControlObjectBase::ScVbaControlObjectBase(
+         break;
+         // no default, to let the compiler complain about missing case
+     }
++    try
++    {
++        m_xMacroHelper =  script::theVBAMacroHelper::get( mxContext );
++    }
++    catch( uno::Exception& )
++    {
++    }
+ }
+ 
+ // XSheetObject attributes
+@@ -333,8 +341,8 @@ OUString SAL_CALL ScVbaControlObjectBase::getOnAction() throw (uno::RuntimeExcep
+         const script::ScriptEventDescriptor* pEventEnd = pEvent + aEvents.getLength();
+         const OUString aScriptType = CREATE_OUSTRING( "Script" );
+         for( ; pEvent < pEventEnd; ++pEvent )
+-            if( (pEvent->ListenerType == maListenerType) && (pEvent->EventMethod == maEventMethod) && (pEvent->ScriptType == aScriptType) )
+-                return extractMacroName( pEvent->ScriptCode );
++            if( (pEvent->ListenerType == maListenerType) && (pEvent->EventMethod == maEventMethod) && (pEvent->ScriptType == aScriptType) && m_xMacroHelper.is() )
++                return m_xMacroHelper->extractMacroNameFromURL( pEvent->ScriptCode );
+     }
+     return OUString();
+ }
+@@ -348,16 +356,17 @@ void SAL_CALL ScVbaControlObjectBase::setOnAction( const OUString& rMacroName )
+     try { xEventMgr->revokeScriptEvent( nIndex, maListenerType, maEventMethod, OUString() ); } catch( uno::Exception& ) {}
+ 
+     // if a macro name has been passed, try to attach it to the event
+-    if( rMacroName.getLength() > 0 )
++    if( rMacroName.getLength() > 0 && m_xMacroHelper.is() )
+     {
+-        VBAMacroResolvedInfo aResolvedMacro = resolveVBAMacro( getSfxObjShell( mxModel ), rMacroName );
+-        if( !aResolvedMacro.IsResolved() )
++        uno::Reference< script::XVBAMacroResolvedInfo > xResolvedMacro = m_xMacroHelper->resolveVBAMacro( mxModel, rMacroName, sal_False );
++;
++        if( !xResolvedMacro->getResolved() )
+             throw uno::RuntimeException();
+         script::ScriptEventDescriptor aDescriptor;
+         aDescriptor.ListenerType = maListenerType;
+         aDescriptor.EventMethod = maEventMethod;
+         aDescriptor.ScriptType = CREATE_OUSTRING( "Script" );
+-        aDescriptor.ScriptCode = makeMacroURL( aResolvedMacro.ResolvedMacro() );
++        aDescriptor.ScriptCode = m_xMacroHelper->makeMacroURL( xResolvedMacro->getResolvedMacro() );
+         xEventMgr->registerScriptEvent( nIndex, aDescriptor );
+     }
+ }
+diff --git sc/source/ui/vba/vbasheetobject.hxx sc/source/ui/vba/vbasheetobject.hxx
+index a7af036..e5f3c21 100755
+--- sc/source/ui/vba/vbasheetobject.hxx
++++ sc/source/ui/vba/vbasheetobject.hxx
+@@ -33,6 +33,7 @@
+ #include <ooo/vba/excel/XControlObject.hpp>
+ #include <ooo/vba/excel/XSheetObject.hpp>
+ #include <vbahelper/vbahelperinterface.hxx>
++#include <com/sun/star/script/XVBAMacroHelper.hpp>
+ #include "vbapalette.hxx"
+ 
+ namespace com { namespace sun { namespace star {
+@@ -173,8 +174,10 @@ protected:
+ protected:
+     css::uno::Reference< css::container::XIndexContainer > mxFormIC;
+     css::uno::Reference< css::beans::XPropertySet > mxControlProps;
++    css::uno::Reference< css::script::XVBAMacroHelper > m_xMacroHelper;
+     ::rtl::OUString maListenerType;
+     ::rtl::OUString maEventMethod;
++    
+ };
+ 
+ // ============================================================================
 diff --git scripting/source/vbaevents/eventhelper.cxx scripting/source/vbaevents/eventhelper.cxx
 index 8411b09..caf2324 100644
 --- scripting/source/vbaevents/eventhelper.cxx
@@ -871,10 +978,10 @@ index 6815f28..8ea6b81 100644
          $(SLO)$/UnoNameItemTable.obj \
 diff --git svx/source/unodraw/msvbahelper.cxx svx/source/unodraw/msvbahelper.cxx
 new file mode 100644
-index 0000000..f6d0fa3
+index 0000000..2534ae4
 --- /dev/null
 +++ svx/source/unodraw/msvbahelper.cxx
-@@ -0,0 +1,509 @@
+@@ -0,0 +1,533 @@
 +/*************************************************************************
 + *
 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -959,6 +1066,17 @@ index 0000000..f6d0fa3
 +    return sUrlPart0.concat( sMacroName ).concat( sUrlPart1 ) ;
 +}
 +
++::rtl::OUString extractMacroFromURL( const ::rtl::OUString& rMacroUrl )
++{
++    if( (rMacroUrl.getLength() > sUrlPart0.getLength() + sUrlPart1.getLength()) &&
++        rMacroUrl.match( sUrlPart0 ) &&
++        rMacroUrl.match( sUrlPart1, rMacroUrl.getLength() - sUrlPart1.getLength() ) )
++    {
++        return rMacroUrl.copy( sUrlPart0.getLength(), rMacroUrl.getLength() - sUrlPart0.getLength() - sUrlPart1.getLength() );
++    }
++    return ::rtl::OUString();
++}
++
 +SfxObjectShell* findShellForUrl( const rtl::OUString& sMacroURLOrPath )
 +{
 +    SfxObjectShell* pFoundShell=NULL;
@@ -1111,9 +1229,15 @@ index 0000000..f6d0fa3
 +    if ( !pShell )
 +        return aRes;
 +    aRes.SetMacroDocContext( pShell );
++    
++    // the name may be enclosed in apostrophs
++    ::rtl::OUString sMacroUrl = MacroName;
++    sal_Int32 nMacroLen = MacroName.getLength();
++    if( (nMacroLen >= 2) && (MacroName[0] == '\'') && (MacroName[nMacroLen-1] == '\'') )
++        sMacroUrl = MacroName.copy( 1, nMacroLen - 2 );
++    
 +    // parse the macro name
-+    sal_Int32 nDocSepIndex = MacroName.indexOfAsciiL( "!", 1 );
-+    String sMacroUrl = MacroName;
++    sal_Int32 nDocSepIndex = sMacroUrl.indexOf( '!' );
 +
 +    String sContainer;
 +    String sModule;
@@ -1126,8 +1250,8 @@ index 0000000..f6d0fa3
 +        // recursively
 +
 +        // assume for now that the document name is *this* document
-+        String sDocUrlOrPath = MacroName.copy( 0, nDocSepIndex );
-+        sMacroUrl = MacroName.copy( nDocSepIndex + 1 );
++        String sDocUrlOrPath = sMacroUrl.copy( 0, nDocSepIndex );
++        sMacroUrl = sMacroUrl.copy( nDocSepIndex + 1 );
 +        OSL_TRACE("doc search, current shell is 0x%x", pShell );
 +        SfxObjectShell* pFoundShell = NULL;
 +        if( bSearchGlobalTemplates )
@@ -1150,7 +1274,7 @@ index 0000000..f6d0fa3
 +        // document is created from ) 
 +    
 +        // macro format = Container.Module.Procedure
-+        parseMacro( MacroName, sContainer, sModule, sProcedure ); 
++        parseMacro( sMacroUrl, sContainer, sModule, sProcedure );
 +        uno::Reference< lang::XMultiServiceFactory> xSF( pShell->GetModel(), uno::UNO_QUERY);
 +        uno::Reference< container::XNameContainer > xPrjNameCache;
 +        if ( xSF.is() )
@@ -1339,6 +1463,7 @@ index 0000000..f6d0fa3
 +    VBAMacroHelper() {}
 +    // Methods
 +    virtual ::rtl::OUString SAL_CALL makeMacroURL( const ::rtl::OUString& sMacroName ) throw (uno::RuntimeException);
++     virtual ::rtl::OUString SAL_CALL extractMacroNameFromURL( const ::rtl::OUString& sURL ) throw (uno::RuntimeException);
 +    virtual uno::Reference< script::XVBAMacroResolvedInfo > SAL_CALL resolveVBAMacro( const uno::Reference< frame::XModel >& model, const ::rtl::OUString& moduleName, ::sal_Bool bSearchGlobalTemplates ) throw (uno::RuntimeException);
 +    virtual ::sal_Bool SAL_CALL executeMacro( const uno::Reference< frame::XModel >& model, const ::rtl::OUString& smacroName, uno::Sequence< uno::Any >& aArgs, uno::Any& aRet, const uno::Any& aCaller ) throw (uno::RuntimeException);
 +};
@@ -1350,6 +1475,12 @@ index 0000000..f6d0fa3
 +    return sMacro;
 +}
 +
++::rtl::OUString SAL_CALL 
++VBAMacroHelper::extractMacroNameFromURL( const ::rtl::OUString& sURL ) throw (uno::RuntimeException)
++{
++    rtl::OUString sMacro = extractMacroFromURL( sURL );
++    return sMacro;
++}
 +uno::Reference< script::XVBAMacroResolvedInfo > SAL_CALL 
 +VBAMacroHelper::resolveVBAMacro( const uno::Reference< frame::XModel >& model, const ::rtl::OUString& moduleName, ::sal_Bool bSearchGlobalTemplates ) throw (uno::RuntimeException)
 +{
@@ -1483,7 +1614,7 @@ index 060ab89..6503abc 100644
          {
              xFactory = createSingleFactory( reinterpret_cast< lang::XMultiServiceFactory * >( pServiceManager ),
 diff --git sw/source/filter/ww8/ww8par.cxx sw/source/filter/ww8/ww8par.cxx
-index bda7b26..622f7e0 100644
+index d1ed65d..041f019 100644
 --- sw/source/filter/ww8/ww8par.cxx
 +++ sw/source/filter/ww8/ww8par.cxx
 @@ -155,7 +155,6 @@ using namespace nsHdFtFlags;
@@ -1552,6 +1683,27 @@ index 2c6f212..3008c73 100644
  	}
      
  	return result;
+diff --git vbahelper/inc/vbahelper/vbaapplicationbase.hxx vbahelper/inc/vbahelper/vbaapplicationbase.hxx
+index a320075..99d5c47 100644
+--- vbahelper/inc/vbahelper/vbaapplicationbase.hxx
++++ vbahelper/inc/vbahelper/vbaapplicationbase.hxx
+@@ -30,6 +30,8 @@
+ #include <ooo/vba/XHelperInterface.hpp>
+ #include <ooo/vba/XApplicationBase.hpp>
+ #include <vbahelper/vbahelperinterface.hxx>
++#include <com/sun/star/script/XVBAMacroHelper.hpp>
++
+ #include <sfx2/objsh.hxx>
+ 
+ typedef InheritedHelperInterfaceImpl1< ov::XApplicationBase > ApplicationBase_BASE;
+@@ -41,6 +43,7 @@ class VBAHELPER_DLLPUBLIC VbaApplicationBase : public ApplicationBase_BASE
+     VbaApplicationBase_Impl* m_pImpl;
+ 
+ protected:
++    css::uno::Reference< css::script::XVBAMacroHelper > m_xMacroHelper;
+     VbaApplicationBase( const css::uno::Reference< css::uno::XComponentContext >& xContext );
+     virtual ~VbaApplicationBase();
+ 
 diff --git vbahelper/inc/vbahelper/vbaeventshelperbase.hxx vbahelper/inc/vbahelper/vbaeventshelperbase.hxx
 index 461cfbc..5f0568f 100644
 --- vbahelper/inc/vbahelper/vbaeventshelperbase.hxx
@@ -1585,44 +1737,60 @@ index 5c05894..f7346f4 100644
  #include <basic/sbmod.hxx>
  
 diff --git vbahelper/source/vbahelper/vbaapplicationbase.cxx vbahelper/source/vbahelper/vbaapplicationbase.cxx
-index d84f400..94ef0da 100644
+index 8cfc6d1..3cee693 100644
 --- vbahelper/source/vbahelper/vbaapplicationbase.cxx
 +++ vbahelper/source/vbahelper/vbaapplicationbase.cxx
-@@ -32,9 +32,10 @@
- #include <com/sun/star/document/XDocumentInfoSupplier.hpp>
- #include <com/sun/star/document/XDocumentProperties.hpp>
- #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
+@@ -39,10 +39,11 @@
+ #include <com/sun/star/document/XEmbeddedScripts.hpp> //Michael E. Bohn
+ #include <ooo/vba/XVBAAppService.hpp> //Michael E. Bohn
+ #include <com/sun/star/awt/XWindow2.hpp>
 +#include <com/sun/star/script/theVBAMacroHelper.hpp>
 +#include <comphelper/processfactory.hxx>
  
+ 
  #include "vbacommandbars.hxx"
 -#include <filter/msfilter/msvbahelper.hxx>
+ #include <tools/datetime.hxx>
  
  // start basic includes
- #include <basic/sbx.hxx>
-@@ -136,8 +137,9 @@ VbaApplicationBase::getVersion() throw (uno::RuntimeException)
- uno::Any SAL_CALL VbaApplicationBase::Run( const ::rtl::OUString& MacroName, const uno::Any& varg1, const uno::Any& varg2, const uno::Any& varg3, const uno::Any& varg4, const uno::Any& varg5, const uno::Any& varg6, const uno::Any& varg7, const uno::Any& varg8, const uno::Any& varg9, const uno::Any& varg10, const uno::Any& varg11, const uno::Any& varg12, const uno::Any& varg13, const uno::Any& varg14, const uno::Any& varg15, const uno::Any& varg16, const uno::Any& varg17, const uno::Any& varg18, const uno::Any& varg19, const uno::Any& varg20, const uno::Any& varg21, const uno::Any& varg22, const uno::Any& varg23, const uno::Any& varg24, const uno::Any& varg25, const uno::Any& varg26, const uno::Any& varg27, const uno::Any& varg28, const uno::Any& varg29, const uno::Any& varg30 ) throw (uno::RuntimeException)
+@@ -181,6 +182,13 @@ VbaApplicationBase::VbaApplicationBase( const uno::Reference< uno::XComponentCon
+                     : ApplicationBase_BASE( uno::Reference< XHelperInterface >(), xContext )
+                     , m_pImpl( new VbaApplicationBase_Impl )
  {
++    try
++    {
++        m_xMacroHelper =  script::theVBAMacroHelper::get( comphelper::getProcessComponentContext() );
++    }
++    catch( uno::Exception& e )
++    {
++    }
+ }
+ 
+ VbaApplicationBase::~VbaApplicationBase()
+@@ -335,8 +343,10 @@ uno::Any SAL_CALL VbaApplicationBase::Run( const ::rtl::OUString& MacroName, con
+ 
+     
      // search the global tempalte
--    VBAMacroResolvedInfo aMacroInfo = resolveVBAMacro( getSfxObjShell( getCurrentDocument() ), MacroName, sal_True );
+-    VBAMacroResolvedInfo aMacroInfo = resolveVBAMacro( getSfxObjShell( aMacroDocumentModel ), sMacro_only_Name, sal_True );
 -    if( aMacroInfo.IsResolved() )
-+    uno::Reference< script::XVBAMacroHelper > xMacroHelper =  script::theVBAMacroHelper::get( comphelper::getProcessComponentContext() );
-+    uno::Reference< script::XVBAMacroResolvedInfo > xMacroInfo = xMacroHelper->resolveVBAMacro( getCurrentDocument(), MacroName, sal_True );
++    uno::Reference< script::XVBAMacroResolvedInfo > xMacroInfo;
++    if ( m_xMacroHelper.is() )
++        xMacroInfo = m_xMacroHelper->resolveVBAMacro( getCurrentDocument(), MacroName, sal_True );
 +    if( xMacroInfo->getResolved() )
      {
          // handle the arguments
          const uno::Any* aArgsPtrArray[] = { &varg1, &varg2, &varg3, &varg4, &varg5, &varg6, &varg7, &varg8, &varg9, &varg10, &varg11, &varg12, &varg13, &varg14, &varg15, &varg16, &varg17, &varg18, &varg19, &varg20, &varg21, &varg22, &varg23, &varg24, &varg25, &varg26, &varg27, &varg28, &varg29, &varg30 };
-@@ -163,7 +165,7 @@ uno::Any SAL_CALL VbaApplicationBase::Run( const ::rtl::OUString& MacroName, con
+@@ -362,7 +372,7 @@ uno::Any SAL_CALL VbaApplicationBase::Run( const ::rtl::OUString& MacroName, con
  
          uno::Any aRet;
          uno::Any aDummyCaller;
 -        executeMacro( aMacroInfo.MacroDocContext(), aMacroInfo.ResolvedMacro(), aArgs, aRet, aDummyCaller );
-+        xMacroHelper->executeMacro( xMacroInfo->getDocumentContext(), xMacroInfo->getResolvedMacro(), aArgs, aRet, aDummyCaller );
++        m_xMacroHelper->executeMacro( xMacroInfo->getDocumentContext(), xMacroInfo->getResolvedMacro(), aArgs, aRet, aDummyCaller );
  
          return aRet;
      }
 diff --git vbahelper/source/vbahelper/vbacommandbarcontrol.cxx vbahelper/source/vbahelper/vbacommandbarcontrol.cxx
-index 8cb9f49..39ae22d 100644
+index 1b2d013..3378a4d 100644
 --- vbahelper/source/vbahelper/vbacommandbarcontrol.cxx
 +++ vbahelper/source/vbahelper/vbacommandbarcontrol.cxx
 @@ -27,7 +27,8 @@


More information about the ooo-build-commit mailing list