Module: wine Branch: refs/heads/master Commit: 254bdf08f147720d8d5305423652b7cf5f7d7624 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=254bdf08f147720d8d530542...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Jan 26 13:28:43 2006 +0100
shdocvw: Added client site's IOleCommandTarget stub implementation.
---
dlls/shdocvw/client.c | 3 +++ dlls/shdocvw/dochost.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++- dlls/shdocvw/shdocvw.h | 2 ++ 3 files changed, 57 insertions(+), 1 deletions(-)
diff --git a/dlls/shdocvw/client.c b/dlls/shdocvw/client.c index 842c184..5e989d4 100644 --- a/dlls/shdocvw/client.c +++ b/dlls/shdocvw/client.c @@ -50,6 +50,9 @@ static HRESULT WINAPI ClientSite_QueryIn }else if(IsEqualGUID(&IID_IOleDocumentSite, riid)) { TRACE("(%p)->(IID_IOleDocumentSite %p)\n", This, ppv); *ppv = DOCSITE(This); + }else if(IsEqualGUID(&IID_IOleClientSite, riid)) { + TRACE("(%p)->(IID_IOleClientSite %p)\n", This, ppv); + *ppv = CLOLECMD(This); }
if(*ppv) { diff --git a/dlls/shdocvw/dochost.c b/dlls/shdocvw/dochost.c index 2a4a81d..ffe1fda 100644 --- a/dlls/shdocvw/dochost.c +++ b/dlls/shdocvw/dochost.c @@ -206,6 +206,56 @@ void deactivate_document(WebBrowser *Thi This->document = NULL; }
+#define OLECMD_THIS(iface) DEFINE_THIS(WebBrowser, ClOleCommandTarget, iface) + +static HRESULT WINAPI ClOleCommandTarget_QueryInterface(IOleCommandTarget *iface, + REFIID riid, void **ppv) +{ + WebBrowser *This = OLECMD_THIS(iface); + return IOleClientSite_QueryInterface(CLIENTSITE(This), riid, ppv); +} + +static ULONG WINAPI ClOleCommandTarget_AddRef(IOleCommandTarget *iface) +{ + WebBrowser *This = OLECMD_THIS(iface); + return IWebBrowser2_AddRef(WEBBROWSER(This)); +} + +static ULONG WINAPI ClOleCommandTarget_Release(IOleCommandTarget *iface) +{ + WebBrowser *This = OLECMD_THIS(iface); + return IWebBrowser2_Release(WEBBROWSER(This)); +} + +static HRESULT WINAPI ClOleCommandTarget_QueryStatus(IOleCommandTarget *iface, + const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText) +{ + WebBrowser *This = OLECMD_THIS(iface); + FIXME("(%p)->(%s %lu %p %p)\n", This, debugstr_guid(pguidCmdGroup), cCmds, prgCmds, + pCmdText); + return E_NOTIMPL; +} + +static HRESULT WINAPI ClOleCommandTarget_Exec(IOleCommandTarget *iface, + const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, + VARIANT *pvaOut) +{ + WebBrowser *This = OLECMD_THIS(iface); + FIXME("(%p)->(%s %ld %ld %p %p)\n", This, debugstr_guid(pguidCmdGroup), nCmdID, + nCmdexecopt, pvaIn, pvaOut); + return E_NOTIMPL; +} + +#undef OLECMD_THIS + +static const IOleCommandTargetVtbl OleCommandTargetVtbl = { + ClOleCommandTarget_QueryInterface, + ClOleCommandTarget_AddRef, + ClOleCommandTarget_Release, + ClOleCommandTarget_QueryStatus, + ClOleCommandTarget_Exec +}; + #define DOCHOSTUI_THIS(iface) DEFINE_THIS(WebBrowser, DocHostUIHandler, iface)
static HRESULT WINAPI DocHostUIHandler_QueryInterface(IDocHostUIHandler2 *iface, @@ -419,7 +469,8 @@ static const IDocHostUIHandler2Vtbl DocH
void WebBrowser_DocHost_Init(WebBrowser *This) { - This->lpDocHostUIHandlerVtbl = &DocHostUIHandler2Vtbl; + This->lpDocHostUIHandlerVtbl = &DocHostUIHandler2Vtbl; + This->lpClOleCommandTargetVtbl = &OleCommandTargetVtbl;
This->hostui = NULL;
diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h index 1aa8480..9b777fc 100644 --- a/dlls/shdocvw/shdocvw.h +++ b/dlls/shdocvw/shdocvw.h @@ -83,6 +83,7 @@ typedef struct { const IOleInPlaceSiteVtbl *lpOleInPlaceSiteVtbl; const IDocHostUIHandler2Vtbl *lpDocHostUIHandlerVtbl; const IOleDocumentSiteVtbl *lpOleDocumentSiteVtbl; + const IOleCommandTargetVtbl *lpClOleCommandTargetVtbl;
/* Interfaces of InPlaceFrame object */
@@ -138,6 +139,7 @@ typedef struct { #define DOCHOSTUI(x) ((IDocHostUIHandler*) &(x)->lpDocHostUIHandlerVtbl) #define DOCHOSTUI2(x) ((IDocHostUIHandler2*) &(x)->lpDocHostUIHandlerVtbl) #define DOCSITE(x) ((IOleDocumentSite*) &(x)->lpOleDocumentSiteVtbl) +#define CLOLECMD(x) ((IOleCommandTarget*) &(x)->lpClOleCommandTargetVtbl)
#define INPLACEFRAME(x) ((IOleInPlaceFrame*) &(x)->lpOleInPlaceFrameVtbl)