mshtml: Added IHTMLElement::get_offsetParent implementation.
This commit is contained in:
parent
e644c2cd03
commit
3bf7482d52
|
@ -923,8 +923,41 @@ static HRESULT WINAPI HTMLElement_get_offsetHeight(IHTMLElement *iface, LONG *p)
|
||||||
static HRESULT WINAPI HTMLElement_get_offsetParent(IHTMLElement *iface, IHTMLElement **p)
|
static HRESULT WINAPI HTMLElement_get_offsetParent(IHTMLElement *iface, IHTMLElement **p)
|
||||||
{
|
{
|
||||||
HTMLElement *This = impl_from_IHTMLElement(iface);
|
HTMLElement *This = impl_from_IHTMLElement(iface);
|
||||||
FIXME("(%p)->(%p)\n", This, p);
|
nsIDOMNSHTMLElement *nselem;
|
||||||
return E_NOTIMPL;
|
nsIDOMElement *nsparent;
|
||||||
|
nsresult nsres;
|
||||||
|
HRESULT hres;
|
||||||
|
|
||||||
|
TRACE("(%p)->(%p)\n", This, p);
|
||||||
|
|
||||||
|
nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
ERR("Could not get nsIDOMNSHTMLElement: %08x\n", nsres);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsres = nsIDOMNSHTMLElement_GetOffsetParent(nselem, &nsparent);
|
||||||
|
nsIDOMNSHTMLElement_Release(nselem);
|
||||||
|
if(NS_FAILED(nsres)) {
|
||||||
|
ERR("GetOffsetParent failed: %08x\n", nsres);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(nsparent) {
|
||||||
|
HTMLDOMNode *node;
|
||||||
|
|
||||||
|
hres = get_node(This->node.doc, (nsIDOMNode*)nsparent, TRUE, &node);
|
||||||
|
nsIDOMElement_Release(nsparent);
|
||||||
|
if(FAILED(hres))
|
||||||
|
return hres;
|
||||||
|
|
||||||
|
hres = IHTMLDOMNode_QueryInterface(&node->IHTMLDOMNode_iface, &IID_IHTMLElement, (void**)p);
|
||||||
|
}else {
|
||||||
|
*p = NULL;
|
||||||
|
hres = S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
return hres;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI HTMLElement_put_innerHTML(IHTMLElement *iface, BSTR v)
|
static HRESULT WINAPI HTMLElement_put_innerHTML(IHTMLElement *iface, BSTR v)
|
||||||
|
|
|
@ -931,10 +931,11 @@ static void _test_elem_attr(unsigned line, IHTMLElement *elem, const char *name,
|
||||||
VariantClear(&value);
|
VariantClear(&value);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define test_elem_offset(u) _test_elem_offset(__LINE__,u)
|
#define test_elem_offset(a,b) _test_elem_offset(__LINE__,a,b)
|
||||||
static void _test_elem_offset(unsigned line, IUnknown *unk)
|
static void _test_elem_offset(unsigned line, IUnknown *unk, const char *parent_tag)
|
||||||
{
|
{
|
||||||
IHTMLElement *elem = _get_elem_iface(line, unk);
|
IHTMLElement *elem = _get_elem_iface(line, unk);
|
||||||
|
IHTMLElement *off_parent;
|
||||||
LONG l;
|
LONG l;
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
|
||||||
|
@ -950,6 +951,12 @@ static void _test_elem_offset(unsigned line, IUnknown *unk)
|
||||||
hres = IHTMLElement_get_offsetLeft(elem, &l);
|
hres = IHTMLElement_get_offsetLeft(elem, &l);
|
||||||
ok_(__FILE__,line) (hres == S_OK, "get_offsetLeft failed: %08x\n", hres);
|
ok_(__FILE__,line) (hres == S_OK, "get_offsetLeft failed: %08x\n", hres);
|
||||||
|
|
||||||
|
hres = IHTMLElement_get_offsetParent(elem, &off_parent);
|
||||||
|
ok_(__FILE__,line) (hres == S_OK, "get_offsetParent failed: %08x\n", hres);
|
||||||
|
|
||||||
|
_test_elem_tag(line, (IUnknown*)off_parent, parent_tag);
|
||||||
|
IHTMLElement_Release(off_parent);
|
||||||
|
|
||||||
IHTMLElement_Release(elem);
|
IHTMLElement_Release(elem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6513,7 +6520,7 @@ static void test_elems(IHTMLDocument2 *doc)
|
||||||
test_elem_title((IUnknown*)select, NULL);
|
test_elem_title((IUnknown*)select, NULL);
|
||||||
test_elem_set_title((IUnknown*)select, "Title");
|
test_elem_set_title((IUnknown*)select, "Title");
|
||||||
test_elem_title((IUnknown*)select, "Title");
|
test_elem_title((IUnknown*)select, "Title");
|
||||||
test_elem_offset((IUnknown*)select);
|
test_elem_offset((IUnknown*)select, "BODY");
|
||||||
test_elem_bounding_client_rect((IUnknown*)select);
|
test_elem_bounding_client_rect((IUnknown*)select);
|
||||||
|
|
||||||
node = get_first_child((IUnknown*)select);
|
node = get_first_child((IUnknown*)select);
|
||||||
|
|
Loading…
Reference in New Issue