mshtml: COM cleanup for the IOleInPlaceActiveObject iface.
This commit is contained in:
parent
37c3091f27
commit
b09dc2e5b1
|
@ -1752,7 +1752,7 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
|
|||
*ppv = &This->IOleDocumentView_iface;
|
||||
}else if(IsEqualGUID(&IID_IOleInPlaceActiveObject, riid)) {
|
||||
TRACE("(%p)->(IID_IOleInPlaceActiveObject, %p)\n", This, ppv);
|
||||
*ppv = ACTOBJ(This);
|
||||
*ppv = &This->IOleInPlaceActiveObject_iface;
|
||||
}else if(IsEqualGUID(&IID_IViewObject, riid)) {
|
||||
TRACE("(%p)->(IID_IViewObject, %p)\n", This, ppv);
|
||||
*ppv = VIEWOBJ(This);
|
||||
|
@ -1764,7 +1764,7 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
|
|||
*ppv = VIEWOBJEX(This);
|
||||
}else if(IsEqualGUID(&IID_IOleWindow, riid)) {
|
||||
TRACE("(%p)->(IID_IOleWindow, %p)\n", This, ppv);
|
||||
*ppv = OLEWIN(This);
|
||||
*ppv = &This->IOleInPlaceActiveObject_iface;
|
||||
}else if(IsEqualGUID(&IID_IOleInPlaceObject, riid)) {
|
||||
TRACE("(%p)->(IID_IOleInPlaceObject, %p)\n", This, ppv);
|
||||
*ppv = INPLACEOBJ(This);
|
||||
|
|
|
@ -354,7 +354,7 @@ struct HTMLDocument {
|
|||
IOleObject IOleObject_iface;
|
||||
IOleDocument IOleDocument_iface;
|
||||
IOleDocumentView IOleDocumentView_iface;
|
||||
const IOleInPlaceActiveObjectVtbl *lpOleInPlaceActiveObjectVtbl;
|
||||
IOleInPlaceActiveObject IOleInPlaceActiveObject_iface;
|
||||
const IViewObjectExVtbl *lpViewObjectExVtbl;
|
||||
const IOleInPlaceObjectWindowlessVtbl *lpOleInPlaceObjectWindowlessVtbl;
|
||||
const IServiceProviderVtbl *lpServiceProviderVtbl;
|
||||
|
@ -625,8 +625,6 @@ struct HTMLDocumentNode {
|
|||
#define HTMLWINDOW2(x) ((IHTMLWindow2*) &(x)->lpHTMLWindow2Vtbl)
|
||||
#define HTMLWINDOW3(x) ((IHTMLWindow3*) &(x)->lpHTMLWindow3Vtbl)
|
||||
#define HTMLWINDOW4(x) ((IHTMLWindow4*) &(x)->lpHTMLWindow4Vtbl)
|
||||
#define OLEWIN(x) ((IOleWindow*) &(x)->lpOleInPlaceActiveObjectVtbl)
|
||||
#define ACTOBJ(x) ((IOleInPlaceActiveObject*) &(x)->lpOleInPlaceActiveObjectVtbl)
|
||||
#define VIEWOBJ(x) ((IViewObject*) &(x)->lpViewObjectExVtbl)
|
||||
#define VIEWOBJ2(x) ((IViewObject2*) &(x)->lpViewObjectExVtbl)
|
||||
#define VIEWOBJEX(x) ((IViewObjectEx*) &(x)->lpViewObjectExVtbl)
|
||||
|
|
|
@ -620,11 +620,12 @@ static HRESULT exec_editmode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in,
|
|||
RECT rcBorderWidths;
|
||||
|
||||
if(This->doc_obj->hostui)
|
||||
IDocHostUIHandler_ShowUI(This->doc_obj->hostui, DOCHOSTUITYPE_AUTHOR, ACTOBJ(This), CMDTARGET(This),
|
||||
IDocHostUIHandler_ShowUI(This->doc_obj->hostui, DOCHOSTUITYPE_AUTHOR,
|
||||
&This->IOleInPlaceActiveObject_iface, CMDTARGET(This),
|
||||
This->doc_obj->frame, This->doc_obj->ip_window);
|
||||
|
||||
if(This->doc_obj->ip_window)
|
||||
call_set_active_object(This->doc_obj->ip_window, ACTOBJ(This));
|
||||
call_set_active_object(This->doc_obj->ip_window, &This->IOleInPlaceActiveObject_iface);
|
||||
|
||||
memset(&rcBorderWidths, 0, sizeof(rcBorderWidths));
|
||||
if(This->doc_obj->frame)
|
||||
|
|
|
@ -39,29 +39,32 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
|
|||
* IOleInPlaceActiveObject implementation
|
||||
*/
|
||||
|
||||
#define ACTOBJ_THIS(iface) DEFINE_THIS(HTMLDocument, OleInPlaceActiveObject, iface)
|
||||
static inline HTMLDocument *impl_from_IOleInPlaceActiveObject(IOleInPlaceActiveObject *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLDocument, IOleInPlaceActiveObject_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleInPlaceActiveObject_QueryInterface(IOleInPlaceActiveObject *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
HTMLDocument *This = ACTOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleInPlaceActiveObject(iface);
|
||||
return htmldoc_query_interface(This, riid, ppv);
|
||||
}
|
||||
|
||||
static ULONG WINAPI OleInPlaceActiveObject_AddRef(IOleInPlaceActiveObject *iface)
|
||||
{
|
||||
HTMLDocument *This = ACTOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleInPlaceActiveObject(iface);
|
||||
return htmldoc_addref(This);
|
||||
}
|
||||
|
||||
static ULONG WINAPI OleInPlaceActiveObject_Release(IOleInPlaceActiveObject *iface)
|
||||
{
|
||||
HTMLDocument *This = ACTOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleInPlaceActiveObject(iface);
|
||||
return htmldoc_release(This);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleInPlaceActiveObject_GetWindow(IOleInPlaceActiveObject *iface, HWND *phwnd)
|
||||
{
|
||||
HTMLDocument *This = ACTOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleInPlaceActiveObject(iface);
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, phwnd);
|
||||
|
||||
|
@ -79,14 +82,14 @@ static HRESULT WINAPI OleInPlaceActiveObject_GetWindow(IOleInPlaceActiveObject *
|
|||
|
||||
static HRESULT WINAPI OleInPlaceActiveObject_ContextSensitiveHelp(IOleInPlaceActiveObject *iface, BOOL fEnterMode)
|
||||
{
|
||||
HTMLDocument *This = ACTOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleInPlaceActiveObject(iface);
|
||||
FIXME("(%p)->(%x)\n", This, fEnterMode);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleInPlaceActiveObject_TranslateAccelerator(IOleInPlaceActiveObject *iface, LPMSG lpmsg)
|
||||
{
|
||||
HTMLDocument *This = ACTOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleInPlaceActiveObject(iface);
|
||||
FIXME("(%p)->(%p)\n", This, lpmsg);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
@ -94,7 +97,7 @@ static HRESULT WINAPI OleInPlaceActiveObject_TranslateAccelerator(IOleInPlaceAct
|
|||
static HRESULT WINAPI OleInPlaceActiveObject_OnFrameWindowActivate(IOleInPlaceActiveObject *iface,
|
||||
BOOL fActivate)
|
||||
{
|
||||
HTMLDocument *This = ACTOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleInPlaceActiveObject(iface);
|
||||
|
||||
TRACE("(%p)->(%x)\n", This, fActivate);
|
||||
|
||||
|
@ -106,7 +109,7 @@ static HRESULT WINAPI OleInPlaceActiveObject_OnFrameWindowActivate(IOleInPlaceAc
|
|||
|
||||
static HRESULT WINAPI OleInPlaceActiveObject_OnDocWindowActivate(IOleInPlaceActiveObject *iface, BOOL fActivate)
|
||||
{
|
||||
HTMLDocument *This = ACTOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleInPlaceActiveObject(iface);
|
||||
FIXME("(%p)->(%x)\n", This, fActivate);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
@ -114,14 +117,14 @@ static HRESULT WINAPI OleInPlaceActiveObject_OnDocWindowActivate(IOleInPlaceActi
|
|||
static HRESULT WINAPI OleInPlaceActiveObject_ResizeBorder(IOleInPlaceActiveObject *iface, LPCRECT prcBorder,
|
||||
IOleInPlaceUIWindow *pUIWindow, BOOL fFrameWindow)
|
||||
{
|
||||
HTMLDocument *This = ACTOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleInPlaceActiveObject(iface);
|
||||
FIXME("(%p)->(%p %p %x)\n", This, prcBorder, pUIWindow, fFrameWindow);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleInPlaceActiveObject_EnableModeless(IOleInPlaceActiveObject *iface, BOOL fEnable)
|
||||
{
|
||||
HTMLDocument *This = ACTOBJ_THIS(iface);
|
||||
HTMLDocument *This = impl_from_IOleInPlaceActiveObject(iface);
|
||||
FIXME("(%p)->(%x)\n", This, fEnable);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
@ -139,8 +142,6 @@ static const IOleInPlaceActiveObjectVtbl OleInPlaceActiveObjectVtbl = {
|
|||
OleInPlaceActiveObject_EnableModeless
|
||||
};
|
||||
|
||||
#undef ACTOBJ_THIS
|
||||
|
||||
/**********************************************************
|
||||
* IOleInPlaceObjectWindowless implementation
|
||||
*/
|
||||
|
@ -170,14 +171,14 @@ static HRESULT WINAPI OleInPlaceObjectWindowless_GetWindow(IOleInPlaceObjectWind
|
|||
HWND *phwnd)
|
||||
{
|
||||
HTMLDocument *This = OLEINPLACEWND_THIS(iface);
|
||||
return IOleWindow_GetWindow(OLEWIN(This), phwnd);
|
||||
return IOleWindow_GetWindow(&This->IOleInPlaceActiveObject_iface, phwnd);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleInPlaceObjectWindowless_ContextSensitiveHelp(IOleInPlaceObjectWindowless *iface,
|
||||
BOOL fEnterMode)
|
||||
{
|
||||
HTMLDocument *This = OLEINPLACEWND_THIS(iface);
|
||||
return IOleWindow_ContextSensitiveHelp(OLEWIN(This), fEnterMode);
|
||||
return IOleWindow_ContextSensitiveHelp(&This->IOleInPlaceActiveObject_iface, fEnterMode);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleInPlaceObjectWindowless_InPlaceDeactivate(IOleInPlaceObjectWindowless *iface)
|
||||
|
@ -277,6 +278,6 @@ static const IOleInPlaceObjectWindowlessVtbl OleInPlaceObjectWindowlessVtbl = {
|
|||
|
||||
void HTMLDocument_Window_Init(HTMLDocument *This)
|
||||
{
|
||||
This->lpOleInPlaceActiveObjectVtbl = &OleInPlaceActiveObjectVtbl;
|
||||
This->IOleInPlaceActiveObject_iface.lpVtbl = &OleInPlaceActiveObjectVtbl;
|
||||
This->lpOleInPlaceObjectWindowlessVtbl = &OleInPlaceObjectWindowlessVtbl;
|
||||
}
|
||||
|
|
|
@ -645,7 +645,8 @@ static HRESULT WINAPI OleDocumentView_UIActivate(IOleDocumentView *iface, BOOL f
|
|||
|
||||
hres = IOleInPlaceSite_OnUIActivate(This->doc_obj->ipsite);
|
||||
if(SUCCEEDED(hres)) {
|
||||
call_set_active_object((IOleInPlaceUIWindow*)This->doc_obj->frame, ACTOBJ(This));
|
||||
call_set_active_object((IOleInPlaceUIWindow*)This->doc_obj->frame,
|
||||
&This->IOleInPlaceActiveObject_iface);
|
||||
}else {
|
||||
FIXME("OnUIActivate failed: %08x\n", hres);
|
||||
IOleInPlaceFrame_Release(This->doc_obj->frame);
|
||||
|
@ -657,13 +658,14 @@ static HRESULT WINAPI OleDocumentView_UIActivate(IOleDocumentView *iface, BOOL f
|
|||
if(This->doc_obj->hostui) {
|
||||
hres = IDocHostUIHandler_ShowUI(This->doc_obj->hostui,
|
||||
This->doc_obj->usermode == EDITMODE ? DOCHOSTUITYPE_AUTHOR : DOCHOSTUITYPE_BROWSE,
|
||||
ACTOBJ(This), CMDTARGET(This), This->doc_obj->frame, This->doc_obj->ip_window);
|
||||
&This->IOleInPlaceActiveObject_iface, CMDTARGET(This), This->doc_obj->frame,
|
||||
This->doc_obj->ip_window);
|
||||
if(FAILED(hres))
|
||||
IDocHostUIHandler_HideUI(This->doc_obj->hostui);
|
||||
}
|
||||
|
||||
if(This->doc_obj->ip_window)
|
||||
call_set_active_object(This->doc_obj->ip_window, ACTOBJ(This));
|
||||
call_set_active_object(This->doc_obj->ip_window, &This->IOleInPlaceActiveObject_iface);
|
||||
|
||||
memset(&rcBorderWidths, 0, sizeof(rcBorderWidths));
|
||||
IOleInPlaceFrame_SetBorderSpace(This->doc_obj->frame, &rcBorderWidths);
|
||||
|
|
Loading…
Reference in New Issue