Jacek Caban : mshtml: Use IOleInPlaceSiteEx if available.
Module: wine Branch: master Commit: cf0c911305cba1cddd9725f16305364fd9baa3c0 URL: http://source.winehq.org/git/wine.git/?a=commit;h=cf0c911305cba1cddd9725f163... Author: Jacek Caban <jacek(a)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;
participants (1)
-
Alexandre Julliard