Jacek Caban : mshtml: Added PluginHost' s IOleControlSite stub implementation.

Alexandre Julliard julliard at winehq.org
Mon Dec 6 13:18:34 CST 2010


Module: wine
Branch: master
Commit: dc062aee5a18e0884cd19157d738acca21bb2675
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=dc062aee5a18e0884cd19157d738acca21bb2675

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Dec  6 18:50:52 2010 +0100

mshtml: Added PluginHost's IOleControlSite stub implementation.

---

 dlls/mshtml/pluginhost.c    |   89 +++++++++++++++++++++++++++++++++++++++++++
 dlls/mshtml/pluginhost.h    |    1 +
 dlls/mshtml/tests/activex.c |    1 +
 3 files changed, 91 insertions(+), 0 deletions(-)

diff --git a/dlls/mshtml/pluginhost.c b/dlls/mshtml/pluginhost.c
index db11c02..4b8f1b1 100644
--- a/dlls/mshtml/pluginhost.c
+++ b/dlls/mshtml/pluginhost.c
@@ -123,6 +123,9 @@ static HRESULT WINAPI PHClientSite_QueryInterface(IOleClientSite *iface, REFIID
     }else if(IsEqualGUID(&IID_IOleInPlaceSiteEx, riid)) {
         TRACE("(%p)->(IID_IOleInPlaceSiteEx %p)\n", This, ppv);
         *ppv = &This->IOleInPlaceSiteEx_iface;
+    }else if(IsEqualGUID(&IID_IOleControlSite, riid)) {
+        TRACE("(%p)->(IID_IOleControlSite %p)\n", This, ppv);
+        *ppv = &This->IOleControlSite_iface;
     }else {
         WARN("Unsupported interface %s\n", debugstr_guid(riid));
         *ppv = NULL;
@@ -545,6 +548,91 @@ static const IOleInPlaceSiteExVtbl OleInPlaceSiteExVtbl = {
     PHInPlaceSiteEx_RequestUIActivate
 };
 
+static inline PluginHost *impl_from_IOleControlSite(IOleControlSite *iface)
+{
+    return CONTAINING_RECORD(iface, PluginHost, IOleControlSite_iface);
+}
+
+static HRESULT WINAPI PHControlSite_QueryInterface(IOleControlSite *iface, REFIID riid, void **ppv)
+{
+    PluginHost *This = impl_from_IOleControlSite(iface);
+    return IOleClientSite_QueryInterface(&This->IOleClientSite_iface, riid, ppv);
+}
+
+static ULONG WINAPI PHControlSite_AddRef(IOleControlSite *iface)
+{
+    PluginHost *This = impl_from_IOleControlSite(iface);
+    return IOleClientSite_AddRef(&This->IOleClientSite_iface);
+}
+
+static ULONG WINAPI PHControlSite_Release(IOleControlSite *iface)
+{
+    PluginHost *This = impl_from_IOleControlSite(iface);
+    return IOleClientSite_Release(&This->IOleClientSite_iface);
+}
+
+static HRESULT WINAPI PHControlSite_OnControlInfoChanged(IOleControlSite *iface)
+{
+    PluginHost *This = impl_from_IOleControlSite(iface);
+    FIXME("(%p)\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI PHControlSite_LockInPlaceActive(IOleControlSite *iface, BOOL fLock)
+{
+    PluginHost *This = impl_from_IOleControlSite(iface);
+    FIXME("(%p)->(%x)\n", This, fLock);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI PHControlSite_GetExtendedControl(IOleControlSite *iface, IDispatch **ppDisp)
+{
+    PluginHost *This = impl_from_IOleControlSite(iface);
+    FIXME("(%p)->(%p)\n", This, ppDisp);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI PHControlSite_TransformCoords(IOleControlSite *iface, POINTL *pPtlHimetric, POINTF *pPtfContainer, DWORD dwFlags)
+{
+    PluginHost *This = impl_from_IOleControlSite(iface);
+    FIXME("(%p)->(%p %p %x)\n", This, pPtlHimetric, pPtfContainer, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI PHControlSite_TranslateAccelerator(IOleControlSite *iface, MSG *pMsg, DWORD grfModifiers)
+{
+    PluginHost *This = impl_from_IOleControlSite(iface);
+    FIXME("(%p)->(%x)\n", This, grfModifiers);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI PHControlSite_OnFocus(IOleControlSite *iface, BOOL fGotFocus)
+{
+    PluginHost *This = impl_from_IOleControlSite(iface);
+    FIXME("(%p)->(%x)\n", This, fGotFocus);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI PHControlSite_ShowPropertyFrame(IOleControlSite *iface)
+{
+    PluginHost *This = impl_from_IOleControlSite(iface);
+    FIXME("(%p)\n", This);
+    return E_NOTIMPL;
+}
+
+static const IOleControlSiteVtbl OleControlSiteVtbl = {
+    PHControlSite_QueryInterface,
+    PHControlSite_AddRef,
+    PHControlSite_Release,
+    PHControlSite_OnControlInfoChanged,
+    PHControlSite_LockInPlaceActive,
+    PHControlSite_GetExtendedControl,
+    PHControlSite_TransformCoords,
+    PHControlSite_TranslateAccelerator,
+    PHControlSite_OnFocus,
+    PHControlSite_ShowPropertyFrame
+};
+
 HRESULT create_plugin_host(IUnknown *unk, PluginHost **ret)
 {
     PluginHost *host;
@@ -558,6 +646,7 @@ HRESULT create_plugin_host(IUnknown *unk, PluginHost **ret)
     host->IPropertyNotifySink_iface.lpVtbl = &PropertyNotifySinkVtbl;
     host->IDispatch_iface.lpVtbl           = &DispatchVtbl;
     host->IOleInPlaceSiteEx_iface.lpVtbl   = &OleInPlaceSiteExVtbl;
+    host->IOleControlSite_iface.lpVtbl     = &OleControlSiteVtbl;
 
     host->ref = 1;
 
diff --git a/dlls/mshtml/pluginhost.h b/dlls/mshtml/pluginhost.h
index 077cf0c..316ce57 100644
--- a/dlls/mshtml/pluginhost.h
+++ b/dlls/mshtml/pluginhost.h
@@ -24,6 +24,7 @@ typedef struct {
     IPropertyNotifySink  IPropertyNotifySink_iface;
     IDispatch            IDispatch_iface;
     IOleInPlaceSiteEx    IOleInPlaceSiteEx_iface;
+    IOleControlSite      IOleControlSite_iface;
 
     LONG ref;
 
diff --git a/dlls/mshtml/tests/activex.c b/dlls/mshtml/tests/activex.c
index 3842bbd..aa8c0e1 100644
--- a/dlls/mshtml/tests/activex.c
+++ b/dlls/mshtml/tests/activex.c
@@ -96,6 +96,7 @@ static const REFIID pluginhost_iids[] = {
     &IID_IOleWindow,
     &IID_IOleInPlaceSite,
     &IID_IOleInPlaceSiteEx,
+    &IID_IOleControlSite,
     NULL
 };
 




More information about the wine-cvs mailing list