Jacek Caban : mshtml: Do more initialization in create_plugin_host.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Dec 11 15:22:15 CST 2014


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Dec 11 16:26:09 2014 +0100

mshtml: Do more initialization in create_plugin_host.

---

 dlls/mshtml/pluginhost.c | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/dlls/mshtml/pluginhost.c b/dlls/mshtml/pluginhost.c
index 8e12865..b6fcf72 100644
--- a/dlls/mshtml/pluginhost.c
+++ b/dlls/mshtml/pluginhost.c
@@ -182,7 +182,7 @@ static void load_plugin(PluginHost *host)
     FIXME("No IPersistPropertyBag iface\n");
 }
 
-static void activate_plugin(PluginHost *host)
+static void initialize_plugin_object(PluginHost *host)
 {
     IClientSecurity *client_security;
     IQuickActivate *quick_activate;
@@ -191,12 +191,8 @@ static void activate_plugin(PluginHost *host)
     IViewObjectEx *view_obj;
     IDispatchEx *dispex;
     IDispatch *disp;
-    RECT rect;
     HRESULT hres;
 
-    if(!host->plugin_unk)
-        return;
-
     /* Note native calls QI on plugin for an undocumented IID and CLSID_HTMLDocument */
 
     /* FIXME: call FreezeEvents(TRUE) */
@@ -281,6 +277,13 @@ static void activate_plugin(PluginHost *host)
         FIXME("Use IOleCommandTarget\n");
         IOleCommandTarget_Release(cmdtrg);
     }
+}
+
+static void embed_plugin_object(PluginHost *host)
+{
+    IOleObject *ole_obj;
+    RECT rect;
+    HRESULT hres;
 
     hres = IUnknown_QueryInterface(host->plugin_unk, &IID_IOleObject, (void**)&ole_obj);
     if(FAILED(hres)) {
@@ -288,13 +291,11 @@ static void activate_plugin(PluginHost *host)
         return;
     }
 
-    if(ole_obj) {
-        get_pos_rect(host, &rect);
-        hres = IOleObject_DoVerb(ole_obj, OLEIVERB_INPLACEACTIVATE, NULL, &host->IOleClientSite_iface, 0, host->hwnd, &rect);
-        IOleObject_Release(ole_obj);
-        if(FAILED(hres))
-            WARN("DoVerb failed: %08x\n", hres);
-    }
+    get_pos_rect(host, &rect);
+    hres = IOleObject_DoVerb(ole_obj, OLEIVERB_INPLACEACTIVATE, NULL, &host->IOleClientSite_iface, 0, host->hwnd, &rect);
+    IOleObject_Release(ole_obj);
+    if(FAILED(hres))
+        WARN("DoVerb failed: %08x\n", hres);
 
     if(host->ip_object) {
         HWND hwnd;
@@ -323,7 +324,7 @@ void update_plugin_window(PluginHost *host, HWND hwnd, const RECT *rect)
 
     if(!host->hwnd) {
         host->hwnd = hwnd;
-        activate_plugin(host);
+        embed_plugin_object(host);
     }
 
     if(rect_changed && host->ip_object)
@@ -2103,5 +2104,8 @@ HRESULT create_plugin_host(HTMLDocumentNode *doc, HTMLPluginContainer *container
 
     container->plugin_host = host;
     host->element = container;
+
+    initialize_plugin_object(host);
+
     return S_OK;
 }




More information about the wine-cvs mailing list