Jacek Caban : mshtml: Added document keydown, keyup, dragstart and selectstart event implementation.

Alexandre Julliard julliard at winehq.org
Mon Oct 13 06:37:46 CDT 2008


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Oct 10 15:49:25 2008 -0500

mshtml: Added document keydown, keyup, dragstart and selectstart event implementation.

---

 dlls/mshtml/htmldoc.c   |   48 +++++++++++++++++++++++++++++++---------------
 dlls/mshtml/htmlevent.c |   10 ++++++++-
 dlls/mshtml/htmlevent.h |    2 +
 3 files changed, 43 insertions(+), 17 deletions(-)

diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index 7637c29..fcabaa1 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -1011,29 +1011,37 @@ static HRESULT WINAPI HTMLDocument_get_ondblclick(IHTMLDocument2 *iface, VARIANT
 static HRESULT WINAPI HTMLDocument_put_onkeyup(IHTMLDocument2 *iface, VARIANT v)
 {
     HTMLDocument *This = HTMLDOC_THIS(iface);
-    FIXME("(%p)\n", This);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
+
+    return set_doc_event(This, EVENTID_KEYUP, &v);
 }
 
 static HRESULT WINAPI HTMLDocument_get_onkeyup(IHTMLDocument2 *iface, VARIANT *p)
 {
     HTMLDocument *This = HTMLDOC_THIS(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%p)\n", This, p);
+
+    return get_doc_event(This, EVENTID_KEYUP, p);
 }
 
 static HRESULT WINAPI HTMLDocument_put_onkeydown(IHTMLDocument2 *iface, VARIANT v)
 {
     HTMLDocument *This = HTMLDOC_THIS(iface);
-    FIXME("(%p)\n", This);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
+
+    return set_doc_event(This, EVENTID_KEYDOWN, &v);
 }
 
 static HRESULT WINAPI HTMLDocument_get_onkeydown(IHTMLDocument2 *iface, VARIANT *p)
 {
     HTMLDocument *This = HTMLDOC_THIS(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%p)\n", This, p);
+
+    return get_doc_event(This, EVENTID_KEYDOWN, p);
 }
 
 static HRESULT WINAPI HTMLDocument_put_onkeypress(IHTMLDocument2 *iface, VARIANT v)
@@ -1183,29 +1191,37 @@ static HRESULT WINAPI HTMLDocument_get_onrowenter(IHTMLDocument2 *iface, VARIANT
 static HRESULT WINAPI HTMLDocument_put_ondragstart(IHTMLDocument2 *iface, VARIANT v)
 {
     HTMLDocument *This = HTMLDOC_THIS(iface);
-    FIXME("(%p)\n", This);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
+
+    return set_doc_event(This, EVENTID_DRAGSTART, &v);
 }
 
 static HRESULT WINAPI HTMLDocument_get_ondragstart(IHTMLDocument2 *iface, VARIANT *p)
 {
     HTMLDocument *This = HTMLDOC_THIS(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%p)\n", This, p);
+
+    return get_doc_event(This, EVENTID_DRAGSTART, p);
 }
 
 static HRESULT WINAPI HTMLDocument_put_onselectstart(IHTMLDocument2 *iface, VARIANT v)
 {
     HTMLDocument *This = HTMLDOC_THIS(iface);
-    FIXME("(%p)\n", This);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
+
+    return set_doc_event(This, EVENTID_SELECTSTART, &v);
 }
 
 static HRESULT WINAPI HTMLDocument_get_onselectstart(IHTMLDocument2 *iface, VARIANT *p)
 {
     HTMLDocument *This = HTMLDOC_THIS(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%p)\n", This, p);
+
+    return get_doc_event(This, EVENTID_SELECTSTART, p);
 }
 
 static HRESULT WINAPI HTMLDocument_elementFromPoint(IHTMLDocument2 *iface, long x, long y,
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c
index 38b7d5d..c12bc89 100644
--- a/dlls/mshtml/htmlevent.c
+++ b/dlls/mshtml/htmlevent.c
@@ -48,6 +48,9 @@ static const WCHAR onclickW[] = {'o','n','c','l','i','c','k',0};
 static const WCHAR dragW[] = {'d','r','a','g',0};
 static const WCHAR ondragW[] = {'o','n','d','r','a','g',0};
 
+static const WCHAR dragstartW[] = {'d','r','a','g','s','t','a','r','t',0};
+static const WCHAR ondragstartW[] = {'o','n','d','r','a','g','s','t','a','r','t',0};
+
 static const WCHAR focusW[] = {'f','o','c','u','s',0};
 static const WCHAR onfocusW[] = {'o','n','f','o','c','u','s',0};
 
@@ -72,6 +75,9 @@ static const WCHAR onmouseupW[] = {'o','n','m','o','u','s','e','u','p',0};
 static const WCHAR pasteW[] = {'p','a','s','t','e',0};
 static const WCHAR onpasteW[] = {'o','n','p','a','s','t','e',0};
 
+static const WCHAR selectstartW[] = {'s','e','l','e','c','t','s','t','a','r','t',0};
+static const WCHAR onselectstartW[] = {'o','n','s','e','l','e','c','t','s','t','a','r','t',0};
+
 typedef struct {
     LPCWSTR name;
     LPCWSTR attr_name;
@@ -86,6 +92,7 @@ static const event_info_t event_info[] = {
     {changeW,       onchangeW,       EVENT_DEFAULTLISTENER|EVENT_BUBBLE},
     {clickW,        onclickW,        EVENT_DEFAULTLISTENER|EVENT_BUBBLE},
     {dragW,         ondragW,         0},
+    {dragstartW,    ondragstartW,    0},
     {focusW,        onfocusW,        EVENT_DEFAULTLISTENER},
     {keydownW,      onkeydownW,      EVENT_DEFAULTLISTENER|EVENT_BUBBLE},
     {keyupW,        onkeyupW,        EVENT_DEFAULTLISTENER|EVENT_BUBBLE},
@@ -93,7 +100,8 @@ static const event_info_t event_info[] = {
     {mousedownW,    onmousedownW,    EVENT_DEFAULTLISTENER|EVENT_BUBBLE},
     {mouseoverW,    onmouseoverW,    EVENT_DEFAULTLISTENER|EVENT_BUBBLE},
     {mouseupW,      onmouseupW,      EVENT_DEFAULTLISTENER|EVENT_BUBBLE},
-    {pasteW,        onpasteW,        0}
+    {pasteW,        onpasteW,        0},
+    {selectstartW,  onselectstartW,  0}
 };
 
 eventid_t str_to_eid(LPCWSTR str)
diff --git a/dlls/mshtml/htmlevent.h b/dlls/mshtml/htmlevent.h
index a5596f4..9b9be58 100644
--- a/dlls/mshtml/htmlevent.h
+++ b/dlls/mshtml/htmlevent.h
@@ -21,6 +21,7 @@ typedef enum {
     EVENTID_CHANGE,
     EVENTID_CLICK,
     EVENTID_DRAG,
+    EVENTID_DRAGSTART,
     EVENTID_FOCUS,
     EVENTID_KEYDOWN,
     EVENTID_KEYUP,
@@ -29,6 +30,7 @@ typedef enum {
     EVENTID_MOUSEOVER,
     EVENTID_MOUSEUP,
     EVENTID_PASTE,
+    EVENTID_SELECTSTART,
     EVENTID_LAST
 } eventid_t;
 




More information about the wine-cvs mailing list