summaryrefslogtreecommitdiff
path: root/extensions
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2018-04-10 15:53:28 +0300
committerTor Lillqvist <tml@collabora.com>2018-05-31 21:49:35 +0300
commit1d6e3b5f37b76a66d4b6ca23ca7adb9fc900c8b5 (patch)
treedb948263bf7e4008ebd706f563270fb6ed339970 /extensions
parent4efad183f4f78beebf630a3c99e2d7104ff3067f (diff)
Add informative comment
Change-Id: I428c2bbaa273d893fa5a3cc42bb7f3d060f375ad (cherry picked from commit 552b62f24a8804b6875cfcf1191093af80af2923)
Diffstat (limited to 'extensions')
-rw-r--r--extensions/source/ole/unoobjw.cxx10
1 files changed, 10 insertions, 0 deletions
diff --git a/extensions/source/ole/unoobjw.cxx b/extensions/source/ole/unoobjw.cxx
index 6b847f0c7a23..a71d9376d725 100644
--- a/extensions/source/ole/unoobjw.cxx
+++ b/extensions/source/ole/unoobjw.cxx
@@ -2180,6 +2180,16 @@ Sink::Call( const OUString& Method, Sequence< Any >& Arguments )
VariantInit(&aVarResult);
UINT uArgErr;
+ // In the case of a VBScript client, which uses "late binding", calling Invoke on the
+ // sink it provides will cause a callback to our CXTypeInfo::GetNames for the given
+ // member id, and in that we will tell it the name of the corresponding method, and the
+ // client will know what event handler to invoke based on that name.
+ //
+ // As the outgoing interfaces used (ooo::vba::word::XApplicationOutgoing and others) are
+ // totally not stable and not published in any way, there can be no client that would
+ // have done "compile-time binding" and where the sink would actually be an object with
+ // a vtbl corresponding to the outgoing interface. Late binding clients that work like
+ // VBScript is all we support.
nResult = pDispatch->Invoke(nMemId, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &aDispParams, &aVarResult, NULL, &uArgErr);
SAL_WARN_IF(!SUCCEEDED(nResult), "extensions.olebridge", "Call to " << Method << " failed: " << WindowsErrorStringFromHRESULT(nResult));