mshtml: COM cleanup for the IOleObject iface.
This commit is contained in:
parent
7e32a1abb3
commit
6c3bb4de6f
|
@ -81,7 +81,7 @@ static HRESULT WINAPI HlinkTarget_Navigate(IHlinkTarget *iface, DWORD grfHLNF, L
|
|||
if(pwzJumpLocation)
|
||||
FIXME("JumpLocation not supported\n");
|
||||
|
||||
return IOleObject_DoVerb(OLEOBJ(This), OLEIVERB_SHOW, NULL, NULL, -1, NULL, NULL);
|
||||
return IOleObject_DoVerb(&This->IOleObject_iface, OLEIVERB_SHOW, NULL, NULL, -1, NULL, NULL);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HlinkTarget_GetMoniker(IHlinkTarget *iface, LPCWSTR pwzLocation, DWORD dwAssign,
|
||||
|
|
|
@ -1743,7 +1743,7 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
|
|||
*ppv = &This->IMonikerProp_iface;
|
||||
}else if(IsEqualGUID(&IID_IOleObject, riid)) {
|
||||
TRACE("(%p)->(IID_IOleObject, %p)\n", This, ppv);
|
||||
*ppv = OLEOBJ(This);
|
||||
*ppv = &This->IOleObject_iface;
|
||||
}else if(IsEqualGUID(&IID_IOleDocument, riid)) {
|
||||
TRACE("(%p)->(IID_IOleDocument, %p)\n", This, ppv);
|
||||
*ppv = OLEDOC(This);
|
||||
|
@ -2102,7 +2102,7 @@ static ULONG WINAPI CustomDoc_Release(ICustomDoc *iface)
|
|||
if(This->view_sink)
|
||||
IAdviseSink_Release(This->view_sink);
|
||||
if(This->client)
|
||||
IOleObject_SetClientSite(OLEOBJ(&This->basedoc), NULL);
|
||||
IOleObject_SetClientSite(&This->basedoc.IOleObject_iface, NULL);
|
||||
if(This->hostui)
|
||||
ICustomDoc_SetUIHandler(CUSTOMDOC(This), NULL);
|
||||
if(This->in_place_active)
|
||||
|
|
|
@ -351,7 +351,7 @@ struct HTMLDocument {
|
|||
IPersistFile IPersistFile_iface;
|
||||
IPersistHistory IPersistHistory_iface;
|
||||
IMonikerProp IMonikerProp_iface;
|
||||
const IOleObjectVtbl *lpOleObjectVtbl;
|
||||
IOleObject IOleObject_iface;
|
||||
const IOleDocumentVtbl *lpOleDocumentVtbl;
|
||||
const IOleDocumentViewVtbl *lpOleDocumentViewVtbl;
|
||||
const IOleInPlaceActiveObjectVtbl *lpOleInPlaceActiveObjectVtbl;
|
||||
|
@ -626,7 +626,6 @@ struct HTMLDocumentNode {
|
|||
#define HTMLWINDOW3(x) ((IHTMLWindow3*) &(x)->lpHTMLWindow3Vtbl)
|
||||
#define HTMLWINDOW4(x) ((IHTMLWindow4*) &(x)->lpHTMLWindow4Vtbl)
|
||||
|
||||
#define OLEOBJ(x) ((IOleObject*) &(x)->lpOleObjectVtbl)
|
||||
#define OLEDOC(x) ((IOleDocument*) &(x)->lpOleDocumentVtbl)
|
||||
#define DOCVIEW(x) ((IOleDocumentView*) &(x)->lpOleDocumentViewVtbl)
|
||||
#define OLEWIN(x) ((IOleWindow*) &(x)->lpOleInPlaceActiveObjectVtbl)
|
||||
|
|
|
@ -45,23 +45,26 @@ DEFINE_OLEGUID(CGID_DocHostCmdPriv, 0x000214D4L, 0, 0);
|
|||
* IOleObject implementation
|
||||
*/
|
||||
|
||||
#define OLEOBJ_THIS(iface) DEFINE_THIS(HTMLDocument, OleObject, iface)
|
||||
static inline HTMLDocument *impl_from_IOleObject(IOleObject *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLDocument, IOleObject_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleObject_QueryInterface(IOleObject *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
return htmldoc_query_interface(This, riid, ppv);
|
||||
}
|
||||
|
||||
static ULONG WINAPI OleObject_AddRef(IOleObject *iface)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
return htmldoc_addref(This);
|
||||
}
|
||||
|
||||
static ULONG WINAPI OleObject_Release(IOleObject *iface)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
return htmldoc_release(This);
|
||||
}
|
||||
|
||||
|
@ -93,7 +96,7 @@ static void update_hostinfo(HTMLDocumentObj *This, DOCHOSTUIINFO *hostinfo)
|
|||
|
||||
static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite *pClientSite)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
IOleCommandTarget *cmdtrg = NULL;
|
||||
IOleWindow *ole_window;
|
||||
BOOL hostui_setup;
|
||||
|
@ -233,7 +236,7 @@ static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite
|
|||
|
||||
static HRESULT WINAPI OleObject_GetClientSite(IOleObject *iface, IOleClientSite **ppClientSite)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, ppClientSite);
|
||||
|
||||
|
@ -249,14 +252,14 @@ static HRESULT WINAPI OleObject_GetClientSite(IOleObject *iface, IOleClientSite
|
|||
|
||||
static HRESULT WINAPI OleObject_SetHostNames(IOleObject *iface, LPCOLESTR szContainerApp, LPCOLESTR szContainerObj)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
FIXME("(%p)->(%s %s)\n", This, debugstr_w(szContainerApp), debugstr_w(szContainerObj));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleObject_Close(IOleObject *iface, DWORD dwSaveOption)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
|
||||
TRACE("(%p)->(%08x)\n", This, dwSaveOption);
|
||||
|
||||
|
@ -276,14 +279,14 @@ static HRESULT WINAPI OleObject_Close(IOleObject *iface, DWORD dwSaveOption)
|
|||
|
||||
static HRESULT WINAPI OleObject_SetMoniker(IOleObject *iface, DWORD dwWhichMoniker, IMoniker *pmk)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
FIXME("(%p %d %p)->()\n", This, dwWhichMoniker, pmk);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleObject_GetMoniker(IOleObject *iface, DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
FIXME("(%p)->(%d %d %p)\n", This, dwAssign, dwWhichMoniker, ppmk);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
@ -291,14 +294,14 @@ static HRESULT WINAPI OleObject_GetMoniker(IOleObject *iface, DWORD dwAssign, DW
|
|||
static HRESULT WINAPI OleObject_InitFromData(IOleObject *iface, IDataObject *pDataObject, BOOL fCreation,
|
||||
DWORD dwReserved)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
FIXME("(%p)->(%p %x %d)\n", This, pDataObject, fCreation, dwReserved);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleObject_GetClipboardData(IOleObject *iface, DWORD dwReserved, IDataObject **ppDataObject)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
FIXME("(%p)->(%d %p)\n", This, dwReserved, ppDataObject);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
@ -306,7 +309,7 @@ static HRESULT WINAPI OleObject_GetClipboardData(IOleObject *iface, DWORD dwRese
|
|||
static HRESULT WINAPI OleObject_DoVerb(IOleObject *iface, LONG iVerb, LPMSG lpmsg, IOleClientSite *pActiveSite,
|
||||
LONG lindex, HWND hwndParent, LPCRECT lprcPosRect)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
IOleDocumentSite *pDocSite;
|
||||
HRESULT hres;
|
||||
|
||||
|
@ -344,28 +347,28 @@ static HRESULT WINAPI OleObject_DoVerb(IOleObject *iface, LONG iVerb, LPMSG lpms
|
|||
|
||||
static HRESULT WINAPI OleObject_EnumVerbs(IOleObject *iface, IEnumOLEVERB **ppEnumOleVerb)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
FIXME("(%p)->(%p)\n", This, ppEnumOleVerb);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleObject_Update(IOleObject *iface)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
FIXME("(%p)\n", This);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleObject_IsUpToDate(IOleObject *iface)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
FIXME("(%p)\n", This);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleObject_GetUserClassID(IOleObject *iface, CLSID *pClsid)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, pClsid);
|
||||
|
||||
|
@ -378,28 +381,28 @@ static HRESULT WINAPI OleObject_GetUserClassID(IOleObject *iface, CLSID *pClsid)
|
|||
|
||||
static HRESULT WINAPI OleObject_GetUserType(IOleObject *iface, DWORD dwFormOfType, LPOLESTR *pszUserType)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
FIXME("(%p)->(%d %p)\n", This, dwFormOfType, pszUserType);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleObject_SetExtent(IOleObject *iface, DWORD dwDrawAspect, SIZEL *psizel)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
FIXME("(%p)->(%d %p)\n", This, dwDrawAspect, psizel);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleObject_GetExtent(IOleObject *iface, DWORD dwDrawAspect, SIZEL *psizel)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
FIXME("(%p)->(%d %p)\n", This, dwDrawAspect, psizel);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleObject_Advise(IOleObject *iface, IAdviseSink *pAdvSink, DWORD *pdwConnection)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
TRACE("(%p)->(%p %p)\n", This, pAdvSink, pdwConnection);
|
||||
|
||||
if(!pdwConnection)
|
||||
|
@ -421,7 +424,7 @@ static HRESULT WINAPI OleObject_Advise(IOleObject *iface, IAdviseSink *pAdvSink,
|
|||
|
||||
static HRESULT WINAPI OleObject_Unadvise(IOleObject *iface, DWORD dwConnection)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
TRACE("(%p)->(%d)\n", This, dwConnection);
|
||||
|
||||
if(!This->advise_holder)
|
||||
|
@ -432,7 +435,7 @@ static HRESULT WINAPI OleObject_Unadvise(IOleObject *iface, DWORD dwConnection)
|
|||
|
||||
static HRESULT WINAPI OleObject_EnumAdvise(IOleObject *iface, IEnumSTATDATA **ppenumAdvise)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
|
||||
if(!This->advise_holder) {
|
||||
*ppenumAdvise = NULL;
|
||||
|
@ -444,20 +447,18 @@ static HRESULT WINAPI OleObject_EnumAdvise(IOleObject *iface, IEnumSTATDATA **pp
|
|||
|
||||
static HRESULT WINAPI OleObject_GetMiscStatus(IOleObject *iface, DWORD dwAspect, DWORD *pdwStatus)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
FIXME("(%p)->(%d %p)\n", This, dwAspect, pdwStatus);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleObject_SetColorScheme(IOleObject *iface, LOGPALETTE *pLogpal)
|
||||
{
|
||||
HTMLDocument *This = OLEOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleObject(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pLogpal);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
#undef OLEPBJ_THIS
|
||||
|
||||
static const IOleObjectVtbl OleObjectVtbl = {
|
||||
OleObject_QueryInterface,
|
||||
OleObject_AddRef,
|
||||
|
@ -869,7 +870,7 @@ void HTMLDocument_LockContainer(HTMLDocumentObj *This, BOOL fLock)
|
|||
|
||||
void HTMLDocument_OleObj_Init(HTMLDocument *This)
|
||||
{
|
||||
This->lpOleObjectVtbl = &OleObjectVtbl;
|
||||
This->IOleObject_iface.lpVtbl = &OleObjectVtbl;
|
||||
This->lpOleDocumentVtbl = &OleDocumentVtbl;
|
||||
This->lpOleControlVtbl = &OleControlVtbl;
|
||||
This->lpObjectWithSiteVtbl = &ObjectWithSiteVtbl;
|
||||
|
|
|
@ -406,7 +406,7 @@ static HRESULT WINAPI PersistMoniker_Load(IPersistMoniker *iface, BOOL fFullyAva
|
|||
hres = IUnknown_QueryInterface(unk, &IID_IOleClientSite, (void**)&client);
|
||||
if(SUCCEEDED(hres)) {
|
||||
TRACE("Got client site %p\n", client);
|
||||
IOleObject_SetClientSite(OLEOBJ(This), client);
|
||||
IOleObject_SetClientSite(&This->IOleObject_iface, client);
|
||||
IOleClientSite_Release(client);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue