Alistair Leslie-Hughes : msxml3: Add IDispatchEx support to IXMLDOMElement.
Alexandre Julliard
julliard at winehq.org
Thu Sep 10 09:07:30 CDT 2009
Module: wine
Branch: master
Commit: 30087f9660f0ff76318b7c0a6c55ba730e63acea
URL: http://source.winehq.org/git/wine.git/?a=commit;h=30087f9660f0ff76318b7c0a6c55ba730e63acea
Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Mon Aug 31 15:18:00 2009 +1000
msxml3: Add IDispatchEx support to IXMLDOMElement.
---
dlls/msxml3/element.c | 18 +++++++++++++++++-
dlls/msxml3/tests/domdoc.c | 2 ++
2 files changed, 19 insertions(+), 1 deletions(-)
diff --git a/dlls/msxml3/element.c b/dlls/msxml3/element.c
index 6590e5b..531d43e 100644
--- a/dlls/msxml3/element.c
+++ b/dlls/msxml3/element.c
@@ -74,6 +74,10 @@ static HRESULT WINAPI domelem_QueryInterface(
{
*ppvObject = IXMLDOMNode_from_impl(This->node);
}
+ else if(dispex_query_interface(&This->node->dispex, riid, ppvObject))
+ {
+ return *ppvObject ? S_OK : E_NOINTERFACE;
+ }
else
{
FIXME("interface %s not implemented\n", debugstr_guid(riid));
@@ -751,6 +755,18 @@ static const struct IXMLDOMElementVtbl domelem_vtbl =
domelem_normalize,
};
+static const tid_t domelem_iface_tids[] = {
+ IXMLDOMElement_tid,
+ 0
+};
+
+static dispex_static_data_t domelem_dispex = {
+ NULL,
+ IXMLDOMElement_tid,
+ NULL,
+ domelem_iface_tids
+};
+
IUnknown* create_element( xmlNodePtr element )
{
domelem *This;
@@ -762,7 +778,7 @@ IUnknown* create_element( xmlNodePtr element )
This->lpVtbl = &domelem_vtbl;
This->ref = 1;
- This->node = create_basic_node( element, (IUnknown*)&This->lpVtbl, NULL );
+ This->node = create_basic_node( element, (IUnknown*)&This->lpVtbl, &domelem_dispex );
if(!This->node)
{
HeapFree(GetProcessHeap(), 0, This);
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 91e34f5..469a4f9 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -599,6 +599,8 @@ static void test_domdoc( void )
IObjectIdentity *ident;
BSTR tag = NULL;
+ test_disp((IUnknown*)element);
+
r = IXMLDOMElement_QueryInterface( element, &IID_IObjectIdentity, (LPVOID*)&ident );
ok( r == E_NOINTERFACE, "ret %08x\n", r);
More information about the wine-cvs
mailing list