Jacek Caban : mshtml: Store IWebBrowserApp reference in HTMLDocumentObj.

Alexandre Julliard julliard at winehq.org
Mon Apr 15 13:09:41 CDT 2013


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

Author: Jacek Caban <jacek at 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);




More information about the wine-cvs mailing list