summaryrefslogtreecommitdiff
path: root/patches/vba/vba-automation-set-fix.diff
diff options
context:
space:
mode:
Diffstat (limited to 'patches/vba/vba-automation-set-fix.diff')
-rw-r--r--patches/vba/vba-automation-set-fix.diff85
1 files changed, 0 insertions, 85 deletions
diff --git a/patches/vba/vba-automation-set-fix.diff b/patches/vba/vba-automation-set-fix.diff
deleted file mode 100644
index 6e35a5f69..000000000
--- a/patches/vba/vba-automation-set-fix.diff
+++ /dev/null
@@ -1,85 +0,0 @@
---- basic/source/classes/sbunoobj.cxx 2009-06-23 05:13:01.671875000 +0100
-+++ basic/source/classes/sbunoobj.cxx 2009-07-16 22:12:04.187500000 +0100
-@@ -1616,6 +1616,23 @@ bool checkUnoObjectType( SbUnoObject* pU
- break;
- }
- ::rtl::OUString sClassName = xClass->getName();
-+ if ( sClassName.equals( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.bridge.oleautomation.XAutomationObject" ) ) ) )
-+ {
-+ // there is a hack in the extensions/source/ole/oleobj.cxx to return the typename of the automation object, lets check if it
-+ // matches
-+ Reference< XInvocation > xInv( aToInspectObj, UNO_QUERY );
-+ if ( xInv.is() )
-+ {
-+ rtl::OUString sTypeName;
-+ xInv->getValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("$GetTypeName") ) ) >>= sTypeName;
-+ if ( sTypeName.getLength() == 0 || sTypeName.equals( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("IDispatch") ) ) )
-+ // can't check type, leave it pass
-+ result = true;
-+ else
-+ result = sTypeName.equals( aClass );
-+ }
-+ break; // finished checking automation object
-+ }
- OSL_TRACE("Checking if object implements %s",
- OUStringToOString( defaultNameSpace + aClass,
- RTL_TEXTENCODING_UTF8 ).getStr() );
---- extensions/source/ole/oleobjw.cxx 2008-11-11 10:00:41.000000000 +0000
-+++ extensions/source/ole/oleobjw.cxx 2009-07-16 21:37:49.890625000 +0100
-@@ -425,6 +425,46 @@ Any SAL_CALL IUnknownWrapper_Impl::getVa
- {
- o2u_attachCurrentThread();
- ITypeInfo * pInfo = getTypeInfo();
-+ // I was going to implement an XServiceInfo interface to allow the type
-+ // of the automation object to be exposed.. but it seems
-+ // from looking at comments in the code that it is possible for a
-+ // this object to actually wrap an UNO object ( I guess if automation is
-+ // used from MSO to create Openoffice objects ) Therefore, those objects
-+ // will more than likely already have an XServiceInfo interface.
-+ // Instead here I chose a name that should be illegal both in COM and
-+ // UNO ( from an IDL point of view ) therefore I think this is a safe
-+ // hack
-+ if ( aPropertyName.equals( rtl::OUString::createFromAscii("$GetTypeName") ))
-+ {
-+ if ( pInfo && m_sTypeName.getLength() == 0 )
-+ {
-+ m_sTypeName = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("IDispatch") );
-+ CComBSTR sName;
-+
-+ if ( SUCCEEDED( pInfo->GetDocumentation( -1, &sName, NULL, NULL, NULL ) ) )
-+ {
-+ rtl::OUString sTmp( reinterpret_cast<const sal_Unicode*>(LPCOLESTR(sName)));
-+ if ( sTmp.indexOf('_') == 0 )
-+ sTmp = sTmp.copy(1);
-+ // do we own the memory for pTypeLib, msdn doco is vague
-+ // I'll assume we do
-+ CComPtr< ITypeLib > pTypeLib;
-+ unsigned int index;
-+ if ( SUCCEEDED( pInfo->GetContainingTypeLib( &pTypeLib.p, &index )) )
-+ {
-+ if ( SUCCEEDED( pTypeLib->GetDocumentation( -1, &sName, NULL, NULL, NULL ) ) )
-+ {
-+ rtl::OUString sLibName( reinterpret_cast<const sal_Unicode*>(LPCOLESTR(sName)));
-+ m_sTypeName = sLibName.concat( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(".") ) ).concat( sTmp );
-+
-+ }
-+ }
-+ }
-+
-+ }
-+ ret <<= m_sTypeName;
-+ return ret;
-+ }
- FuncDesc aDescGet(pInfo);
- FuncDesc aDescPut(pInfo);
- VarDesc aVarDesc(pInfo);
---- extensions/source/ole/oleobjw.hxx 2008-04-11 11:14:30.000000000 +0100
-+++ extensions/source/ole/oleobjw.hxx 2009-07-16 19:46:02.750000000 +0100
-@@ -233,6 +235,7 @@ protected:
- Sequence<Type> m_seqTypes;
- CComPtr<IUnknown> m_spUnknown;
- CComPtr<IDispatch> m_spDispatch;
-+ rtl::OUString m_sTypeName; // is "" ( not initialised ), "IDispatch" ( we have no idea ) or "SomeLibrary.SomeTypeName" if we managed to get a type
- /** This value is set dureing XInitialization::initialize. It indicates that the COM interface
- was transported as VT_DISPATCH in a VARIANT rather then a VT_UNKNOWN
- */