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