Commit c7496aee authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

mshtml: Added IHTMLWindow2::onbeforeunload property implementation.

parent b481b092
...@@ -42,6 +42,9 @@ struct event_target_t { ...@@ -42,6 +42,9 @@ struct event_target_t {
handler_vector_t *event_table[EVENTID_LAST]; handler_vector_t *event_table[EVENTID_LAST];
}; };
static const WCHAR beforeunloadW[] = {'b','e','f','o','r','e','u','n','l','o','a','d',0};
static const WCHAR onbeforeunloadW[] = {'o','n','b','e','f','o','r','e','u','n','l','o','a','d',0};
static const WCHAR blurW[] = {'b','l','u','r',0}; static const WCHAR blurW[] = {'b','l','u','r',0};
static const WCHAR onblurW[] = {'o','n','b','l','u','r',0}; static const WCHAR onblurW[] = {'o','n','b','l','u','r',0};
...@@ -97,6 +100,7 @@ typedef struct { ...@@ -97,6 +100,7 @@ typedef struct {
#define EVENT_BUBBLE 0x0002 #define EVENT_BUBBLE 0x0002
static const event_info_t event_info[] = { static const event_info_t event_info[] = {
{beforeunloadW, onbeforeunloadW, EVENT_DEFAULTLISTENER},
{blurW, onblurW, EVENT_DEFAULTLISTENER}, {blurW, onblurW, EVENT_DEFAULTLISTENER},
{changeW, onchangeW, EVENT_DEFAULTLISTENER|EVENT_BUBBLE}, {changeW, onchangeW, EVENT_DEFAULTLISTENER|EVENT_BUBBLE},
{clickW, onclickW, EVENT_DEFAULTLISTENER|EVENT_BUBBLE}, {clickW, onclickW, EVENT_DEFAULTLISTENER|EVENT_BUBBLE},
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
*/ */
typedef enum { typedef enum {
EVENTID_BEFOREUNLOAD,
EVENTID_BLUR, EVENTID_BLUR,
EVENTID_CHANGE, EVENTID_CHANGE,
EVENTID_CLICK, EVENTID_CLICK,
...@@ -67,3 +68,13 @@ static inline HRESULT get_doc_event(HTMLDocument *doc, eventid_t eid, VARIANT *v ...@@ -67,3 +68,13 @@ static inline HRESULT get_doc_event(HTMLDocument *doc, eventid_t eid, VARIANT *v
{ {
return get_event_handler(&doc->event_target, eid, var); return get_event_handler(&doc->event_target, eid, var);
} }
static inline HRESULT set_window_event(HTMLWindow *window, eventid_t eid, VARIANT *var)
{
return set_event_handler(&window->event_target, window->doc, eid, var);
}
static inline HRESULT get_window_event(HTMLWindow *window, eventid_t eid, VARIANT *var)
{
return get_event_handler(&window->event_target, eid, var);
}
...@@ -512,15 +512,19 @@ static HRESULT WINAPI HTMLWindow2_get_onload(IHTMLWindow2 *iface, VARIANT *p) ...@@ -512,15 +512,19 @@ static HRESULT WINAPI HTMLWindow2_get_onload(IHTMLWindow2 *iface, VARIANT *p)
static HRESULT WINAPI HTMLWindow2_put_onbeforeunload(IHTMLWindow2 *iface, VARIANT v) static HRESULT WINAPI HTMLWindow2_put_onbeforeunload(IHTMLWindow2 *iface, VARIANT v)
{ {
HTMLWindow *This = HTMLWINDOW2_THIS(iface); HTMLWindow *This = HTMLWINDOW2_THIS(iface);
FIXME("(%p)->(v(%d))\n", This, V_VT(&v));
return E_NOTIMPL; TRACE("(%p)->(v(%d))\n", This, V_VT(&v));
return set_window_event(This, EVENTID_BEFOREUNLOAD, &v);
} }
static HRESULT WINAPI HTMLWindow2_get_onbeforeunload(IHTMLWindow2 *iface, VARIANT *p) static HRESULT WINAPI HTMLWindow2_get_onbeforeunload(IHTMLWindow2 *iface, VARIANT *p)
{ {
HTMLWindow *This = HTMLWINDOW2_THIS(iface); HTMLWindow *This = HTMLWINDOW2_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL; TRACE("(%p)->(%p)\n", This, p);
return get_window_event(This, EVENTID_BEFOREUNLOAD, p);
} }
static HRESULT WINAPI HTMLWindow2_put_onunload(IHTMLWindow2 *iface, VARIANT v) static HRESULT WINAPI HTMLWindow2_put_onunload(IHTMLWindow2 *iface, VARIANT v)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment