• Tor Lillqvist's avatar
    Work in progress related to invoking events in Automation clients · f7e0297b
    Tor Lillqvist yazdı
    XConnectable interfaces need a second IID, for the interface "itself",
    not the coclass. (I am sure there is some catchy short term for that,
    I just can't find it right now.)
    
    Allow several simultaneous sinks for a SwVbaApplication. Not sure in
    what case such would be needed, but you never know about 3rd-party
    client code, and it's trivial to handle anyway, so why not.
    
    Lots of FIXMEs still. There is likely also a lot of leaks. But at
    least an event handler in a simple VBScript script does get invoked.
    
    Note that the changed and added code in extensions/source/ole is
    totally unaware of what outgoing ("event") interfaces Writer or Calc
    implements, it is all handled generically through the UNO interfaces I
    added recently.
    
    One particular thing that needs doing is to actually make Writer (and
    Calc) raise this kind of events when necessary. The current code to
    invoke events handlers in StarBasic (including StarBasic code running
    in "VBA" compaibility) is very much tied to having StarBasic running
    (not surprisingly), which of course is not at all the case when it is
    an Automation client that is manipulating a Writer or Calc instance
    and wants events.
    
    There is demonstration-only code in SwVbaApplication::Documents() to
    raise the "Quit" event. (I would have put that in the SwVbaApplication
    destructor but that doesn't seem to get called.) That should of course
    go away once we invoke other relevant events in appropriate places.
    And the "Quit" event needs to be invoked when the application is
    quitting.
    
    The whole callback mechanism with IConnectionPoint etc is still partly
    a mystery to me. It is entirely possible that even if this now works
    for a simple VBScript client, it won't work for (for instance) a VB6
    client that might exercise the APIs of the COM interfaces we provide
    in a different way.
    
    Add XSinkCaller, for something that perhaps calls one or several
    XSinks.
    
    Change-Id: Ica03344010e374542f4aceff5ec032c78579f937
    Reviewed-on: https://gerrit.libreoffice.org/55093Tested-by: 's avatarJenkins <ci@libreoffice.org>
    Reviewed-by: 's avatarTor Lillqvist <tml@collabora.com>
    f7e0297b
TypeAndIID.idl 946 Bytes