[PATCH 5/7] ieframe: Implement IDataObject::DAdvise().
Dmitry Timoshkov
dmitry at baikal.ru
Mon Jul 27 05:32:59 CDT 2020
Based on ole32/defaulthandler.c implementation.
Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
---
dlls/ieframe/ieframe.h | 1 +
dlls/ieframe/view.c | 13 +++++++++++--
dlls/ieframe/webbrowser.c | 3 +++
3 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/dlls/ieframe/ieframe.h b/dlls/ieframe/ieframe.h
index 329cea2f7c..6b19fabaec 100644
--- a/dlls/ieframe/ieframe.h
+++ b/dlls/ieframe/ieframe.h
@@ -200,6 +200,7 @@ struct WebBrowser {
DWORD sink_flags;
IOleAdviseHolder *advise_holder;
+ IDataAdviseHolder *data_advise_holder;
/* window context */
diff --git a/dlls/ieframe/view.c b/dlls/ieframe/view.c
index d307bb5a00..7bd9429c3d 100644
--- a/dlls/ieframe/view.c
+++ b/dlls/ieframe/view.c
@@ -217,8 +217,17 @@ static HRESULT WINAPI DataObject_EnumFormatEtc(LPDATAOBJECT iface, DWORD dwDirec
static HRESULT WINAPI DataObject_DAdvise(LPDATAOBJECT iface, FORMATETC *pformatetc, DWORD advf, IAdviseSink *pAdvSink, DWORD *pdwConnection)
{
WebBrowser *This = impl_from_IDataObject(iface);
- FIXME("(%p)->()\n", This);
- return E_NOTIMPL;
+ HRESULT hr = S_OK;
+
+ TRACE("(%p)->(%p,%08x,%p,%p)\n", This, pformatetc, advf, pAdvSink, pdwConnection);
+
+ if(!This->data_advise_holder)
+ hr = CreateDataAdviseHolder(&This->data_advise_holder);
+
+ if(hr == S_OK)
+ hr = IDataAdviseHolder_Advise(This->data_advise_holder, iface, pformatetc, advf, pAdvSink, pdwConnection);
+
+ return hr;
}
static HRESULT WINAPI DataObject_DUnadvise(LPDATAOBJECT iface, DWORD dwConnection)
diff --git a/dlls/ieframe/webbrowser.c b/dlls/ieframe/webbrowser.c
index 87b74b8e01..746e66c889 100644
--- a/dlls/ieframe/webbrowser.c
+++ b/dlls/ieframe/webbrowser.c
@@ -173,6 +173,9 @@ static ULONG WINAPI WebBrowser_Release(IUnknown *iface)
if(This->advise_holder)
IOleAdviseHolder_Release(This->advise_holder);
+ if(This->data_advise_holder)
+ IDataAdviseHolder_Release(This->data_advise_holder);
+
if(This->doc_host.document)
IUnknown_Release(This->doc_host.document);
--
2.26.2
More information about the wine-devel
mailing list