mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-10-31 00:53:21 +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; |   var MOVE_BUFFER_RADIUS = 10; | ||||||
|  |  | ||||||
|   function getCoordinates(event) { |   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 touches = event.touches && event.touches.length ? event.touches : [event]; | ||||||
|     var e = (event.changedTouches && event.changedTouches[0]) || |     var e = (event.changedTouches && event.changedTouches[0]) || touches[0]; | ||||||
|         (event.originalEvent && event.originalEvent.changedTouches && |  | ||||||
|             event.originalEvent.changedTouches[0]) || |  | ||||||
|         touches[0].originalEvent || touches[0]; |  | ||||||
|  |  | ||||||
|     return { |     return { | ||||||
|       x: e.clientX, |       x: e.clientX, | ||||||
| @@ -283,6 +285,11 @@ ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement', | |||||||
|       return; // Too old. |       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 touches = event.touches && event.touches.length ? event.touches : [event]; | ||||||
|     var x = touches[0].clientX; |     var x = touches[0].clientX; | ||||||
|     var y = touches[0].clientY; |     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. |   // 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. |   // This allowable region can be removed by preventGhostClick if we want to bust it. | ||||||
|   function onTouchStart(event) { |   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 touches = event.touches && event.touches.length ? event.touches : [event]; | ||||||
|     var x = touches[0].clientX; |     var x = touches[0].clientX; | ||||||
|     var y = touches[0].clientY; |     var y = touches[0].clientY; | ||||||
| @@ -358,6 +370,12 @@ ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement', | |||||||
|  |  | ||||||
|     element.on('touchstart', function(event) { |     element.on('touchstart', function(event) { | ||||||
|       tapping = true; |       tapping = true; | ||||||
|  |  | ||||||
|  |       // Unwrap event if wrapped by jQuery | ||||||
|  |       if(event.originalEvent) { | ||||||
|  |         event = event.originalEvent; | ||||||
|  |       } | ||||||
|  |  | ||||||
|       tapElement = event.target ? event.target : event.srcElement; // IE uses srcElement. |       tapElement = event.target ? event.target : event.srcElement; // IE uses srcElement. | ||||||
|       // Hack for Safari, which can target text nodes instead of containers. |       // Hack for Safari, which can target text nodes instead of containers. | ||||||
|       if(tapElement.nodeType == 3) { |       if(tapElement.nodeType == 3) { | ||||||
| @@ -385,6 +403,11 @@ ngTouch.directive('ngClick', ['$parse', '$timeout', '$rootElement', | |||||||
|     element.on('touchend', function(event) { |     element.on('touchend', function(event) { | ||||||
|       var diff = Date.now() - startTime; |       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 : |       var touches = (event.changedTouches && event.changedTouches.length) ? event.changedTouches : | ||||||
|           ((event.touches && event.touches.length) ? event.touches : [event]); |           ((event.touches && event.touches.length) ? event.touches : [event]); | ||||||
|       var e = touches[0].originalEvent || touches[0]; |       var e = touches[0].originalEvent || touches[0]; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user