Jacek Caban : mshtml: Added VT_BSTR support to IHTMLWindow3::setTimeout.
Alexandre Julliard
julliard at winehq.org
Mon Jun 30 08:26:36 CDT 2008
Module: wine
Branch: master
Commit: 44223acceb78c1c6cbe056d67d8182e1dbf9254e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=44223acceb78c1c6cbe056d67d8182e1dbf9254e
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Jun 27 14:10:04 2008 -0500
mshtml: Added VT_BSTR support to IHTMLWindow3::setTimeout.
Resend without test depending on JScript.
---
dlls/mshtml/htmlwindow.c | 35 +++++++++++++++++++++++++++--------
1 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c
index 6e1d092..32e0689 100644
--- a/dlls/mshtml/htmlwindow.c
+++ b/dlls/mshtml/htmlwindow.c
@@ -841,25 +841,44 @@ static HRESULT WINAPI HTMLWindow3_detachEvent(IHTMLWindow3 *iface, BSTR event, I
return E_NOTIMPL;
}
-static HRESULT WINAPI HTMLWindow3_setTimeout(IHTMLWindow3 *iface, VARIANT *expression, long msec,
- VARIANT *language, long *timerID)
+static HRESULT window_set_timer(HTMLWindow *This, VARIANT *expr, long msec, VARIANT *language, long *timer_id)
{
- HTMLWindow *This = HTMLWINDOW3_THIS(iface);
-
- TRACE("(%p)->(%p(%d) %ld %p %p)\n", This, expression, V_VT(expression), msec, language, timerID);
+ IDispatch *disp = NULL;
- switch(V_VT(expression)) {
+ switch(V_VT(expr)) {
case VT_DISPATCH:
- *timerID = set_task_timer(This->doc, msec, V_DISPATCH(expression));
+ disp = V_DISPATCH(expr);
+ IDispatch_AddRef(disp);
+ break;
+
+ case VT_BSTR:
+ disp = script_parse_event(This->doc, V_BSTR(expr));
break;
default:
- FIXME("unimplemented vt=%d\n", V_VT(expression));
+ FIXME("unimplemented vt=%d\n", V_VT(expr));
+ return E_NOTIMPL;
}
+ if(!disp)
+ return E_FAIL;
+
+ *timer_id = set_task_timer(This->doc, msec, disp);
+ IDispatch_Release(disp);
+
return S_OK;
}
+static HRESULT WINAPI HTMLWindow3_setTimeout(IHTMLWindow3 *iface, VARIANT *expression, long msec,
+ VARIANT *language, long *timerID)
+{
+ HTMLWindow *This = HTMLWINDOW3_THIS(iface);
+
+ TRACE("(%p)->(%p(%d) %ld %p %p)\n", This, expression, V_VT(expression), msec, language, timerID);
+
+ return window_set_timer(This, expression, msec, language, timerID);
+}
+
static HRESULT WINAPI HTMLWindow3_setInterval(IHTMLWindow3 *iface, VARIANT *expression, long msec,
VARIANT *language, long *timerID)
{
More information about the wine-cvs
mailing list