mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-10-30 00:23: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; | ||||
|  | ||||
|   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