Properly offset mouse by document scroll amount (Firefox/Chrome, etc. inconsistency...
authorMichael Jumper <zhangmaike@users.sourceforge.net>
Tue, 1 May 2012 21:33:31 +0000 (14:33 -0700)
committerMichael Jumper <zhangmaike@users.sourceforge.net>
Tue, 1 May 2012 21:33:31 +0000 (14:33 -0700)
src/main/resources/mouse.js

index 1c68174..8fd1d6a 100644 (file)
@@ -128,14 +128,20 @@ Guacamole.Mouse = function(element) {
 
         // This is all JUST so we can get the mouse position within the element
         var parent = element.offsetParent;
-        while (parent) {
-
+        while (parent && !(parent === document.body)) {
             guac_mouse.currentState.x -= parent.offsetLeft - parent.scrollLeft;
             guac_mouse.currentState.y -= parent.offsetTop  - parent.scrollTop;
 
             parent = parent.offsetParent;
         }
 
+        // Offset by document scroll amount
+        var documentScrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
+        var documentScrollTop = document.body.scrollTop || document.documentElement.scrollTop;
+
+        guac_mouse.currentState.x -= parent.offsetLeft - documentScrollLeft;
+        guac_mouse.currentState.y -= parent.offsetTop  - documentScrollTop;
+
         if (guac_mouse.onmousemove)
             guac_mouse.onmousemove(guac_mouse.currentState);