Skip to content
This repository was archived by the owner on Jul 17, 2023. It is now read-only.

Commit ecf62ff

Browse files
committed
GUAC-959: Unwrap touch events if they come from jQuery (based on the various solutions and pull requests discussed here: angular/angular.js#2548)
1 parent e3a7a7d commit ecf62ff

File tree

1 file changed

+27
-4
lines changed

1 file changed

+27
-4
lines changed

guacamole/src/main/webapp/lib/angular-touch.js

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,13 @@ ngTouch.factory('$swipe', [function() {
5454
var MOVE_BUFFER_RADIUS = 10;
5555

5656
function getCoordinates(event) {
57+
// Unwrap event if wrapped by jQuery
58+
if(event.originalEvent) {
59+
event = event.originalEvent;
60+
}
61+
5762
var touches = event.touches && event.touches.length ? event.touches : [event];
58-
var e = (event.changedTouches && event.changedTouches[0]) ||
59-
(event.originalEvent && event.originalEvent.changedTouches &&
60-
event.originalEvent.changedTouches[0]) ||
61-
touches[0].originalEvent || touches[0];
63+
var e = (event.changedTouches && event.changedTouches[0]) || touches[0];
6264

6365
return {
6466
x: e.clientX,
@@ -283,6 +285,11 @@ ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement',
283285
return; // Too old.
284286
}
285287

288+
// Unwrap event if wrapped by jQuery
289+
if(event.originalEvent) {
290+
event = event.originalEvent;
291+
}
292+
286293
var touches = event.touches && event.touches.length ? event.touches : [event];
287294
var x = touches[0].clientX;
288295
var y = touches[0].clientY;
@@ -312,6 +319,11 @@ ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement',
312319
// Global touchstart handler that creates an allowable region for a click event.
313320
// This allowable region can be removed by preventGhostClick if we want to bust it.
314321
function onTouchStart(event) {
322+
// Unwrap event if wrapped by jQuery
323+
if(event.originalEvent) {
324+
event = event.originalEvent;
325+
}
326+
315327
var touches = event.touches && event.touches.length ? event.touches : [event];
316328
var x = touches[0].clientX;
317329
var y = touches[0].clientY;
@@ -358,6 +370,12 @@ ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement',
358370

359371
element.on('touchstart', function(event) {
360372
tapping = true;
373+
374+
// Unwrap event if wrapped by jQuery
375+
if(event.originalEvent) {
376+
event = event.originalEvent;
377+
}
378+
361379
tapElement = event.target ? event.target : event.srcElement; // IE uses srcElement.
362380
// Hack for Safari, which can target text nodes instead of containers.
363381
if(tapElement.nodeType == 3) {
@@ -385,6 +403,11 @@ ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement',
385403
element.on('touchend', function(event) {
386404
var diff = Date.now() - startTime;
387405

406+
// Unwrap event if wrapped by jQuery
407+
if(event.originalEvent) {
408+
event = event.originalEvent;
409+
}
410+
388411
var touches = (event.changedTouches && event.changedTouches.length) ? event.changedTouches :
389412
((event.touches && event.touches.length) ? event.touches : [event]);
390413
var e = touches[0].originalEvent || touches[0];

0 commit comments

Comments
 (0)