Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: remoting/ios/client_gestures.mm

Issue 2882653004: [CRD iOS] Injecting scroll events w/ fling animation (Closed)
Patch Set: Rebase Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « remoting/ios/client_gestures.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #if !defined(__has_feature) || !__has_feature(objc_arc) 5 #if !defined(__has_feature) || !__has_feature(objc_arc)
6 #error "This file requires ARC support." 6 #error "This file requires ARC support."
7 #endif 7 #endif
8 8
9 #import "remoting/ios/client_gestures.h" 9 #import "remoting/ios/client_gestures.h"
10 10
(...skipping 26 matching lines...) Expand all
37 [view addGestureRecognizer:_panRecognizer]; 37 [view addGestureRecognizer:_panRecognizer];
38 38
39 _flingRecognizer = [[UIPanGestureRecognizer alloc] 39 _flingRecognizer = [[UIPanGestureRecognizer alloc]
40 initWithTarget:self 40 initWithTarget:self
41 action:@selector(flingGestureTriggered:)]; 41 action:@selector(flingGestureTriggered:)];
42 _flingRecognizer.minimumNumberOfTouches = 1; 42 _flingRecognizer.minimumNumberOfTouches = 1;
43 _flingRecognizer.maximumNumberOfTouches = 1; 43 _flingRecognizer.maximumNumberOfTouches = 1;
44 _flingRecognizer.delegate = self; 44 _flingRecognizer.delegate = self;
45 [view addGestureRecognizer:_flingRecognizer]; 45 [view addGestureRecognizer:_flingRecognizer];
46 46
47 _scrollRecognizer = [[UIPanGestureRecognizer alloc]
48 initWithTarget:self
49 action:@selector(scrollGestureTriggered:)];
50 _scrollRecognizer.minimumNumberOfTouches = 2;
51 _scrollRecognizer.maximumNumberOfTouches = 2;
52 _scrollRecognizer.delegate = self;
53 [view addGestureRecognizer:_scrollRecognizer];
54
47 _threeFingerPanRecognizer = [[UIPanGestureRecognizer alloc] 55 _threeFingerPanRecognizer = [[UIPanGestureRecognizer alloc]
48 initWithTarget:self 56 initWithTarget:self
49 action:@selector(threeFingerPanGestureTriggered:)]; 57 action:@selector(threeFingerPanGestureTriggered:)];
50 _threeFingerPanRecognizer.minimumNumberOfTouches = 3; 58 _threeFingerPanRecognizer.minimumNumberOfTouches = 3;
51 _threeFingerPanRecognizer.maximumNumberOfTouches = 3; 59 _threeFingerPanRecognizer.maximumNumberOfTouches = 3;
52 _threeFingerPanRecognizer.delegate = self; 60 _threeFingerPanRecognizer.delegate = self;
53 [view addGestureRecognizer:_threeFingerPanRecognizer]; 61 [view addGestureRecognizer:_threeFingerPanRecognizer];
54 62
55 _pinchRecognizer = [[UIPinchGestureRecognizer alloc] 63 _pinchRecognizer = [[UIPinchGestureRecognizer alloc]
56 initWithTarget:self 64 initWithTarget:self
(...skipping 23 matching lines...) Expand all
80 88
81 _inputScheme = HostInputSchemeTouch; 89 _inputScheme = HostInputSchemeTouch;
82 90
83 [_singleTapRecognizer requireGestureRecognizerToFail:_twoFingerTapRecognizer]; 91 [_singleTapRecognizer requireGestureRecognizerToFail:_twoFingerTapRecognizer];
84 [_twoFingerTapRecognizer 92 [_twoFingerTapRecognizer
85 requireGestureRecognizerToFail:_threeFingerTapRecognizer]; 93 requireGestureRecognizerToFail:_threeFingerTapRecognizer];
86 [_pinchRecognizer requireGestureRecognizerToFail:_singleTapRecognizer]; 94 [_pinchRecognizer requireGestureRecognizerToFail:_singleTapRecognizer];
87 [_panRecognizer requireGestureRecognizerToFail:_singleTapRecognizer]; 95 [_panRecognizer requireGestureRecognizerToFail:_singleTapRecognizer];
88 [_threeFingerPanRecognizer 96 [_threeFingerPanRecognizer
89 requireGestureRecognizerToFail:_threeFingerTapRecognizer]; 97 requireGestureRecognizerToFail:_threeFingerTapRecognizer];
98 [_panRecognizer requireGestureRecognizerToFail:_scrollRecognizer];
90 99
91 _edgeGesture = [[UIScreenEdgePanGestureRecognizer alloc] 100 _edgeGesture = [[UIScreenEdgePanGestureRecognizer alloc]
92 initWithTarget:self 101 initWithTarget:self
93 action:@selector(edgeGestureTriggered:)]; 102 action:@selector(edgeGestureTriggered:)];
94 //_edgeGesture.edges = UIRectEdgeLeft; 103 //_edgeGesture.edges = UIRectEdgeLeft;
95 _edgeGesture.delegate = self; 104 _edgeGesture.delegate = self;
96 [view addGestureRecognizer:_edgeGesture]; 105 [view addGestureRecognizer:_edgeGesture];
97 106
98 _swipeGesture = [[UISwipeGestureRecognizer alloc] 107 _swipeGesture = [[UISwipeGestureRecognizer alloc]
99 initWithTarget:self 108 initWithTarget:self
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 // panning. 248 // panning.
240 - (IBAction)flingGestureTriggered:(UIPanGestureRecognizer*)sender { 249 - (IBAction)flingGestureTriggered:(UIPanGestureRecognizer*)sender {
241 if ([sender state] == UIGestureRecognizerStateEnded) { 250 if ([sender state] == UIGestureRecognizerStateEnded) {
242 CGPoint velocity = [sender velocityInView:_view]; 251 CGPoint velocity = [sender velocityInView:_view];
243 if (velocity.x != 0 || velocity.y != 0) { 252 if (velocity.x != 0 || velocity.y != 0) {
244 _client.gestureInterpreter->OneFingerFling(velocity.x, velocity.y); 253 _client.gestureInterpreter->OneFingerFling(velocity.x, velocity.y);
245 } 254 }
246 } 255 }
247 } 256 }
248 257
258 - (IBAction)scrollGestureTriggered:(UIPanGestureRecognizer*)sender {
259 if ([sender state] == UIGestureRecognizerStateEnded) {
260 CGPoint velocity = [sender velocityInView:_view];
261 _client.gestureInterpreter->ScrollWithVelocity(velocity.x, velocity.y);
262 return;
263 }
264
265 CGPoint scrollPoint = [sender locationInView:_view];
266 CGPoint translation = [sender translationInView:_view];
267 _client.gestureInterpreter->Scroll(scrollPoint.x, scrollPoint.y,
268 translation.x, translation.y);
269
270 // Reset translation so next iteration is relative
271 [sender setTranslation:CGPointZero inView:_view];
272 }
273
249 // Click-Drag mouse operation. This can occur during a Pan. 274 // Click-Drag mouse operation. This can occur during a Pan.
250 - (IBAction)longPressGestureTriggered:(UILongPressGestureRecognizer*)sender { 275 - (IBAction)longPressGestureTriggered:(UILongPressGestureRecognizer*)sender {
251 CGPoint touchPoint = [sender locationInView:_view]; 276 CGPoint touchPoint = [sender locationInView:_view];
252 remoting::GestureInterpreter::GestureState state; 277 remoting::GestureInterpreter::GestureState state;
253 switch ([sender state]) { 278 switch ([sender state]) {
254 case UIGestureRecognizerStateBegan: 279 case UIGestureRecognizerStateBegan:
255 state = remoting::GestureInterpreter::GESTURE_BEGAN; 280 state = remoting::GestureInterpreter::GESTURE_BEGAN;
256 break; 281 break;
257 case UIGestureRecognizerStateChanged: 282 case UIGestureRecognizerStateChanged:
258 state = remoting::GestureInterpreter::GESTURE_CHANGED; 283 state = remoting::GestureInterpreter::GESTURE_CHANGED;
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 otherGestureRecognizer == _edgeGesture) { 400 otherGestureRecognizer == _edgeGesture) {
376 return YES; 401 return YES;
377 } 402 }
378 // TODO(nicholss): If we return NO here, it dismisses the other reconizers. 403 // TODO(nicholss): If we return NO here, it dismisses the other reconizers.
379 // As we add more types of reconizers, they need to be accounted for in the 404 // As we add more types of reconizers, they need to be accounted for in the
380 // above logic. 405 // above logic.
381 return NO; 406 return NO;
382 } 407 }
383 408
384 @end 409 @end
OLDNEW
« no previous file with comments | « remoting/ios/client_gestures.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698