mshtml: Added IDispatchEx support to HTMLDOMChildrenCollection.

This commit is contained in:
Jacek Caban 2008-04-30 18:18:09 +02:00 committed by Alexandre Julliard
parent 6da1c73047
commit 30d2047537
3 changed files with 20 additions and 0 deletions

View File

@ -51,6 +51,7 @@ static struct list dispex_data_list = LIST_INIT(dispex_data_list);
static REFIID tid_ids[] = { static REFIID tid_ids[] = {
&IID_NULL, &IID_NULL,
&DIID_DispDOMChildrenCollection,
&DIID_DispHTMLDocument, &DIID_DispHTMLDocument,
&DIID_DispHTMLDOMTextNode, &DIID_DispHTMLDOMTextNode,
&DIID_DispHTMLElementCollection, &DIID_DispHTMLElementCollection,
@ -62,6 +63,7 @@ static REFIID tid_ids[] = {
&IID_IHTMLDocument3, &IID_IHTMLDocument3,
&IID_IHTMLDocument4, &IID_IHTMLDocument4,
&IID_IHTMLDocument5, &IID_IHTMLDocument5,
&IID_IHTMLDOMChildrenCollection,
&IID_IHTMLDOMNode, &IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2, &IID_IHTMLDOMNode2,
&IID_IHTMLDOMTextNode, &IID_IHTMLDOMTextNode,

View File

@ -32,6 +32,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(mshtml); WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
typedef struct { typedef struct {
DispatchEx dispex;
const IHTMLDOMChildrenCollectionVtbl *lpIHTMLDOMChildrenCollectionVtbl; const IHTMLDOMChildrenCollectionVtbl *lpIHTMLDOMChildrenCollectionVtbl;
LONG ref; LONG ref;
@ -58,6 +59,9 @@ static HRESULT WINAPI HTMLDOMChildrenCollection_QueryInterface(IHTMLDOMChildrenC
}else if(IsEqualGUID(&IID_IDispatch, riid)) { }else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = HTMLCHILDCOL(This); *ppv = HTMLCHILDCOL(This);
}else if(IsEqualGUID(&IID_IDispatchEx, riid)) {
TRACE("(%p)->(IID_IDispatchEx %p)\n", This, ppv);
*ppv = DISPATCHEX(&This->dispex);
}else if(IsEqualGUID(&IID_IHTMLDOMChildrenCollection, riid)) { }else if(IsEqualGUID(&IID_IHTMLDOMChildrenCollection, riid)) {
TRACE("(%p)->(IID_IHTMLDOMChildrenCollection %p)\n", This, ppv); TRACE("(%p)->(IID_IHTMLDOMChildrenCollection %p)\n", This, ppv);
*ppv = HTMLCHILDCOL(This); *ppv = HTMLCHILDCOL(This);
@ -189,6 +193,16 @@ static const IHTMLDOMChildrenCollectionVtbl HTMLDOMChildrenCollectionVtbl = {
HTMLDOMChildrenCollection_item HTMLDOMChildrenCollection_item
}; };
static dispex_static_data_t HTMLDOMChildrenCollection_dispex = {
NULL,
DispDOMChildrenCollection_tid,
NULL,
{
IHTMLDOMChildrenCollection_tid,
0
}
};
static IHTMLDOMChildrenCollection *create_child_collection(HTMLDocument *doc, nsIDOMNodeList *nslist) static IHTMLDOMChildrenCollection *create_child_collection(HTMLDocument *doc, nsIDOMNodeList *nslist)
{ {
HTMLDOMChildrenCollection *ret; HTMLDOMChildrenCollection *ret;
@ -201,6 +215,8 @@ static IHTMLDOMChildrenCollection *create_child_collection(HTMLDocument *doc, ns
ret->nslist = nslist; ret->nslist = nslist;
ret->doc = doc; ret->doc = doc;
init_dispex(&ret->dispex, (IUnknown*)HTMLCHILDCOL(ret), &HTMLDOMChildrenCollection_dispex);
return HTMLCHILDCOL(ret); return HTMLCHILDCOL(ret);
} }

View File

@ -61,6 +61,7 @@ typedef struct event_target_t event_target_t;
/* NOTE: make sure to keep in sync with dispex.c */ /* NOTE: make sure to keep in sync with dispex.c */
typedef enum { typedef enum {
NULL_tid, NULL_tid,
DispDOMChildrenCollection_tid,
DispHTMLDocument_tid, DispHTMLDocument_tid,
DispHTMLDOMTextNode_tid, DispHTMLDOMTextNode_tid,
DispHTMLElementCollection_tid, DispHTMLElementCollection_tid,
@ -72,6 +73,7 @@ typedef enum {
IHTMLDocument3_tid, IHTMLDocument3_tid,
IHTMLDocument4_tid, IHTMLDocument4_tid,
IHTMLDocument5_tid, IHTMLDocument5_tid,
IHTMLDOMChildrenCollection_tid,
IHTMLDOMNode_tid, IHTMLDOMNode_tid,
IHTMLDOMNode2_tid, IHTMLDOMNode2_tid,
IHTMLDOMTextNode_tid, IHTMLDOMTextNode_tid,