diff --git a/dlls/mshtml/htmlbody.c b/dlls/mshtml/htmlbody.c index 8bd60e2457b..d0ee45a586a 100644 --- a/dlls/mshtml/htmlbody.c +++ b/dlls/mshtml/htmlbody.c @@ -71,6 +71,21 @@ static BOOL variant_to_nscolor(const VARIANT *v, nsAString *nsstr) } +static void nscolor_to_variant(const nsAString *nsstr, VARIANT *p) +{ + const PRUnichar *color; + + nsAString_GetData(nsstr, &color); + + if(*color == '#') { + V_VT(p) = VT_I4; + V_I4(p) = strtolW(color+1, NULL, 16); + }else { + V_VT(p) = VT_BSTR; + V_BSTR(p) = SysAllocString(color); + } +} + #define HTMLBODY_THIS(iface) DEFINE_THIS(HTMLBodyElement, HTMLBodyElement, iface) static HRESULT WINAPI HTMLBodyElement_QueryInterface(IHTMLBodyElement *iface, @@ -297,8 +312,20 @@ static HRESULT WINAPI HTMLBodyElement_put_link(IHTMLBodyElement *iface, VARIANT static HRESULT WINAPI HTMLBodyElement_get_link(IHTMLBodyElement *iface, VARIANT *p) { HTMLBodyElement *This = HTMLBODY_THIS(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + nsAString link_str; + nsresult nsres; + + TRACE("(%p)->(%p)\n", This, p); + + nsAString_Init(&link_str, NULL); + nsres = nsIDOMHTMLBodyElement_GetLink(This->nsbody, &link_str); + if(NS_FAILED(nsres)) + ERR("GetLink failed: %08x\n", nsres); + + nscolor_to_variant(&link_str, p); + nsAString_Finish(&link_str); + + return S_OK; } static HRESULT WINAPI HTMLBodyElement_put_vLink(IHTMLBodyElement *iface, VARIANT v)