Jacek Caban : shdocvw: Added client site's IOleCommandTarget stub
implementation.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Jan 26 06:44:28 CST 2006
Module: wine
Branch: refs/heads/master
Commit: 254bdf08f147720d8d5305423652b7cf5f7d7624
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=254bdf08f147720d8d5305423652b7cf5f7d7624
Author: Jacek Caban <jacek at 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)
More information about the wine-cvs
mailing list