]> git.proxmox.com Git - mirror_xterm.js.git/commitdiff
Fix MouseEvent cloning
authorBenjamin Fischer <benjamin.fischer@rwth-aachen.de>
Mon, 27 Jun 2016 11:27:19 +0000 (13:27 +0200)
committerBenjamin Fischer <benjamin.fischer@rwth-aachen.de>
Mon, 27 Jun 2016 11:27:19 +0000 (13:27 +0200)
Cloneing MouseEvent instances via __proto__ (lline 1099) caused the cloned object to be broken and throw "TypeError: Illegal invocation" during property access ("ev.shiftKey" line 1020).

src/xterm.js

index 618d1c79d4c6fdfa0bb1b3d8068d126e0eab0912..51357afbd5699a5da78b72da6274c2f588aa07a7 100644 (file)
 
         sendEvent(button, pos);
 
-        switch (ev.type) {
+        switch (ev.overrideType || ev.type) {
           case 'mousedown':
             pressed = button;
             break;
         // 3 = release
         // wheel up/down:
         // 1, and 2 - with 64 added
-        switch (ev.type) {
+        switch (ev.overrideType || ev.type) {
           case 'mousedown':
             button = ev.button != null
               ? +ev.button
         return {
           x: x,
           y: y,
-          type: ev.type === wheelEvent
+          type: (ev.overrideType || ev.type) === wheelEvent
             ? 'mousewheel'
-            : ev.type
+            : (ev.overrideType || ev.type)
         };
       }
 
         // fix for odd bug
         //if (self.vt200Mouse && !self.normalMouse) {
         if (self.vt200Mouse) {
-          sendButton({ __proto__: ev, type: 'mouseup' });
+          ev.overrideType = 'mouseup';
+          sendButton(ev);
           return self.cancel(ev);
         }