From: Michael Jumper Date: Fri, 6 Apr 2012 19:38:24 +0000 (-0700) Subject: Calculate mouse position including scroll of overflow elements (cannot rely on pageX/Y). X-Git-Url: http://git.alex.org.uk Calculate mouse position including scroll of overflow elements (cannot rely on pageX/Y). --- diff --git a/src/main/resources/mouse.js b/src/main/resources/mouse.js index 006c332..dbd4c2a 100644 --- a/src/main/resources/mouse.js +++ b/src/main/resources/mouse.js @@ -121,20 +121,17 @@ Guacamole.Mouse = function(element) { e.returnValue = false; } - function moveMouse(pageX, pageY) { + function moveMouse(clientX, clientY) { - guac_mouse.currentState.x = pageX - element.offsetLeft; - guac_mouse.currentState.y = pageY - element.offsetTop; + guac_mouse.currentState.x = clientX - element.offsetLeft; + guac_mouse.currentState.y = clientY - element.offsetTop; // This is all JUST so we can get the mouse position within the element var parent = element.offsetParent; while (parent) { - if (parent.offsetLeft) - guac_mouse.currentState.x -= parent.offsetLeft; - - if (parent.offsetTop) - guac_mouse.currentState.y -= parent.offsetTop; + guac_mouse.currentState.x -= parent.offsetLeft - parent.scrollLeft; + guac_mouse.currentState.y -= parent.offsetTop - parent.scrollTop; parent = parent.offsetParent; } @@ -157,7 +154,7 @@ Guacamole.Mouse = function(element) { cancelEvent(e); - moveMouse(e.pageX, e.pageY); + moveMouse(e.clientX, e.clientY); }, false);