Module: wine Branch: master Commit: cc784e277f7300638aa4ab5d993e518e9043ffdb URL: http://source.winehq.org/git/wine.git/?a=commit;h=cc784e277f7300638aa4ab5d99...
Author: Ilya Shpigor shpigor@etersoft.ru Date: Tue May 18 17:17:29 2010 +0400
shdocvw: Added IDataObject stub implementation.
---
dlls/shdocvw/shdocvw.h | 3 + dlls/shdocvw/view.c | 114 +++++++++++++++++++++++++++++++++++++++++++++ dlls/shdocvw/webbrowser.c | 4 ++ 3 files changed, 121 insertions(+), 0 deletions(-)
diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h index 1184298..2dce575 100644 --- a/dlls/shdocvw/shdocvw.h +++ b/dlls/shdocvw/shdocvw.h @@ -127,6 +127,7 @@ struct WebBrowser { const IOleCommandTargetVtbl *lpOleCommandTargetVtbl; const IHlinkFrameVtbl *lpHlinkFrameVtbl; const IServiceProviderVtbl *lpServiceProviderVtbl; + const IDataObjectVtbl *lpDataObjectVtbl;
LONG ref;
@@ -184,6 +185,7 @@ struct InternetExplorer { #define ACTIVEOBJ(x) ((IOleInPlaceActiveObject*) &(x)->lpOleInPlaceActiveObjectVtbl) #define OLECMD(x) ((IOleCommandTarget*) &(x)->lpOleCommandTargetVtbl) #define HLINKFRAME(x) ((IHlinkFrame*) &(x)->lpHlinkFrameVtbl) +#define DATAOBJECT(x) ((IDataObject*) &(x)->lpDataObjectVtbl)
#define CLIENTSITE(x) ((IOleClientSite*) &(x)->lpOleClientSiteVtbl) #define INPLACESITE(x) ((IOleInPlaceSite*) &(x)->lpOleInPlaceSiteVtbl) @@ -198,6 +200,7 @@ struct InternetExplorer {
void WebBrowser_OleObject_Init(WebBrowser*); void WebBrowser_ViewObject_Init(WebBrowser*); +void WebBrowser_DataObject_Init(WebBrowser*); void WebBrowser_Persist_Init(WebBrowser*); void WebBrowser_ClassInfo_Init(WebBrowser*); void WebBrowser_HlinkFrame_Init(WebBrowser*); diff --git a/dlls/shdocvw/view.c b/dlls/shdocvw/view.c index d2e5857..9ee7c06 100644 --- a/dlls/shdocvw/view.c +++ b/dlls/shdocvw/view.c @@ -1,5 +1,6 @@ /* * Copyright 2005 Jacek Caban + * Copyright 2010 Ilya Shpigor * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -21,6 +22,10 @@
WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
+/********************************************************************** + * Implement the IViewObject interface + */ + #define VIEWOBJ_THIS(iface) DEFINE_THIS(WebBrowser, ViewObject, iface)
static HRESULT WINAPI ViewObject_QueryInterface(IViewObject2 *iface, REFIID riid, void **ppv) @@ -122,3 +127,112 @@ void WebBrowser_ViewObject_Init(WebBrowser *This) { This->lpViewObjectVtbl = &ViewObjectVtbl; } + +/********************************************************************** + * Implement the IDataObject interface + */ + +#define DATAOBJ_THIS(iface) DEFINE_THIS(WebBrowser, DataObject, iface) + +static HRESULT WINAPI DataObject_QueryInterface(LPDATAOBJECT iface, REFIID riid, LPVOID * ppvObj) +{ + WebBrowser *This = DATAOBJ_THIS(iface); + return IWebBrowser2_QueryInterface(WEBBROWSER(This), riid, ppvObj); +} + +static ULONG WINAPI DataObject_AddRef(LPDATAOBJECT iface) +{ + WebBrowser *This = DATAOBJ_THIS(iface); + return IWebBrowser2_AddRef(WEBBROWSER(This)); +} + +static ULONG WINAPI DataObject_Release(LPDATAOBJECT iface) +{ + WebBrowser *This = DATAOBJ_THIS(iface); + return IWebBrowser2_Release(WEBBROWSER(This)); +} + +static HRESULT WINAPI DataObject_GetData(LPDATAOBJECT iface, LPFORMATETC pformatetcIn, STGMEDIUM *pmedium) +{ + WebBrowser *This = DATAOBJ_THIS(iface); + FIXME("(%p)->()\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI DataObject_GetDataHere(LPDATAOBJECT iface, LPFORMATETC pformatetc, STGMEDIUM *pmedium) +{ + WebBrowser *This = DATAOBJ_THIS(iface); + FIXME("(%p)->()\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI DataObject_QueryGetData(LPDATAOBJECT iface, LPFORMATETC pformatetc) +{ + WebBrowser *This = DATAOBJ_THIS(iface); + FIXME("(%p)->()\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI DataObject_GetCanonicalFormatEtc(LPDATAOBJECT iface, LPFORMATETC pformatectIn, LPFORMATETC pformatetcOut) +{ + WebBrowser *This = DATAOBJ_THIS(iface); + FIXME("(%p)->()\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI DataObject_SetData(LPDATAOBJECT iface, LPFORMATETC pformatetc, STGMEDIUM *pmedium, BOOL fRelease) +{ + WebBrowser *This = DATAOBJ_THIS(iface); + FIXME("(%p)->()\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI DataObject_EnumFormatEtc(LPDATAOBJECT iface, DWORD dwDirection, IEnumFORMATETC **ppenumFormatEtc) +{ + WebBrowser *This = DATAOBJ_THIS(iface); + FIXME("(%p)->()\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI DataObject_DAdvise(LPDATAOBJECT iface, FORMATETC *pformatetc, DWORD advf, IAdviseSink *pAdvSink, DWORD *pdwConnection) +{ + WebBrowser *This = DATAOBJ_THIS(iface); + FIXME("(%p)->()\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI DataObject_DUnadvise(LPDATAOBJECT iface, DWORD dwConnection) +{ + WebBrowser *This = DATAOBJ_THIS(iface); + FIXME("(%p)->()\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI DataObject_EnumDAdvise(LPDATAOBJECT iface, IEnumSTATDATA **ppenumAdvise) +{ + WebBrowser *This = DATAOBJ_THIS(iface); + FIXME("(%p)->()\n", This); + return E_NOTIMPL; +} + +static const IDataObjectVtbl DataObjectVtbl = { + DataObject_QueryInterface, + DataObject_AddRef, + DataObject_Release, + DataObject_GetData, + DataObject_GetDataHere, + DataObject_QueryGetData, + DataObject_GetCanonicalFormatEtc, + DataObject_SetData, + DataObject_EnumFormatEtc, + DataObject_DAdvise, + DataObject_DUnadvise, + DataObject_EnumDAdvise +}; + +#undef DATAOBJ_THIS + +void WebBrowser_DataObject_Init(WebBrowser *This) +{ + This->lpDataObjectVtbl = &DataObjectVtbl; +} diff --git a/dlls/shdocvw/webbrowser.c b/dlls/shdocvw/webbrowser.c index 2ac9b99..b2fce6a 100644 --- a/dlls/shdocvw/webbrowser.c +++ b/dlls/shdocvw/webbrowser.c @@ -105,6 +105,9 @@ static HRESULT WINAPI WebBrowser_QueryInterface(IWebBrowser2 *iface, REFIID riid }else if(IsEqualGUID(&IID_IServiceProvider, riid)) { *ppv = SERVPROV(This); TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv); + }else if(IsEqualGUID(&IID_IDataObject, riid)) { + *ppv = DATAOBJECT(This); + TRACE("(%p)->(IID_IDataObject %p)\n", This, ppv); }else if(IsEqualGUID(&IID_IQuickActivate, riid)) { TRACE("(%p)->(IID_IQuickActivate %p) returning NULL\n", This, ppv); return E_NOINTERFACE; @@ -1132,6 +1135,7 @@ static HRESULT WebBrowser_Create(INT version, IUnknown *pOuter, REFIID riid, voi
WebBrowser_OleObject_Init(ret); WebBrowser_ViewObject_Init(ret); + WebBrowser_DataObject_Init(ret); WebBrowser_Persist_Init(ret); WebBrowser_ClassInfo_Init(ret); WebBrowser_HlinkFrame_Init(ret);