Module: wine Branch: master Commit: 44223acceb78c1c6cbe056d67d8182e1dbf9254e URL: http://source.winehq.org/git/wine.git/?a=commit;h=44223acceb78c1c6cbe056d67d...
Author: Jacek Caban jacek@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) {