Module: wine Branch: master Commit: 14ad0a1a842eab9e7c53c3c46dc1164cac8cdc52 URL: http://source.winehq.org/git/wine.git/?a=commit;h=14ad0a1a842eab9e7c53c3c46d...
Author: Jacek Caban jacek@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)