diff --git a/dlls/mshtml/htmlelem2.c b/dlls/mshtml/htmlelem2.c index 572841c874f..d12c60c9b6b 100644 --- a/dlls/mshtml/htmlelem2.c +++ b/dlls/mshtml/htmlelem2.c @@ -383,8 +383,23 @@ static HRESULT WINAPI HTMLElement2_removeExpression(IHTMLElement2 *iface, BSTR p static HRESULT WINAPI HTMLElement2_put_tabIndex(IHTMLElement2 *iface, short v) { HTMLElement *This = HTMLELEM2_THIS(iface); - FIXME("(%p)->(%d)\n", This, v); - return E_NOTIMPL; + nsIDOMNSHTMLElement *nselem; + nsresult nsres; + + TRACE("(%p)->(%d)\n", This, v); + + nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem); + if(NS_FAILED(nsres)) { + ERR("Could not get nsIDOMHTMLNSElement: %08x\n", nsres); + return S_OK; + } + + nsres = nsIDOMNSHTMLElement_SetTabIndex(nselem, v); + nsIDOMNSHTMLElement_Release(nselem); + if(NS_FAILED(nsres)) + ERR("GetTabIndex failed: %08x\n", nsres); + + return S_OK; } static HRESULT WINAPI HTMLElement2_get_tabIndex(IHTMLElement2 *iface, short *p) diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 65e9de61506..ae8f6de20fd 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -965,6 +965,19 @@ static void _test_elem_tabindex(unsigned line, IUnknown *unk, short exindex) ok_(__FILE__,line) (index == exindex, "unexpected index %d\n", index); } +#define test_elem_set_tabindex(u,i) _test_elem_set_tabindex(__LINE__,u,i) +static void _test_elem_set_tabindex(unsigned line, IUnknown *unk, short index) +{ + IHTMLElement2 *elem2 = _get_elem2_iface(line, unk); + HRESULT hres; + + hres = IHTMLElement2_put_tabIndex(elem2, index); + IHTMLElement2_Release(elem2); + ok_(__FILE__,line) (hres == S_OK, "get_tabIndex failed: %08x\n", hres); + + _test_elem_tabindex(line, unk, index); +} + #define test_elem_set_class(u,c) _test_elem_set_class(__LINE__,u,c) static void _test_elem_set_class(unsigned line, IUnknown *unk, const char *class) { @@ -1854,6 +1867,7 @@ static void test_elems(IHTMLDocument2 *doc) test_elem_set_class((IUnknown*)elem, "cl"); test_elem_set_class((IUnknown*)elem, NULL); test_elem_tabindex((IUnknown*)elem, 0); + test_elem_set_tabindex((IUnknown*)elem, 1); IHTMLElement_Release(elem); } @@ -1916,6 +1930,7 @@ static void test_elems(IHTMLDocument2 *doc) test_input_value((IUnknown*)elem, NULL); test_elem_class((IUnknown*)elem, "testclass"); test_elem_tabindex((IUnknown*)elem, 2); + test_elem_set_tabindex((IUnknown*)elem, 3); IHTMLInputElement_Release(input); IHTMLElement_Release(elem);