Module: wine Branch: master Commit: 355b3c190b1bd56a9e8aa7b88a9d1838890ab4bf URL: http://source.winehq.org/git/wine.git/?a=commit;h=355b3c190b1bd56a9e8aa7b88a...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Mar 9 16:49:21 2007 +0100
shdocvw: Added DISPID_AMBIENT_OFFLINEIFNOTCONNECTED and DISPID_AMBIENT_SILENT implementation in DocHost::Invoke.
---
dlls/shdocvw/client.c | 41 +++++++++++++++++++++++++++++++++++++++-- 1 files changed, 39 insertions(+), 2 deletions(-)
diff --git a/dlls/shdocvw/client.c b/dlls/shdocvw/client.c index 873c255..c2d71cf 100644 --- a/dlls/shdocvw/client.c +++ b/dlls/shdocvw/client.c @@ -16,8 +16,12 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
+#include <stdio.h> + #include "wine/debug.h" #include "shdocvw.h" +#include "mshtmdid.h" +#include "idispids.h"
WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
@@ -400,13 +404,46 @@ static HRESULT WINAPI ClDispatch_GetIDsOfNames(IDispatch *iface, REFIID riid, LP return E_NOTIMPL; }
+static const char *debugstr_dispid(DISPID dispid) +{ + static char buf[16]; + +#define CASE_DISPID(did) case did: return #did + switch(dispid) { + CASE_DISPID(DISPID_AMBIENT_USERMODE); + CASE_DISPID(DISPID_AMBIENT_DLCONTROL); + CASE_DISPID(DISPID_AMBIENT_USERAGENT); + CASE_DISPID(DISPID_AMBIENT_PALETTE); + CASE_DISPID(DISPID_AMBIENT_OFFLINEIFNOTCONNECTED); + CASE_DISPID(DISPID_AMBIENT_SILENT); + } +#undef CASE_DISPID + + sprintf(buf, "%d", dispid); + return buf; +} + static HRESULT WINAPI ClDispatch_Invoke(IDispatch *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) { DocHost *This = DISP_THIS(iface); - FIXME("(%p)->(%d %s %d %04x %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid), - lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + + TRACE("(%p)->(%s %s %d %04x %p %p %p %p)\n", This, debugstr_dispid(dispIdMember), + debugstr_guid(riid), lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + + switch(dispIdMember) { + case DISPID_AMBIENT_OFFLINEIFNOTCONNECTED: + V_VT(pVarResult) = VT_BOOL; + V_BOOL(pVarResult) = This->offline; + return S_OK; + case DISPID_AMBIENT_SILENT: + V_VT(pVarResult) = VT_BOOL; + V_BOOL(pVarResult) = This->offline; + return S_OK; + } + + FIXME("unhandled dispid %d\n", dispIdMember); return E_NOTIMPL; }