mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +00:00
GUAC-959: Unwrap touch events if they come from jQuery (based on the various solutions and pull requests discussed here: https://github.com/angular/angular.js/issues/2548)
This commit is contained in:
31
guacamole/src/main/webapp/lib/angular-touch.js
vendored
31
guacamole/src/main/webapp/lib/angular-touch.js
vendored
@@ -54,11 +54,13 @@ ngTouch.factory('$swipe', [function() {
|
||||
var MOVE_BUFFER_RADIUS = 10;
|
||||
|
||||
function getCoordinates(event) {
|
||||
// Unwrap event if wrapped by jQuery
|
||||
if(event.originalEvent) {
|
||||
event = event.originalEvent;
|
||||
}
|
||||
|
||||
var touches = event.touches && event.touches.length ? event.touches : [event];
|
||||
var e = (event.changedTouches && event.changedTouches[0]) ||
|
||||
(event.originalEvent && event.originalEvent.changedTouches &&
|
||||
event.originalEvent.changedTouches[0]) ||
|
||||
touches[0].originalEvent || touches[0];
|
||||
var e = (event.changedTouches && event.changedTouches[0]) || touches[0];
|
||||
|
||||
return {
|
||||
x: e.clientX,
|
||||
@@ -283,6 +285,11 @@ ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement',
|
||||
return; // Too old.
|
||||
}
|
||||
|
||||
// Unwrap event if wrapped by jQuery
|
||||
if(event.originalEvent) {
|
||||
event = event.originalEvent;
|
||||
}
|
||||
|
||||
var touches = event.touches && event.touches.length ? event.touches : [event];
|
||||
var x = touches[0].clientX;
|
||||
var y = touches[0].clientY;
|
||||
@@ -312,6 +319,11 @@ ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement',
|
||||
// Global touchstart handler that creates an allowable region for a click event.
|
||||
// This allowable region can be removed by preventGhostClick if we want to bust it.
|
||||
function onTouchStart(event) {
|
||||
// Unwrap event if wrapped by jQuery
|
||||
if(event.originalEvent) {
|
||||
event = event.originalEvent;
|
||||
}
|
||||
|
||||
var touches = event.touches && event.touches.length ? event.touches : [event];
|
||||
var x = touches[0].clientX;
|
||||
var y = touches[0].clientY;
|
||||
@@ -358,6 +370,12 @@ ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement',
|
||||
|
||||
element.on('touchstart', function(event) {
|
||||
tapping = true;
|
||||
|
||||
// Unwrap event if wrapped by jQuery
|
||||
if(event.originalEvent) {
|
||||
event = event.originalEvent;
|
||||
}
|
||||
|
||||
tapElement = event.target ? event.target : event.srcElement; // IE uses srcElement.
|
||||
// Hack for Safari, which can target text nodes instead of containers.
|
||||
if(tapElement.nodeType == 3) {
|
||||
@@ -385,6 +403,11 @@ ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement',
|
||||
element.on('touchend', function(event) {
|
||||
var diff = Date.now() - startTime;
|
||||
|
||||
// Unwrap event if wrapped by jQuery
|
||||
if(event.originalEvent) {
|
||||
event = event.originalEvent;
|
||||
}
|
||||
|
||||
var touches = (event.changedTouches && event.changedTouches.length) ? event.changedTouches :
|
||||
((event.touches && event.touches.length) ? event.touches : [event]);
|
||||
var e = touches[0].originalEvent || touches[0];
|
||||
|
Reference in New Issue
Block a user