Jacek Caban : mshtml: Correctly handle VT_EMPTY in set_event_handler_disp in standard compliant mode.

Alexandre Julliard julliard at winehq.org
Fri Sep 29 13:32:38 CDT 2017


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Sep 29 17:14:42 2017 +0200

mshtml: Correctly handle VT_EMPTY in set_event_handler_disp in standard compliant mode.

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

---

 dlls/mshtml/htmlevent.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c
index 4372066..ebb901c 100644
--- a/dlls/mshtml/htmlevent.c
+++ b/dlls/mshtml/htmlevent.c
@@ -185,6 +185,8 @@ static const event_info_t event_info[] = {
         EVENT_FIXME}
 };
 
+static BOOL use_event_quirks(EventTarget*);
+
 eventid_t str_to_eid(LPCWSTR str)
 {
     int i;
@@ -953,6 +955,9 @@ void call_event_handlers(HTMLDocumentNode *doc, HTMLEventObj *event_obj, EventTa
         VARIANTARG arg;
         DISPPARAMS dp = {&arg, &named_arg, 1, 1};
 
+        if(!use_event_quirks(event_target))
+            FIXME("Event argument not supported\n");
+
         V_VT(&arg) = VT_DISPATCH;
         V_DISPATCH(&arg) = this_obj;
         V_VT(&v) = VT_EMPTY;
@@ -1381,6 +1386,12 @@ static HRESULT set_event_handler_disp(EventTarget *event_target, eventid_t eid,
 HRESULT set_event_handler(EventTarget *event_target, eventid_t eid, VARIANT *var)
 {
     switch(V_VT(var)) {
+    case VT_EMPTY:
+        if(use_event_quirks(event_target)) {
+            WARN("attempt to set to VT_EMPTY in quirks mode\n");
+            return E_NOTIMPL;
+        }
+        /* fall through */
     case VT_NULL:
         remove_event_handler(event_target, eid);
         return S_OK;
@@ -1392,6 +1403,9 @@ HRESULT set_event_handler(EventTarget *event_target, eventid_t eid, VARIANT *var
         VARIANT *v;
         HRESULT hres;
 
+        if(!use_event_quirks(event_target))
+            FIXME("Setting to string %s not supported\n", debugstr_w(V_BSTR(var)));
+
         /*
          * Setting event handler to string is a rare case and we don't want to
          * complicate nor increase memory of handler_vector_t for that. Instead,
@@ -1413,8 +1427,6 @@ HRESULT set_event_handler(EventTarget *event_target, eventid_t eid, VARIANT *var
 
     default:
         FIXME("not handler %s\n", debugstr_variant(var));
-        /* fall through */
-    case VT_EMPTY:
         return E_NOTIMPL;
     }
 




More information about the wine-cvs mailing list