From 14ad0a1a842eab9e7c53c3c46dc1164cac8cdc52 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Wed, 22 May 2013 16:08:40 +0200 Subject: [PATCH] ieframe: Use IOleObject::DoVerb if IHlink interface is not available. --- dlls/ieframe/dochost.c | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/dlls/ieframe/dochost.c b/dlls/ieframe/dochost.c index c717d8bf949..76b8950421e 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)