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

Side by Side Diff: ui/events/gestures/gesture_sequence.cc

Issue 189583007: Ensure Multi-finger tap generates both GestureScrollBegin and GestureScrollEnd. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Factor out scroll start logic. Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « ui/events/gestures/gesture_sequence.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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "ui/events/gestures/gesture_sequence.h" 5 #include "ui/events/gestures/gesture_sequence.h"
6 6
7 #include <stdlib.h> 7 #include <stdlib.h>
8 #include <cmath> 8 #include <cmath>
9 #include <limits> 9 #include <limits>
10 10
(...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 case GST_SYNTHETIC_CLICK_ABORTED_SECOND_PRESSED: 626 case GST_SYNTHETIC_CLICK_ABORTED_SECOND_PRESSED:
627 TwoFingerTapOrPinch(event, point, gestures.get()); 627 TwoFingerTapOrPinch(event, point, gestures.get());
628 break; 628 break;
629 case GST_SCROLL_SECOND_PRESSED: 629 case GST_SCROLL_SECOND_PRESSED:
630 PinchStart(event, point, gestures.get()); 630 PinchStart(event, point, gestures.get());
631 set_state(GS_PINCH); 631 set_state(GS_PINCH);
632 break; 632 break;
633 case GST_PENDING_TWO_FINGER_TAP_FIRST_RELEASED: 633 case GST_PENDING_TWO_FINGER_TAP_FIRST_RELEASED:
634 case GST_PENDING_TWO_FINGER_TAP_SECOND_RELEASED: 634 case GST_PENDING_TWO_FINGER_TAP_SECOND_RELEASED:
635 TwoFingerTouchReleased(event, point, gestures.get()); 635 TwoFingerTouchReleased(event, point, gestures.get());
636 set_state(GS_SCROLL); 636 StartRailFreeScroll(point, gestures.get());
637 break; 637 break;
638 case GST_PENDING_TWO_FINGER_TAP_FIRST_MOVED: 638 case GST_PENDING_TWO_FINGER_TAP_FIRST_MOVED:
639 case GST_PENDING_TWO_FINGER_TAP_SECOND_MOVED: 639 case GST_PENDING_TWO_FINGER_TAP_SECOND_MOVED:
640 if (TwoFingerTouchMove(event, point, gestures.get())) 640 if (TwoFingerTouchMove(event, point, gestures.get()))
641 set_state(GS_PINCH); 641 set_state(GS_PINCH);
642 break; 642 break;
643 case GST_PENDING_TWO_FINGER_TAP_FIRST_MOVED_HANDLED: 643 case GST_PENDING_TWO_FINGER_TAP_FIRST_MOVED_HANDLED:
644 case GST_PENDING_TWO_FINGER_TAP_SECOND_MOVED_HANDLED: 644 case GST_PENDING_TWO_FINGER_TAP_SECOND_MOVED_HANDLED:
645 set_state(GS_PENDING_TWO_FINGER_TAP_NO_PINCH); 645 set_state(GS_PENDING_TWO_FINGER_TAP_NO_PINCH);
646 break; 646 break;
647 case GST_PENDING_TWO_FINGER_TAP_FIRST_RELEASED_HANDLED: 647 case GST_PENDING_TWO_FINGER_TAP_FIRST_RELEASED_HANDLED:
648 case GST_PENDING_TWO_FINGER_TAP_SECOND_RELEASED_HANDLED: 648 case GST_PENDING_TWO_FINGER_TAP_SECOND_RELEASED_HANDLED:
649 case GST_PENDING_TWO_FINGER_TAP_FIRST_CANCELLED: 649 case GST_PENDING_TWO_FINGER_TAP_FIRST_CANCELLED:
650 case GST_PENDING_TWO_FINGER_TAP_SECOND_CANCELLED: 650 case GST_PENDING_TWO_FINGER_TAP_SECOND_CANCELLED:
651 scroll_type_ = ST_FREE; 651 StartRailFreeScroll(point, gestures.get());
652 set_state(GS_SCROLL);
653 break; 652 break;
654 case GST_PENDING_TWO_FINGER_TAP_THIRD_PRESSED: 653 case GST_PENDING_TWO_FINGER_TAP_THIRD_PRESSED:
655 set_state(GS_PENDING_PINCH); 654 set_state(GS_PENDING_PINCH);
656 break; 655 break;
657 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_FIRST_MOVED: 656 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_FIRST_MOVED:
658 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_SECOND_MOVED: 657 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_SECOND_MOVED:
659 // No pinch allowed, so nothing happens. 658 // No pinch allowed, so nothing happens.
660 break; 659 break;
661 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_FIRST_RELEASED: 660 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_FIRST_RELEASED:
662 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_SECOND_RELEASED: 661 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_SECOND_RELEASED:
663 TwoFingerTouchReleased(event, point, gestures.get()); 662 TwoFingerTouchReleased(event, point, gestures.get());
664 // We transit into GS_SCROLL even though the touch move can be 663 // We transition into GS_SCROLL even though the touch move can be consumed
665 // consumed and no scroll should happen. crbug.com/240399. 664 // and no scroll should happen. crbug.com/240399.
666 set_state(GS_SCROLL); 665 StartRailFreeScroll(point, gestures.get());
667 break; 666 break;
668 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_FIRST_RELEASED_HANDLED: 667 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_FIRST_RELEASED_HANDLED:
669 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_SECOND_RELEASED_HANDLED: 668 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_SECOND_RELEASED_HANDLED:
670 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_FIRST_CANCELLED: 669 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_FIRST_CANCELLED:
671 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_SECOND_CANCELLED: 670 case GST_PENDING_TWO_FINGER_TAP_NO_PINCH_SECOND_CANCELLED:
672 // We transit into GS_SCROLL even though the touch move can be 671 // We transition into GS_SCROLL even though the touch move can be consumed
673 // consumed and no scroll should happen. crbug.com/240399. 672 // and no scroll should happen. crbug.com/240399.
674 scroll_type_ = ST_FREE; 673 StartRailFreeScroll(point, gestures.get());
675 set_state(GS_SCROLL);
676 break; 674 break;
677 case GST_PENDING_PINCH_FIRST_MOVED: 675 case GST_PENDING_PINCH_FIRST_MOVED:
678 case GST_PENDING_PINCH_SECOND_MOVED: 676 case GST_PENDING_PINCH_SECOND_MOVED:
679 if (TwoFingerTouchMove(event, point, gestures.get())) 677 if (TwoFingerTouchMove(event, point, gestures.get()))
680 set_state(GS_PINCH); 678 set_state(GS_PINCH);
681 break; 679 break;
682 case GST_PENDING_PINCH_FIRST_MOVED_HANDLED: 680 case GST_PENDING_PINCH_FIRST_MOVED_HANDLED:
683 case GST_PENDING_PINCH_SECOND_MOVED_HANDLED: 681 case GST_PENDING_PINCH_SECOND_MOVED_HANDLED:
684 set_state(GS_PENDING_PINCH_NO_PINCH); 682 set_state(GS_PENDING_PINCH_NO_PINCH);
685 break; 683 break;
686 case GST_PENDING_PINCH_FIRST_RELEASED: 684 case GST_PENDING_PINCH_FIRST_RELEASED:
687 case GST_PENDING_PINCH_SECOND_RELEASED: 685 case GST_PENDING_PINCH_SECOND_RELEASED:
688 case GST_PENDING_PINCH_FIRST_CANCELLED: 686 case GST_PENDING_PINCH_FIRST_CANCELLED:
689 case GST_PENDING_PINCH_SECOND_CANCELLED: 687 case GST_PENDING_PINCH_SECOND_CANCELLED:
690 // We transit into GS_SCROLL even though the touch move can be 688 // We transition into GS_SCROLL even though the touch move can be consumed
691 // consumed and no scroll should happen. crbug.com/240399. 689 // and no scroll should happen. crbug.com/240399.
692 scroll_type_ = ST_FREE; 690 StartRailFreeScroll(point, gestures.get());
693 set_state(GS_SCROLL);
694 break; 691 break;
695 case GST_PENDING_PINCH_NO_PINCH_FIRST_MOVED: 692 case GST_PENDING_PINCH_NO_PINCH_FIRST_MOVED:
696 case GST_PENDING_PINCH_NO_PINCH_SECOND_MOVED: 693 case GST_PENDING_PINCH_NO_PINCH_SECOND_MOVED:
697 // No pinch allowed, so nothing happens. 694 // No pinch allowed, so nothing happens.
698 break; 695 break;
699 case GST_PENDING_PINCH_NO_PINCH_FIRST_RELEASED: 696 case GST_PENDING_PINCH_NO_PINCH_FIRST_RELEASED:
700 case GST_PENDING_PINCH_NO_PINCH_SECOND_RELEASED: 697 case GST_PENDING_PINCH_NO_PINCH_SECOND_RELEASED:
701 case GST_PENDING_PINCH_NO_PINCH_FIRST_CANCELLED: 698 case GST_PENDING_PINCH_NO_PINCH_FIRST_CANCELLED:
702 case GST_PENDING_PINCH_NO_PINCH_SECOND_CANCELLED: 699 case GST_PENDING_PINCH_NO_PINCH_SECOND_CANCELLED:
703 // We transit into GS_SCROLL even though the touch move can be 700 // We transition into GS_SCROLL even though the touch move can be consumed
704 // consumed and no scroll should happen. crbug.com/240399. 701 // and no scroll should happen. crbug.com/240399.
705 scroll_type_ = ST_FREE; 702 StartRailFreeScroll(point, gestures.get());
706 set_state(GS_SCROLL);
707 break; 703 break;
708 case GST_PINCH_FIRST_MOVED_HANDLED: 704 case GST_PINCH_FIRST_MOVED_HANDLED:
709 case GST_PINCH_SECOND_MOVED_HANDLED: 705 case GST_PINCH_SECOND_MOVED_HANDLED:
710 case GST_PINCH_THIRD_MOVED_HANDLED: 706 case GST_PINCH_THIRD_MOVED_HANDLED:
711 case GST_PINCH_FOURTH_MOVED_HANDLED: 707 case GST_PINCH_FOURTH_MOVED_HANDLED:
712 case GST_PINCH_FIFTH_MOVED_HANDLED: 708 case GST_PINCH_FIFTH_MOVED_HANDLED:
713 break; 709 break;
714 case GST_PINCH_FIRST_MOVED: 710 case GST_PINCH_FIRST_MOVED:
715 case GST_PINCH_SECOND_MOVED: 711 case GST_PINCH_SECOND_MOVED:
716 case GST_PINCH_THIRD_MOVED: 712 case GST_PINCH_THIRD_MOVED:
(...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after
1472 return; 1468 return;
1473 1469
1474 // Since a timer is running, there should be a non-NULL point. 1470 // Since a timer is running, there should be a non-NULL point.
1475 const GesturePoint* point = GetPointByPointId(0); 1471 const GesturePoint* point = GetPointByPointId(0);
1476 if (!point->IsInsideTouchSlopRegion(event)) { 1472 if (!point->IsInsideTouchSlopRegion(event)) {
1477 GetLongPressTimer()->Stop(); 1473 GetLongPressTimer()->Stop();
1478 GetShowPressTimer()->Stop(); 1474 GetShowPressTimer()->Stop();
1479 } 1475 }
1480 } 1476 }
1481 1477
1478 void GestureSequence::StartRailFreeScroll(const GesturePoint& point,
1479 Gestures* gestures) {
1480 AppendScrollGestureBegin(point, point.first_touch_position(), gestures);
1481 scroll_type_ = ST_FREE;
1482 set_state(GS_SCROLL);
1483 }
1484
1482 } // namespace ui 1485 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/gestures/gesture_sequence.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698