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