mshtml: Use IOleInPlaceSiteEx if available.

This commit is contained in:
Jacek Caban 2007-06-14 21:10:07 +02:00 committed by Alexandre Julliard
parent dd88237d3e
commit cf0c911305
2 changed files with 24 additions and 3 deletions

View File

@ -202,8 +202,18 @@ static HRESULT WINAPI OleInPlaceObjectWindowless_InPlaceDeactivate(IOleInPlaceOb
}
This->in_place_active = FALSE;
if(This->ipsite)
IOleInPlaceSite_OnInPlaceDeactivate(This->ipsite);
if(This->ipsite) {
IOleInPlaceSiteEx *ipsiteex;
HRESULT hres;
hres = IOleInPlaceSite_QueryInterface(This->ipsite, &IID_IOleInPlaceSiteEx, (void**)&ipsiteex);
if(SUCCEEDED(hres)) {
IOleInPlaceSiteEx_OnInPlaceDeactivateEx(ipsiteex, TRUE);
IOleInPlaceSiteEx_Release(ipsiteex);
}else {
IOleInPlaceSite_OnInPlaceDeactivate(This->ipsite);
}
}
return S_OK;
}

View File

@ -227,6 +227,7 @@ static HRESULT activate_window(HTMLDocument *This)
IOleInPlaceUIWindow *pIPWnd;
IOleInPlaceFrame *pIPFrame;
IOleCommandTarget *cmdtrg;
IOleInPlaceSiteEx *ipsiteex;
RECT posrect, cliprect;
OLEINPLACEFRAMEINFO frameinfo;
HWND parent_hwnd;
@ -289,7 +290,17 @@ static HRESULT activate_window(HTMLDocument *This)
}
This->in_place_active = TRUE;
hres = IOleInPlaceSite_OnInPlaceActivate(This->ipsite);
hres = IOleInPlaceSite_QueryInterface(This->ipsite, &IID_IOleInPlaceSiteEx, (void**)&ipsiteex);
if(SUCCEEDED(hres)) {
BOOL redraw = FALSE;
hres = IOleInPlaceSiteEx_OnInPlaceActivateEx(ipsiteex, &redraw, 0);
IOleInPlaceSiteEx_Release(ipsiteex);
if(redraw)
FIXME("unsupported redraw\n");
}else{
hres = IOleInPlaceSite_OnInPlaceActivate(This->ipsite);
}
if(FAILED(hres)) {
WARN("OnInPlaceActivate failed: %08x\n", hres);
This->in_place_active = FALSE;