Jacek Caban : mshtml: Added support for focusin event.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Apr 4 10:37:03 CDT 2016


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Apr  4 13:22:09 2016 +0200

mshtml: Added support for focusin event.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mshtml/htmlelem.c  |  2 +-
 dlls/mshtml/htmlevent.c | 14 +++++++++++++-
 dlls/mshtml/nsevents.c  | 10 ++++++++++
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index 4685fcc..cb4718d 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -3858,7 +3858,7 @@ static HRESULT WINAPI HTMLElement4_put_onfocusin(IHTMLElement4 *iface, VARIANT v
 {
     HTMLElement *This = impl_from_IHTMLElement4(iface);
 
-    FIXME("(%p)->(%s) semi-stub\n", This, debugstr_variant(&v));
+    TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
 
     return set_node_event(&This->node, EVENTID_FOCUSIN, &v);
 }
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c
index c274de5..c763462 100644
--- a/dlls/mshtml/htmlevent.c
+++ b/dlls/mshtml/htmlevent.c
@@ -1328,7 +1328,19 @@ HRESULT ensure_doc_nsevent_handler(HTMLDocumentNode *doc, eventid_t eid)
 
     TRACE("%s\n", debugstr_w(event_info[eid].name));
 
-    if(!doc->nsdoc || doc->event_vector[eid] || !(event_info[eid].flags & (EVENT_DEFAULTLISTENER|EVENT_BIND_TO_BODY)))
+    if(!doc->nsdoc)
+        return S_OK;
+
+    switch(eid) {
+    case EVENTID_FOCUSIN:
+        doc->event_vector[eid] = TRUE;
+        eid = EVENTID_FOCUS;
+        break;
+    default:
+        break;
+    }
+
+    if(doc->event_vector[eid] || !(event_info[eid].flags & (EVENT_DEFAULTLISTENER|EVENT_BIND_TO_BODY)))
         return S_OK;
 
     if(event_info[eid].flags & EVENT_BIND_TO_BODY) {
diff --git a/dlls/mshtml/nsevents.c b/dlls/mshtml/nsevents.c
index 3947c1c..923355c 100644
--- a/dlls/mshtml/nsevents.c
+++ b/dlls/mshtml/nsevents.c
@@ -337,6 +337,16 @@ static nsresult NSAPI handle_htmlevent(nsIDOMEventListener *iface, nsIDOMEvent *
     if(FAILED(hres))
         return NS_OK;
 
+    /* If we fine need for more special cases here, we may consider handling it in a more generic way. */
+    switch(eid) {
+    case EVENTID_FOCUS:
+        if(doc->event_vector[EVENTID_FOCUSIN])
+            fire_event(doc, EVENTID_FOCUSIN, TRUE, node, NULL, NULL);
+        break;
+    default:
+        break;
+    }
+
     fire_event(doc, eid, TRUE, node, event, NULL);
 
     node_release(node);




More information about the wine-cvs mailing list