mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 21:27:40 +00:00
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:
@@ -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,37 +219,41 @@ 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) {
|
||||
|
||||
cancelEvent(e);
|
||||
|
||||
// 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) {
|
||||
window.clearTimeout(click_release_timeout);
|
||||
click_release_timeout = null;
|
||||
}
|
||||
|
||||
// Record initial touch location and time for touch movement
|
||||
// and tap gestures
|
||||
if (e.touches.length == 1) {
|
||||
|
||||
cancelEvent(e);
|
||||
if (!gesture_in_progress) {
|
||||
|
||||
// Stop mouse events while touching
|
||||
gesture_in_progress = true;
|
||||
|
||||
// Clear timeout, if set
|
||||
if (click_release_timeout) {
|
||||
window.clearTimeout(click_release_timeout);
|
||||
click_release_timeout = null;
|
||||
}
|
||||
|
||||
// Record touch location and time
|
||||
var starting_touch = e.touches[0];
|
||||
last_touch_x = starting_touch.clientX;
|
||||
|
Reference in New Issue
Block a user