diff --git a/dlls/mshtml/txtrange.c b/dlls/mshtml/txtrange.c index ea2319e3596..58b439136c9 100644 --- a/dlls/mshtml/txtrange.c +++ b/dlls/mshtml/txtrange.c @@ -152,8 +152,26 @@ static HRESULT WINAPI HTMLTxtRange_put_text(IHTMLTxtRange *iface, BSTR v) static HRESULT WINAPI HTMLTxtRange_get_text(IHTMLTxtRange *iface, BSTR *p) { HTMLTxtRange *This = HTMLTXTRANGE_THIS(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + PRUnichar *nstext = NULL; + nsresult nsres; + + TRACE("(%p)->(%p)\n", This, p); + + if(!This->nsselection) { + static const WCHAR empty[] = {0}; + *p = SysAllocString(empty); + return S_OK; + } + + nsres = nsISelection_ToString(This->nsselection, &nstext); + if(NS_FAILED(nsres) || !nstext) { + ERR("toString failed: %08lx\n", nsres); + return E_FAIL; + } + + *p = SysAllocString(nstext); + nsfree(nstext); + return S_OK; } static HRESULT WINAPI HTMLTxtRange_parentElement(IHTMLTxtRange *iface, IHTMLElement **parent)