Jacek Caban : mshtml: Use IOleInPlaceSiteEx if available.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Jun 15 07:23:05 CDT 2007
Module: wine
Branch: master
Commit: cf0c911305cba1cddd9725f16305364fd9baa3c0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=cf0c911305cba1cddd9725f16305364fd9baa3c0
Author: Jacek Caban <jacek at 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;
More information about the wine-cvs
mailing list