OLD | NEW |
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/base/gestures/gesture_sequence.h" | 5 #include "ui/base/gestures/gesture_sequence.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
589 Gestures* gestures) { | 589 Gestures* gestures) { |
590 gestures->push_back(CreateGestureEvent( | 590 gestures->push_back(CreateGestureEvent( |
591 GestureEventDetails(ui::ET_GESTURE_END, 0, 0), | 591 GestureEventDetails(ui::ET_GESTURE_END, 0, 0), |
592 point.first_touch_position(), | 592 point.first_touch_position(), |
593 flags_, | 593 flags_, |
594 base::Time::FromDoubleT(point.last_touch_time()), | 594 base::Time::FromDoubleT(point.last_touch_time()), |
595 1 << point.touch_id())); | 595 1 << point.touch_id())); |
596 } | 596 } |
597 | 597 |
598 void GestureSequence::AppendClickGestureEvent(const GesturePoint& point, | 598 void GestureSequence::AppendClickGestureEvent(const GesturePoint& point, |
| 599 int tap_count, |
599 Gestures* gestures) { | 600 Gestures* gestures) { |
600 gfx::Rect er = point.enclosing_rectangle(); | 601 gfx::Rect er = point.enclosing_rectangle(); |
601 gfx::Point center = er.CenterPoint(); | 602 gfx::Point center = er.CenterPoint(); |
602 gestures->push_back(CreateGestureEvent( | 603 gestures->push_back(CreateGestureEvent( |
603 GestureEventDetails(ui::ET_GESTURE_TAP, 0, 0), | 604 GestureEventDetails(ui::ET_GESTURE_TAP, tap_count, 0), |
604 center, | 605 center, |
605 flags_, | 606 flags_, |
606 base::Time::FromDoubleT(point.last_touch_time()), | 607 base::Time::FromDoubleT(point.last_touch_time()), |
607 1 << point.touch_id())); | 608 1 << point.touch_id())); |
608 } | 609 } |
609 | 610 |
610 void GestureSequence::AppendDoubleClickGestureEvent(const GesturePoint& point, | 611 void GestureSequence::AppendDoubleClickGestureEvent(const GesturePoint& point, |
611 Gestures* gestures) { | 612 Gestures* gestures) { |
612 gestures->push_back(CreateGestureEvent( | 613 gestures->push_back(CreateGestureEvent( |
613 GestureEventDetails(ui::ET_GESTURE_DOUBLE_TAP, 0, 0), | 614 GestureEventDetails(ui::ET_GESTURE_DOUBLE_TAP, 0, 0), |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
746 point->enclosing_rectangle().CenterPoint(), | 747 point->enclosing_rectangle().CenterPoint(), |
747 flags_, | 748 flags_, |
748 base::Time::FromDoubleT(point->last_touch_time()), | 749 base::Time::FromDoubleT(point->last_touch_time()), |
749 1 << point->touch_id())); | 750 1 << point->touch_id())); |
750 } | 751 } |
751 | 752 |
752 bool GestureSequence::Click(const TouchEvent& event, | 753 bool GestureSequence::Click(const TouchEvent& event, |
753 const GesturePoint& point, Gestures* gestures) { | 754 const GesturePoint& point, Gestures* gestures) { |
754 DCHECK(state_ == GS_PENDING_SYNTHETIC_CLICK); | 755 DCHECK(state_ == GS_PENDING_SYNTHETIC_CLICK); |
755 if (point.IsInClickWindow(event)) { | 756 if (point.IsInClickWindow(event)) { |
756 AppendClickGestureEvent(point, gestures); | 757 bool double_tap = point.IsInDoubleClickWindow(event); |
757 if (point.IsInDoubleClickWindow(event)) | 758 AppendClickGestureEvent(point, double_tap ? 2 : 1, gestures); |
| 759 if (double_tap) |
758 AppendDoubleClickGestureEvent(point, gestures); | 760 AppendDoubleClickGestureEvent(point, gestures); |
759 return true; | 761 return true; |
760 } | 762 } |
761 return false; | 763 return false; |
762 } | 764 } |
763 | 765 |
764 bool GestureSequence::ScrollStart(const TouchEvent& event, | 766 bool GestureSequence::ScrollStart(const TouchEvent& event, |
765 GesturePoint& point, Gestures* gestures) { | 767 GesturePoint& point, Gestures* gestures) { |
766 DCHECK(state_ == GS_PENDING_SYNTHETIC_CLICK); | 768 DCHECK(state_ == GS_PENDING_SYNTHETIC_CLICK); |
767 if (point.IsInClickWindow(event) || | 769 if (point.IsInClickWindow(event) || |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1010 return; | 1012 return; |
1011 | 1013 |
1012 // Since long press timer has been started, there should be a non-NULL point. | 1014 // Since long press timer has been started, there should be a non-NULL point. |
1013 const GesturePoint* point = GetPointByPointId(0); | 1015 const GesturePoint* point = GetPointByPointId(0); |
1014 if (!ui::gestures::IsInsideManhattanSquare(point->first_touch_position(), | 1016 if (!ui::gestures::IsInsideManhattanSquare(point->first_touch_position(), |
1015 event.GetLocation())) | 1017 event.GetLocation())) |
1016 long_press_timer_->Stop(); | 1018 long_press_timer_->Stop(); |
1017 } | 1019 } |
1018 | 1020 |
1019 } // namespace ui | 1021 } // namespace ui |
OLD | NEW |