Commit 30087f96 authored by Alistair Leslie-Hughes's avatar Alistair Leslie-Hughes Committed by Alexandre Julliard

msxml3: Add IDispatchEx support to IXMLDOMElement.

parent 1ebce128
...@@ -74,6 +74,10 @@ static HRESULT WINAPI domelem_QueryInterface( ...@@ -74,6 +74,10 @@ static HRESULT WINAPI domelem_QueryInterface(
{ {
*ppvObject = IXMLDOMNode_from_impl(This->node); *ppvObject = IXMLDOMNode_from_impl(This->node);
} }
else if(dispex_query_interface(&This->node->dispex, riid, ppvObject))
{
return *ppvObject ? S_OK : E_NOINTERFACE;
}
else else
{ {
FIXME("interface %s not implemented\n", debugstr_guid(riid)); FIXME("interface %s not implemented\n", debugstr_guid(riid));
...@@ -751,6 +755,18 @@ static const struct IXMLDOMElementVtbl domelem_vtbl = ...@@ -751,6 +755,18 @@ static const struct IXMLDOMElementVtbl domelem_vtbl =
domelem_normalize, 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 ) IUnknown* create_element( xmlNodePtr element )
{ {
domelem *This; domelem *This;
...@@ -762,7 +778,7 @@ IUnknown* create_element( xmlNodePtr element ) ...@@ -762,7 +778,7 @@ IUnknown* create_element( xmlNodePtr element )
This->lpVtbl = &domelem_vtbl; This->lpVtbl = &domelem_vtbl;
This->ref = 1; 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) if(!This->node)
{ {
HeapFree(GetProcessHeap(), 0, This); HeapFree(GetProcessHeap(), 0, This);
......
...@@ -599,6 +599,8 @@ static void test_domdoc( void ) ...@@ -599,6 +599,8 @@ static void test_domdoc( void )
IObjectIdentity *ident; IObjectIdentity *ident;
BSTR tag = NULL; BSTR tag = NULL;
test_disp((IUnknown*)element);
r = IXMLDOMElement_QueryInterface( element, &IID_IObjectIdentity, (LPVOID*)&ident ); r = IXMLDOMElement_QueryInterface( element, &IID_IObjectIdentity, (LPVOID*)&ident );
ok( r == E_NOINTERFACE, "ret %08x\n", r); ok( r == E_NOINTERFACE, "ret %08x\n", r);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment