From cf0c911305cba1cddd9725f16305364fd9baa3c0 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 14 Jun 2007 21:10:07 +0200 Subject: [PATCH] mshtml: Use IOleInPlaceSiteEx if available. --- dlls/mshtml/olewnd.c | 14 ++++++++++++-- dlls/mshtml/view.c | 13 ++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/dlls/mshtml/olewnd.c b/dlls/mshtml/olewnd.c index d91e7924596..8fe60918ddf 100644 --- a/dlls/mshtml/olewnd.c +++ b/dlls/mshtml/olewnd.c @@ -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; } diff --git a/dlls/mshtml/view.c b/dlls/mshtml/view.c index 4c7cea9a78a..cbd8c8966f8 100644 --- a/dlls/mshtml/view.c +++ b/dlls/mshtml/view.c @@ -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;