Fix non-left mouse button clicks (there may not be one touchstart event per touch). Fix setting/resetting of gesture_in_progress flag.

This commit is contained in:
Michael Jumper
2012-04-09 13:57:58 -07:00
parent 5e0c6d8c51
commit b2bcaef681

View File

@@ -163,7 +163,6 @@ Guacamole.Mouse = function(element) {
var last_touch_y = 0;
var last_touch_time = 0;
var pixels_moved = 0;
var touch_distance = 0;
var touch_buttons = {
1: "left",
@@ -176,11 +175,11 @@ Guacamole.Mouse = function(element) {
element.addEventListener("touchend", function(e) {
cancelEvent(e);
// If we're handling a gesture AND this is the last touch
if (gesture_in_progress && e.touches.length == 0) {
cancelEvent(e);
var time = new Date().getTime();
// Get corresponding mouse button
@@ -220,30 +219,27 @@ Guacamole.Mouse = function(element) {
if (guac_mouse.onmouseup)
guac_mouse.onmouseup(guac_mouse.currentState);
// Allow mouse events now that touching is over
// Gesture now over
gesture_in_progress = false;
}, guac_mouse.clickTimingThreshold);
}
// If we're not waiting to see if this is a click, stop gesture
if (!click_release_timeout)
gesture_in_progress = false;
}
}, false);
element.addEventListener("touchstart", function(e) {
// Track number of touches, but no more than three
touch_count = Math.min(e.touches.length, 3);
// Record initial touch location and time for touch movement
// and tap gestures
if (e.touches.length == 1) {
cancelEvent(e);
// Stop mouse events while touching
gesture_in_progress = true;
// Track number of touches, but no more than three
touch_count = Math.min(e.touches.length, 3);
// Clear timeout, if set
if (click_release_timeout) {
@@ -251,6 +247,13 @@ Guacamole.Mouse = function(element) {
click_release_timeout = null;
}
// Record initial touch location and time for touch movement
// and tap gestures
if (!gesture_in_progress) {
// Stop mouse events while touching
gesture_in_progress = true;
// Record touch location and time
var starting_touch = e.touches[0];
last_touch_x = starting_touch.clientX;