Module: wine Branch: master Commit: bf34ca2d035e475d0822e772c50fefa882a27361 URL: http://source.winehq.org/git/wine.git/?a=commit;h=bf34ca2d035e475d0822e772c5...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Feb 28 03:48:07 2007 +0100
hhctrl.ocx: Fixed releasing web browser object.
---
dlls/hhctrl.ocx/webbrowser.c | 24 +++++++++++++++++------- 1 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/dlls/hhctrl.ocx/webbrowser.c b/dlls/hhctrl.ocx/webbrowser.c index dbbb41a..e0238b3 100644 --- a/dlls/hhctrl.ocx/webbrowser.c +++ b/dlls/hhctrl.ocx/webbrowser.c @@ -580,7 +580,7 @@ BOOL InitWebBrowser(HHInfo *info, HWND hwndParent) if (!iOleClientSiteImpl) return FALSE;
- iOleClientSiteImpl->ref = 0; + iOleClientSiteImpl->ref = 1; iOleClientSiteImpl->lpVtbl = &MyIOleClientSiteTable; iOleClientSiteImpl->lpvtblOleInPlaceSite = &MyIOleInPlaceSiteTable; iOleClientSiteImpl->lpvtblOleInPlaceFrame = &MyIOleInPlaceFrameTable; @@ -632,12 +632,7 @@ error:
void ReleaseWebBrowser(HHInfo *info) { - if (info->wb_object) - { - IOleObject_Close(info->wb_object, OLECLOSE_NOSAVE); - IOleObject_Release(info->wb_object); - info->wb_object = NULL; - } + HRESULT hres;
if (info->web_browser) { @@ -650,6 +645,21 @@ void ReleaseWebBrowser(HHInfo *info) IOleClientSite_Release(info->client_site); info->client_site = NULL; } + + if(info->wb_object) { + IOleInPlaceSite *inplace; + + hres = IOleObject_QueryInterface(info->wb_object, &IID_IOleInPlaceSite, (void**)&inplace); + if(SUCCEEDED(hres)) { + IOleInPlaceSite_OnInPlaceDeactivate(inplace); + IOleInPlaceSite_Release(inplace); + } + + IOleObject_SetClientSite(info->wb_object, NULL); + + IOleObject_Release(info->wb_object); + info->wb_object = NULL; + } }
void ResizeWebBrowser(HHInfo *info, DWORD dwWidth, DWORD dwHeight)