mshtml: Moved getting form's elements by index to separated function.
This commit is contained in:
parent
5847928bc6
commit
68e9bd281e
|
@ -41,6 +41,41 @@ struct HTMLFormElement {
|
||||||
|
|
||||||
#define HTMLFORM(x) (&(x)->lpHTMLFormElementVtbl)
|
#define HTMLFORM(x) (&(x)->lpHTMLFormElementVtbl)
|
||||||
|
|
||||||
|
static HRESULT htmlform_item(HTMLFormElement *This, int i, IDispatch **ret)
|
||||||
|
{
|
||||||
|
nsIDOMHTMLCollection *elements;
|
||||||
|
nsIDOMNode *item;
|
||||||
|
HTMLDOMNode *node;
|
||||||
|
nsresult nsres;
|
||||||
|
|
||||||
|
nsres = nsIDOMHTMLFormElement_GetElements(This->nsform, &elements);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
FIXME("GetElements failed: 0x%08x\n", nsres);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsres = nsIDOMHTMLCollection_Item(elements, i, &item);
|
||||||
|
nsIDOMHTMLCollection_Release(elements);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
FIXME("Item failed: 0x%08x\n", nsres);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(item) {
|
||||||
|
node = get_node(This->element.node.doc, item, TRUE);
|
||||||
|
if(!node)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
|
IHTMLDOMNode_AddRef(HTMLDOMNODE(node));
|
||||||
|
nsIDOMNode_Release(item);
|
||||||
|
*ret = (IDispatch*)HTMLDOMNODE(node);
|
||||||
|
}else {
|
||||||
|
*ret = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
#define HTMLFORM_THIS(iface) DEFINE_THIS(HTMLFormElement, HTMLFormElement, iface)
|
#define HTMLFORM_THIS(iface) DEFINE_THIS(HTMLFormElement, HTMLFormElement, iface)
|
||||||
|
|
||||||
static HRESULT WINAPI HTMLFormElement_QueryInterface(IHTMLFormElement *iface,
|
static HRESULT WINAPI HTMLFormElement_QueryInterface(IHTMLFormElement *iface,
|
||||||
|
@ -439,34 +474,21 @@ static HRESULT HTMLFormElement_invoke(HTMLDOMNode *iface,
|
||||||
EXCEPINFO *ei, IServiceProvider *caller)
|
EXCEPINFO *ei, IServiceProvider *caller)
|
||||||
{
|
{
|
||||||
HTMLFormElement *This = HTMLFORM_NODE_THIS(iface);
|
HTMLFormElement *This = HTMLFORM_NODE_THIS(iface);
|
||||||
nsIDOMHTMLCollection *elements;
|
IDispatch *ret;
|
||||||
nsIDOMNode *item;
|
HRESULT hres;
|
||||||
HTMLDOMNode *node;
|
|
||||||
nsresult nsres;
|
|
||||||
|
|
||||||
TRACE("(%p)->(%x %x %x %p %p %p %p)\n", This, id, lcid, flags, params, res, ei, caller);
|
TRACE("(%p)->(%x %x %x %p %p %p %p)\n", This, id, lcid, flags, params, res, ei, caller);
|
||||||
|
|
||||||
nsres = nsIDOMHTMLFormElement_GetElements(This->nsform, &elements);
|
hres = htmlform_item(This, id - MSHTML_DISPID_CUSTOM_MIN, &ret);
|
||||||
if(NS_FAILED(nsres)) {
|
if(FAILED(hres))
|
||||||
FIXME("GetElements failed: 0x%08x\n", nsres);
|
return hres;
|
||||||
return E_FAIL;
|
|
||||||
|
if(ret) {
|
||||||
|
V_VT(res) = VT_DISPATCH;
|
||||||
|
V_DISPATCH(res) = ret;
|
||||||
|
}else {
|
||||||
|
V_VT(res) = VT_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsres = nsIDOMHTMLCollection_Item(elements, id - MSHTML_DISPID_CUSTOM_MIN, &item);
|
|
||||||
nsIDOMHTMLCollection_Release(elements);
|
|
||||||
if(NS_FAILED(nsres)) {
|
|
||||||
FIXME("Item failed: 0x%08x\n", nsres);
|
|
||||||
return E_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
node = get_node(This->element.node.doc, item, TRUE);
|
|
||||||
|
|
||||||
V_VT(res) = VT_DISPATCH;
|
|
||||||
V_DISPATCH(res) = (IDispatch*)node;
|
|
||||||
|
|
||||||
IHTMLDOMNode_AddRef(HTMLDOMNODE(node));
|
|
||||||
nsIDOMNode_Release(item);
|
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue