Jacek Caban : ieframe: Use IOleObject:: DoVerb if IHlink interface is not available.

Alexandre Julliard julliard at winehq.org
Wed May 22 13:46:59 CDT 2013


Module: wine
Branch: master
Commit: 14ad0a1a842eab9e7c53c3c46dc1164cac8cdc52
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=14ad0a1a842eab9e7c53c3c46dc1164cac8cdc52

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed May 22 16:08:40 2013 +0200

ieframe: Use IOleObject::DoVerb if IHlink interface is not available.

---

 dlls/ieframe/dochost.c |   30 ++++++++++++++++++++++--------
 1 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/dlls/ieframe/dochost.c b/dlls/ieframe/dochost.c
index c717d8b..76b8950 100644
--- a/dlls/ieframe/dochost.c
+++ b/dlls/ieframe/dochost.c
@@ -121,15 +121,29 @@ static void object_available(DocHost *This)
     }
 
     hres = IUnknown_QueryInterface(This->document, &IID_IHlinkTarget, (void**)&hlink);
-    if(FAILED(hres)) {
-        FIXME("Could not get IHlinkTarget interface\n");
-        return;
-    }
+    if(SUCCEEDED(hres)) {
+        hres = IHlinkTarget_Navigate(hlink, 0, NULL);
+        IHlinkTarget_Release(hlink);
+        if(FAILED(hres))
+            FIXME("Navigate failed\n");
+    }else {
+        IOleObject *ole_object;
+        RECT rect;
 
-    hres = IHlinkTarget_Navigate(hlink, 0, NULL);
-    IHlinkTarget_Release(hlink);
-    if(FAILED(hres))
-        FIXME("Navigate failed\n");
+        TRACE("No IHlink iface\n");
+
+        hres = IUnknown_QueryInterface(This->document, &IID_IOleObject, (void**)&ole_object);
+        if(FAILED(hres)) {
+            FIXME("Could not get IOleObject iface: %08x\n", hres);
+            return;
+        }
+
+        GetClientRect(This->hwnd, &rect);
+        hres = IOleObject_DoVerb(ole_object, OLEIVERB_SHOW, NULL, &This->IOleClientSite_iface, -1, This->hwnd, &rect);
+        IOleObject_Release(ole_object);
+        if(FAILED(hres))
+            FIXME("DoVerb failed: %08x\n", hres);
+    }
 }
 
 static HRESULT get_doc_ready_state(DocHost *This, READYSTATE *ret)




More information about the wine-cvs mailing list