Module: wine Branch: master Commit: 00457c7f3dc9bcd2ba1952d77c7cec5001efb2f6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=00457c7f3dc9bcd2ba1952d77c...
Author: Jacek Caban jacek@codeweavers.com Date: Sun Sep 6 18:52:49 2009 +0200
mshtml: Added GetMemberName implementation.
---
dlls/mshtml/dispex.c | 33 +++++++++++++++++++++++++++++++-- 1 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/dispex.c b/dlls/mshtml/dispex.c index d21d8ee..c58b3ce 100644 --- a/dlls/mshtml/dispex.c +++ b/dlls/mshtml/dispex.c @@ -892,8 +892,37 @@ static HRESULT WINAPI DispatchEx_GetMemberProperties(IDispatchEx *iface, DISPID static HRESULT WINAPI DispatchEx_GetMemberName(IDispatchEx *iface, DISPID id, BSTR *pbstrName) { DispatchEx *This = DISPATCHEX_THIS(iface); - FIXME("(%p)->(%x %p)\n", This, id, pbstrName); - return E_NOTIMPL; + dispex_data_t *data; + func_info_t *func; + HRESULT hres; + + TRACE("(%p)->(%x %p)\n", This, id, pbstrName); + + if(is_dynamic_dispid(id)) { + DWORD idx = id - DISPID_DYNPROP_0; + + if(!This->dynamic_data || This->dynamic_data->prop_cnt <= idx) + return DISP_E_UNKNOWNNAME; + + *pbstrName = SysAllocString(This->dynamic_data->props[idx].name); + if(!*pbstrName) + return E_OUTOFMEMORY; + + return S_OK; + } + + data = get_dispex_data(This); + if(!data) + return E_FAIL; + + hres = get_builtin_func(data, id, &func); + if(FAILED(hres)) + return hres; + + *pbstrName = SysAllocString(func->name); + if(!*pbstrName) + return E_OUTOFMEMORY; + return S_OK; }
static HRESULT WINAPI DispatchEx_GetNextDispID(IDispatchEx *iface, DWORD grfdex, DISPID id, DISPID *pid)