Jacek Caban : mshtml: Always set onclick event handler during document initialization.

Alexandre Julliard julliard at winehq.org
Tue Aug 2 14:18:26 CDT 2011


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Aug  2 11:08:48 2011 +0200

mshtml: Always set onclick event handler during document initialization.

---

 dlls/mshtml/htmlevent.c |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c
index c0a998b..9ab07a4 100644
--- a/dlls/mshtml/htmlevent.c
+++ b/dlls/mshtml/htmlevent.c
@@ -141,6 +141,7 @@ typedef struct {
 #define EVENT_FORWARDBODY        0x0004
 #define EVENT_NODEHANDLER        0x0008
 #define EVENT_CANCELABLE         0x0010
+#define EVENT_SETONINIT          0x0020
 
 static const event_info_t event_info[] = {
     {beforeunloadW,      onbeforeunloadW,      EVENTT_NONE,   DISPID_EVMETH_ONBEFOREUNLOAD,
@@ -150,7 +151,7 @@ static const event_info_t event_info[] = {
     {changeW,            onchangeW,            EVENTT_HTML,   DISPID_EVMETH_ONCHANGE,
         EVENT_DEFAULTLISTENER|EVENT_BUBBLE},
     {clickW,             onclickW,             EVENTT_MOUSE,  DISPID_EVMETH_ONCLICK,
-        EVENT_DEFAULTLISTENER|EVENT_BUBBLE|EVENT_CANCELABLE},
+        EVENT_DEFAULTLISTENER|EVENT_BUBBLE|EVENT_CANCELABLE|EVENT_SETONINIT},
     {contextmenuW,       oncontextmenuW,       EVENTT_MOUSE,  DISPID_EVMETH_ONCONTEXTMENU,
         EVENT_BUBBLE|EVENT_CANCELABLE},
     {dblclickW,          ondblclickW,          EVENTT_MOUSE,  DISPID_EVMETH_ONDBLCLICK,
@@ -1371,11 +1372,23 @@ void check_event_attr(HTMLDocumentNode *doc, nsIDOMElement *nselem)
 
 HRESULT doc_init_events(HTMLDocumentNode *doc)
 {
+    unsigned i;
+    HRESULT hres;
+
     doc->event_vector = heap_alloc_zero(EVENTID_LAST*sizeof(BOOL));
     if(!doc->event_vector)
         return E_OUTOFMEMORY;
 
     init_nsevents(doc);
+
+    for(i=0; i < EVENTID_LAST; i++) {
+        if(event_info[i].flags & EVENT_SETONINIT) {
+            hres = ensure_nsevent_handler(doc, NULL, NULL, i);
+            if(FAILED(hres))
+                return hres;
+        }
+    }
+
     return S_OK;
 }
 




More information about the wine-cvs mailing list