Module: wine Branch: master Commit: c8e34cf22f3641c7d43018b967497617f4e43705 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c8e34cf22f3641c7d43018b967...
Author: Jacek Caban jacek@codeweavers.com Date: Sun Aug 30 01:00:06 2009 +0200
shdocvw: Added IPropertyNotifySink stub implementation.
---
dlls/shdocvw/client.c | 3 +++ dlls/shdocvw/dochost.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ dlls/shdocvw/shdocvw.h | 2 ++ 3 files changed, 51 insertions(+), 0 deletions(-)
diff --git a/dlls/shdocvw/client.c b/dlls/shdocvw/client.c index 14a7f90..a351bd1 100644 --- a/dlls/shdocvw/client.c +++ b/dlls/shdocvw/client.c @@ -60,6 +60,9 @@ static HRESULT WINAPI ClientSite_QueryInterface(IOleClientSite *iface, REFIID ri }else if(IsEqualGUID(&IID_IDispatch, riid)) { TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); *ppv = CLDISP(This); + }else if(IsEqualGUID(&IID_IPropertyNotifySink, riid)) { + TRACE("(%p)->(IID_IPropertyNotifySink %p)\n", This, ppv); + *ppv = PROPNOTIF(This); }else if(IsEqualGUID(&IID_IServiceProvider, riid)) { TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv); *ppv = SERVPROV(This); diff --git a/dlls/shdocvw/dochost.c b/dlls/shdocvw/dochost.c index dd6e712..a3d3b3c 100644 --- a/dlls/shdocvw/dochost.c +++ b/dlls/shdocvw/dochost.c @@ -502,10 +502,56 @@ static const IDocHostUIHandler2Vtbl DocHostUIHandler2Vtbl = { DocHostUIHandler_GetOverrideKeyPath };
+#define PROPNOTIF_THIS(iface) DEFINE_THIS(DocHost, IPropertyNotifySink, iface) + +static HRESULT WINAPI PropertyNotifySink_QueryInterface(IPropertyNotifySink *iface, + REFIID riid, void **ppv) +{ + DocHost *This = PROPNOTIF_THIS(iface); + return IOleClientSite_QueryInterface(CLIENTSITE(This), riid, ppv); +} + +static ULONG WINAPI PropertyNotifySink_AddRef(IPropertyNotifySink *iface) +{ + DocHost *This = PROPNOTIF_THIS(iface); + return IOleClientSite_AddRef(CLIENTSITE(This)); +} + +static ULONG WINAPI PropertyNotifySink_Release(IPropertyNotifySink *iface) +{ + DocHost *This = PROPNOTIF_THIS(iface); + return IOleClientSite_Release(CLIENTSITE(This)); +} + +static HRESULT WINAPI PropertyNotifySink_OnChanged(IPropertyNotifySink *iface, DISPID dispID) +{ + DocHost *This = PROPNOTIF_THIS(iface); + FIXME("(%p)->(%d)\n", This, dispID); + return E_NOTIMPL; +} + +static HRESULT WINAPI PropertyNotifySink_OnRequestEdit(IPropertyNotifySink *iface, DISPID dispID) +{ + DocHost *This = PROPNOTIF_THIS(iface); + FIXME("(%p)->(%d)\n", This, dispID); + return E_NOTIMPL; +} + +#undef PROPNOTIF_THIS + +static const IPropertyNotifySinkVtbl PropertyNotifySinkVtbl = { + PropertyNotifySink_QueryInterface, + PropertyNotifySink_AddRef, + PropertyNotifySink_Release, + PropertyNotifySink_OnChanged, + PropertyNotifySink_OnRequestEdit +}; + void DocHost_Init(DocHost *This, IDispatch *disp) { This->lpDocHostUIHandlerVtbl = &DocHostUIHandler2Vtbl; This->lpOleCommandTargetVtbl = &OleCommandTargetVtbl; + This->lpIPropertyNotifySinkVtbl = &PropertyNotifySinkVtbl;
This->disp = disp;
diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h index b148611..e28c98f 100644 --- a/dlls/shdocvw/shdocvw.h +++ b/dlls/shdocvw/shdocvw.h @@ -78,6 +78,7 @@ struct DocHost { const IOleDocumentSiteVtbl *lpOleDocumentSiteVtbl; const IOleCommandTargetVtbl *lpOleCommandTargetVtbl; const IDispatchVtbl *lpDispatchVtbl; + const IPropertyNotifySinkVtbl *lpIPropertyNotifySinkVtbl; const IServiceProviderVtbl *lpServiceProviderVtbl;
/* Interfaces of InPlaceFrame object */ @@ -184,6 +185,7 @@ struct InternetExplorer { #define DOCHOSTUI2(x) ((IDocHostUIHandler2*) &(x)->lpDocHostUIHandlerVtbl) #define DOCSITE(x) ((IOleDocumentSite*) &(x)->lpOleDocumentSiteVtbl) #define CLDISP(x) ((IDispatch*) &(x)->lpDispatchVtbl) +#define PROPNOTIF(x) ((IPropertyNotifySink*) &(x)->lpIPropertyNotifySinkVtbl) #define SERVPROV(x) ((IServiceProvider*) &(x)->lpServiceProviderVtbl)
#define INPLACEFRAME(x) ((IOleInPlaceFrame*) &(x)->lpOleInPlaceFrameVtbl)