Properly offset mouse by document scroll amount (Firefox/Chrome, etc. inconsistency) - fixes ticket #124.

This commit is contained in:
Michael Jumper
2012-05-01 14:33:31 -07:00
parent 63685aa048
commit 76fd31bd53

View File

@@ -128,14 +128,20 @@ Guacamole.Mouse = function(element) {
// This is all JUST so we can get the mouse position within the element // This is all JUST so we can get the mouse position within the element
var parent = element.offsetParent; var parent = element.offsetParent;
while (parent) { while (parent && !(parent === document.body)) {
guac_mouse.currentState.x -= parent.offsetLeft - parent.scrollLeft; guac_mouse.currentState.x -= parent.offsetLeft - parent.scrollLeft;
guac_mouse.currentState.y -= parent.offsetTop - parent.scrollTop; guac_mouse.currentState.y -= parent.offsetTop - parent.scrollTop;
parent = parent.offsetParent; 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) if (guac_mouse.onmousemove)
guac_mouse.onmousemove(guac_mouse.currentState); guac_mouse.onmousemove(guac_mouse.currentState);