Jacek Caban : mshtml: Added get_onmouseover implementations.

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


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

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

mshtml: Added get_onmouseover implementations.

---

 dlls/mshtml/htmldoc.c   |    6 ++++--
 dlls/mshtml/htmlelem.c  |    6 ++++--
 dlls/mshtml/htmlevent.c |   13 +++++++++++++
 dlls/mshtml/htmlevent.h |   11 +++++++++++
 4 files changed, 32 insertions(+), 4 deletions(-)

diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index b9cafe5..00bc68c 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -1081,8 +1081,10 @@ static HRESULT WINAPI HTMLDocument_put_onmouseover(IHTMLDocument2 *iface, VARIAN
 static HRESULT WINAPI HTMLDocument_get_onmouseover(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_MOUSEOVER, p);
 }
 
 static HRESULT WINAPI HTMLDocument_put_onreadystatechange(IHTMLDocument2 *iface, VARIANT v)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index 1052e6c..b53521a 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -510,8 +510,10 @@ static HRESULT WINAPI HTMLElement_put_onmouseover(IHTMLElement *iface, VARIANT v
 static HRESULT WINAPI HTMLElement_get_onmouseover(IHTMLElement *iface, VARIANT *p)
 {
     HTMLElement *This = HTMLELEM_THIS(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%p)\n", This, p);
+
+    return get_node_event(&This->node, EVENTID_MOUSEOVER, p);
 }
 
 static HRESULT WINAPI HTMLElement_put_onmousemove(IHTMLElement *iface, VARIANT v)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c
index 05c5296..4c8e2a2 100644
--- a/dlls/mshtml/htmlevent.c
+++ b/dlls/mshtml/htmlevent.c
@@ -471,6 +471,19 @@ HRESULT set_event_handler(event_target_t **event_target, HTMLDocument *doc, even
     return E_NOTIMPL;
 }
 
+HRESULT get_event_handler(event_target_t **event_target, eventid_t eid, VARIANT *var)
+{
+    if(*event_target && (*event_target)->event_table[eid]) {
+        V_VT(var) = VT_DISPATCH;
+        V_DISPATCH(var) = (*event_target)->event_table[eid];
+        IDispatch_AddRef(V_DISPATCH(var));
+    }else {
+        V_VT(var) = VT_NULL;
+    }
+
+    return S_OK;
+}
+
 void check_event_attr(HTMLDocument *doc, nsIDOMElement *nselem)
 {
     const PRUnichar *attr_value;
diff --git a/dlls/mshtml/htmlevent.h b/dlls/mshtml/htmlevent.h
index f4a99c3..b5b581b 100644
--- a/dlls/mshtml/htmlevent.h
+++ b/dlls/mshtml/htmlevent.h
@@ -30,13 +30,24 @@ void check_event_attr(HTMLDocument*,nsIDOMElement*);
 void release_event_target(event_target_t*);
 void fire_event(HTMLDocument*,eventid_t,nsIDOMNode*);
 HRESULT set_event_handler(event_target_t**,HTMLDocument*,eventid_t,VARIANT*);
+HRESULT get_event_handler(event_target_t**,eventid_t,VARIANT*);
 
 static inline HRESULT set_node_event(HTMLDOMNode *node, eventid_t eid, VARIANT *var)
 {
     return set_event_handler(&node->event_target, node->doc, eid, var);
 }
 
+static inline HRESULT get_node_event(HTMLDOMNode *node, eventid_t eid, VARIANT *var)
+{
+    return get_event_handler(&node->event_target, eid, var);
+}
+
 static inline HRESULT set_doc_event(HTMLDocument *doc, eventid_t eid, VARIANT *var)
 {
     return set_event_handler(&doc->event_target, doc, eid, var);
 }
+
+static inline HRESULT get_doc_event(HTMLDocument *doc, eventid_t eid, VARIANT *var)
+{
+    return get_event_handler(&doc->event_target, eid, var);
+}




More information about the wine-cvs mailing list