Experimental working touch-based mouse.

This commit is contained in:
Michael Jumper
2011-06-09 09:25:47 -07:00
parent 23ed11a933
commit 567c4a4a11

View File

@@ -46,15 +46,10 @@ function GuacamoleMouse(element) {
} }
// Block context menu so right-click gets sent properly function moveMouse(pageX, pageY) {
element.oncontextmenu = function(e) {return false;};
element.onmousemove = function(e) { absoluteMouseX = pageX;
absoluteMouseY = pageY;
e.stopPropagation();
absoluteMouseX = e.pageX;
absoluteMouseY = e.pageY;
mouseX = absoluteMouseX - element.offsetLeft; mouseX = absoluteMouseX - element.offsetLeft;
mouseY = absoluteMouseY - element.offsetTop; mouseY = absoluteMouseY - element.offsetTop;
@@ -70,6 +65,68 @@ function GuacamoleMouse(element) {
} }
movementHandler(getMouseState(0, 0)); movementHandler(getMouseState(0, 0));
}
// Block context menu so right-click gets sent properly
element.oncontextmenu = function(e) {return false;};
element.onmousemove = function(e) {
e.stopPropagation();
moveMouse(e.pageX, e.pageY);
};
element.ontouchend = function(e) {
e.stopPropagation();
e.preventDefault();
// Release all buttons (FIXME: for now...)
if (mouseLeftButton || mouseMiddleButton || mouseRightButton) {
mouseLeftButton = 0;
mouseMiddleButton = 0;
mouseRightButton = 0;
buttonReleasedHandler(getMouseState(0, 0));
}
}
element.ontouchstart = function(e) {
e.stopPropagation();
e.preventDefault();
if (e.touches.length == 1)
element.ontouchmove(e);
else {
var button = e.touches[0];
var pointer = e.touches[1];
if (pointer.pageX < button.pageX)
mouseLeftButton = 1;
else
mouseRightButton = 1;
buttonPressedHandler(getMouseState(0, 0));
}
};
element.ontouchmove = function(e) {
e.stopPropagation();
e.preventDefault();
var touch = e.touches[0];
moveMouse(touch.pageX, touch.pageY);
}; };