Jacek Caban : mshtml: Added support for BSCallback::QueryService( IID_IWindowForBindingUI).

Alexandre Julliard julliard at winehq.org
Wed May 30 13:18:53 CDT 2012


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed May 30 15:49:28 2012 +0200

mshtml: Added support for BSCallback::QueryService(IID_IWindowForBindingUI).

---

 dlls/mshtml/navigate.c |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c
index 3697070..1979af3 100644
--- a/dlls/mshtml/navigate.c
+++ b/dlls/mshtml/navigate.c
@@ -582,7 +582,11 @@ static HRESULT WINAPI BSCServiceProvider_QueryService(IServiceProvider *iface,
         REFGUID guidService, REFIID riid, void **ppv)
 {
     BSCallback *This = impl_from_IServiceProvider(iface);
+
     TRACE("(%p)->(%s %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv);
+
+    if(This->doc && IsEqualGUID(guidService, &IID_IWindowForBindingUI))
+        return IServiceProvider_QueryService(&This->doc->basedoc.IServiceProvider_iface, guidService, riid, ppv);
     return E_NOINTERFACE;
 }
 
@@ -721,6 +725,8 @@ HRESULT start_binding(HTMLWindow *window, HTMLDocumentNode *doc, BSCallback *bsc
     TRACE("(%p %p %p %p)\n", window, doc, bscallback, bctx);
 
     bscallback->doc = doc;
+    if(!doc && window)
+        bscallback->doc = window->doc;
 
     /* NOTE: IE7 calls IsSystemMoniker here*/
 
@@ -992,8 +998,11 @@ static HRESULT on_start_nsrequest(nsChannelBSC *This)
         list_remove(&This->bsc.entry);
         list_init(&This->bsc.entry);
         update_window_doc(This->window);
-        if(This->window->doc != This->bsc.doc)
+        if(This->window->doc != This->bsc.doc) {
+            if(This->bsc.doc)
+                list_remove(&This->bsc.entry);
             This->bsc.doc = This->window->doc;
+        }
         list_add_head(&This->bsc.doc->bindings, &This->bsc.entry);
         if(This->window->readystate != READYSTATE_LOADING)
             set_ready_state(This->window, READYSTATE_LOADING);




More information about the wine-cvs mailing list