diff --git a/kasmweb/core/util/events.js b/kasmweb/core/util/events.js index f122279..7700712 100644 --- a/kasmweb/core/util/events.js +++ b/kasmweb/core/util/events.js @@ -21,7 +21,7 @@ export function stopEvent(e) { // Emulate Element.setCapture() when not supported let _captureRecursion = false; -let _captureElem = null; +let _capturedElem = null; function _captureProxy(e) { // Recursion protection as we'll see our own event if (_captureRecursion) return; @@ -30,7 +30,7 @@ function _captureProxy(e) { const newEv = new e.constructor(e.type, e); _captureRecursion = true; - _captureElem.dispatchEvent(newEv); + _capturedElem.dispatchEvent(newEv); _captureRecursion = false; // Avoid double events @@ -48,58 +48,58 @@ function _captureProxy(e) { } // Follow cursor style of target element -function _captureElemChanged() { - const captureElem = document.getElementById("noVNC_mouse_capture_elem"); - captureElem.style.cursor = window.getComputedStyle(_captureElem).cursor; +function _capturedElemChanged() { + const proxyElem = document.getElementById("noVNC_mouse_capture_elem"); + proxyElem.style.cursor = window.getComputedStyle(_capturedElem).cursor; } -const _captureObserver = new MutationObserver(_captureElemChanged); +const _captureObserver = new MutationObserver(_capturedElemChanged); let _captureIndex = 0; -export function setCapture(elem) { - if (elem.setCapture) { +export function setCapture(target) { + if (target.setCapture) { - elem.setCapture(); + target.setCapture(); // IE releases capture on 'click' events which might not trigger - elem.addEventListener('mouseup', releaseCapture); + target.addEventListener('mouseup', releaseCapture); } else { // Release any existing capture in case this method is // called multiple times without coordination releaseCapture(); - let captureElem = document.getElementById("noVNC_mouse_capture_elem"); + let proxyElem = document.getElementById("noVNC_mouse_capture_elem"); - if (captureElem === null) { - captureElem = document.createElement("div"); - captureElem.id = "noVNC_mouse_capture_elem"; - captureElem.style.position = "fixed"; - captureElem.style.top = "0px"; - captureElem.style.left = "0px"; - captureElem.style.width = "100%"; - captureElem.style.height = "100%"; - captureElem.style.zIndex = 10000; - captureElem.style.display = "none"; - document.body.appendChild(captureElem); + if (proxyElem === null) { + proxyElem = document.createElement("div"); + proxyElem.id = "noVNC_mouse_capture_elem"; + proxyElem.style.position = "fixed"; + proxyElem.style.top = "0px"; + proxyElem.style.left = "0px"; + proxyElem.style.width = "100%"; + proxyElem.style.height = "100%"; + proxyElem.style.zIndex = 10000; + proxyElem.style.display = "none"; + document.body.appendChild(proxyElem); // This is to make sure callers don't get confused by having // our blocking element as the target - captureElem.addEventListener('contextmenu', _captureProxy); + proxyElem.addEventListener('contextmenu', _captureProxy); - captureElem.addEventListener('mousemove', _captureProxy); - captureElem.addEventListener('mouseup', _captureProxy); + proxyElem.addEventListener('mousemove', _captureProxy); + proxyElem.addEventListener('mouseup', _captureProxy); } - _captureElem = elem; + _capturedElem = target; _captureIndex++; // Track cursor and get initial cursor - _captureObserver.observe(elem, {attributes: true}); - _captureElemChanged(); + _captureObserver.observe(target, {attributes: true}); + _capturedElemChanged(); - captureElem.style.display = ""; + proxyElem.style.display = ""; // We listen to events on window in order to keep tracking if it // happens to leave the viewport @@ -114,7 +114,7 @@ export function releaseCapture() { document.releaseCapture(); } else { - if (!_captureElem) { + if (!_capturedElem) { return; } @@ -124,14 +124,14 @@ export function releaseCapture() { // Only clear it if it's the expected grab (i.e. no one // else has initiated a new grab) if (_captureIndex === expected) { - _captureElem = null; + _capturedElem = null; } }, 0, _captureIndex); _captureObserver.disconnect(); - const captureElem = document.getElementById("noVNC_mouse_capture_elem"); - captureElem.style.display = "none"; + const proxyElem = document.getElementById("noVNC_mouse_capture_elem"); + proxyElem.style.display = "none"; window.removeEventListener('mousemove', _captureProxy); window.removeEventListener('mouseup', _captureProxy);