shdocvw:WebBrowser_get_Busy implementation

Jared jared151 at gmail.com
Thu Mar 6 20:51:49 CST 2008


Implements WebBrowser_get_Busy function defined in Bugzilla Bug #4924.
This is a low impact change that fixes Auto-Update features in programs
like Shot-Online.
dlls/shdocvw/dochost.c:
navigate_complete function resets busy bool to false.
dlls/shdocvw/navigate.c:
on_before_navigate2 function sets busy bool to true.
dlls/shdocvw/shdocvw.h:
variant_bool busy was added to DocHost structure.
dlls/shdocvw/webbrowser.c:
WebBrowser_get_Busy function implemented using DocHost busy variable.

diff --git a/dlls/shdocvw/dochost.c b/dlls/shdocvw/dochost.c
index c3a22f4..908503c 100644
--- a/dlls/shdocvw/dochost.c
+++ b/dlls/shdocvw/dochost.c
@@ -78,6 +78,7 @@ static void navigate_complete(DocHost *This)
     SysFreeString(V_BSTR(&url));
     if(disp)
         IDispatch_Release(disp);
+    This->busy = VARIANT_FALSE;
 }
 
 void object_available(DocHost *This)
diff --git a/dlls/shdocvw/navigate.c b/dlls/shdocvw/navigate.c
index 7e8606f..7ca0b0f 100644
--- a/dlls/shdocvw/navigate.c
+++ b/dlls/shdocvw/navigate.c
@@ -427,6 +427,8 @@ static void on_before_navigate2(DocHost *This,
LPCWSTR url, const BYTE *post_dat
     dispparams.rgdispidNamedArgs = NULL;
     dispparams.rgvarg = params;
 
+    This->busy = VARIANT_TRUE;
+
     V_VT(params) = VT_BOOL|VT_BYREF;
     V_BOOLREF(params) = cancel;
 
diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h
index af647a1..1257b76 100644
--- a/dlls/shdocvw/shdocvw.h
+++ b/dlls/shdocvw/shdocvw.h
@@ -99,6 +99,7 @@ struct DocHost {
 
     VARIANT_BOOL silent;
     VARIANT_BOOL offline;
+    VARIANT_BOOL busy;
 
     ConnectionPointContainer cps;
 };
diff --git a/dlls/shdocvw/webbrowser.c b/dlls/shdocvw/webbrowser.c
index 95586f0..71324e5 100644
--- a/dlls/shdocvw/webbrowser.c
+++ b/dlls/shdocvw/webbrowser.c
@@ -462,8 +462,11 @@ static HRESULT WINAPI
WebBrowser_get_LocationURL(IWebBrowser2 *iface, BSTR *Loca
 static HRESULT WINAPI WebBrowser_get_Busy(IWebBrowser2 *iface,
VARIANT_BOOL *pBool)
 {
     WebBrowser *This = WEBBROWSER_THIS(iface);
-    FIXME("(%p)->(%p)\n", This, pBool);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%p)\n", This, pBool);
+
+    *pBool = This->doc_host.busy;
+    return S_OK;
 }
 
 static HRESULT WINAPI WebBrowser_Quit(IWebBrowser2 *iface)




More information about the wine-patches mailing list