From a76549c26116b92f353887ff52ba0b4092f9c431 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Fri, 6 Apr 2012 12:38:24 -0700 Subject: [PATCH] Calculate mouse position including scroll of overflow elements (cannot rely on pageX/Y). --- src/main/resources/mouse.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) 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); -- 1.7.10.4