Module: wine Branch: master Commit: cf0c911305cba1cddd9725f16305364fd9baa3c0 URL: http://source.winehq.org/git/wine.git/?a=commit;h=cf0c911305cba1cddd9725f163...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Jun 14 21:10:07 2007 +0200
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 d91e792..8fe6091 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 4c7cea9..cbd8c89 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;