Module: wine Branch: master Commit: 8f323e9b91656f73111f549fed83d83f715d1c74 URL: http://source.winehq.org/git/wine.git/?a=commit;h=8f323e9b91656f73111f549fed...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Apr 15 17:40:43 2013 +0200
mshtml: Store IWebBrowserApp reference in HTMLDocumentObj.
---
dlls/mshtml/mshtml_private.h | 2 +- dlls/mshtml/mutation.c | 2 +- dlls/mshtml/navigate.c | 2 +- dlls/mshtml/oleobj.c | 13 +++++++------ dlls/mshtml/persist.c | 2 +- 5 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index d0bb68e..f141bdf 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -544,6 +544,7 @@ struct HTMLDocumentObj { IOleInPlaceUIWindow *ip_window; IAdviseSink *view_sink; IDocObjectService *doc_object_service; + IUnknown *webbrowser;
DOCHOSTUIINFO hostinfo;
@@ -557,7 +558,6 @@ struct HTMLDocumentObj { BOOL ui_active; BOOL window_active; BOOL hostui_setup; - BOOL is_webbrowser; BOOL container_locked; BOOL focus; BOOL has_popup; diff --git a/dlls/mshtml/mutation.c b/dlls/mshtml/mutation.c index b585b68..3bae9f7 100644 --- a/dlls/mshtml/mutation.c +++ b/dlls/mshtml/mutation.c @@ -268,7 +268,7 @@ static void parse_complete(HTMLDocumentObj *doc) call_property_onchanged(&doc->basedoc.cp_container, 1005); call_explorer_69(doc);
- if(doc->is_webbrowser && doc->usermode != EDITMODE && !(doc->basedoc.window->load_flags & BINDING_REFRESH)) + if(doc->webbrowser && doc->usermode != EDITMODE && !(doc->basedoc.window->load_flags & BINDING_REFRESH)) IDocObjectService_FireNavigateComplete2(doc->doc_object_service, &doc->basedoc.window->base.IHTMLWindow2_iface, 0);
/* FIXME: IE7 calls EnableModelless(TRUE), EnableModelless(FALSE) and sets interactive state here */ diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c index d99d0aa..5661308 100644 --- a/dlls/mshtml/navigate.c +++ b/dlls/mshtml/navigate.c @@ -2268,7 +2268,7 @@ static HRESULT navigate_uri(HTMLOuterWindow *window, IUri *uri, const WCHAR *dis
TRACE("%s\n", debugstr_w(display_uri));
- if(window->doc_obj && window->doc_obj->is_webbrowser && window == window->doc_obj->basedoc.window) { + if(window->doc_obj && window->doc_obj->webbrowser && window == window->doc_obj->basedoc.window) { if(!(flags & BINDING_REFRESH)) { BOOL cancel = FALSE;
diff --git a/dlls/mshtml/oleobj.c b/dlls/mshtml/oleobj.c index d62c306..c463ebe 100644 --- a/dlls/mshtml/oleobj.c +++ b/dlls/mshtml/oleobj.c @@ -246,8 +246,12 @@ static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite This->doc_obj->doc_object_service = NULL; }
+ if(This->doc_obj->webbrowser) { + IUnknown_Release(This->doc_obj->webbrowser); + This->doc_obj->webbrowser = NULL; + } + memset(&This->doc_obj->hostinfo, 0, sizeof(DOCHOSTUIINFO)); - This->doc_obj->is_webbrowser = FALSE;
if(!pClientSite) return S_OK; @@ -348,11 +352,8 @@ static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite * embedder supports IWebBrowserApp. */ hres = do_query_service((IUnknown*)pClientSite, &IID_IWebBrowserApp, &IID_IWebBrowser2, (void**)&wb); - if(SUCCEEDED(hres)) { - This->doc_obj->is_webbrowser = TRUE; - IWebBrowser2_Release(wb); - } - + if(SUCCEEDED(hres)) + This->doc_obj->webbrowser = (IUnknown*)wb; IBrowserService_Release(browser_service); } } diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c index b2eefd3..0038942 100644 --- a/dlls/mshtml/persist.c +++ b/dlls/mshtml/persist.c @@ -77,7 +77,7 @@ static void notify_travellog_update(HTMLDocumentObj *doc) IOleCommandTarget *cmdtrg; HRESULT hres;
- if(!doc->is_webbrowser) + if(!doc->webbrowser) return;
hres = IOleClientSite_QueryInterface(doc->client, &IID_IOleCommandTarget, (void**)&cmdtrg);