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

Unified Diff: ui/events/gesture_detection/scale_gesture_detector.cc

Issue 298823006: [Aura] Reduce frequency of PinchUpdate events. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 side-by-side diff with in-line comments
Download patch
Index: ui/events/gesture_detection/scale_gesture_detector.cc
diff --git a/ui/events/gesture_detection/scale_gesture_detector.cc b/ui/events/gesture_detection/scale_gesture_detector.cc
index f9e091bc6ce55204704cf144593c114f7050ca51..5ac30d3e6f89fa50e200aad94c326d5970cd6dfd 100644
--- a/ui/events/gesture_detection/scale_gesture_detector.cc
+++ b/ui/events/gesture_detection/scale_gesture_detector.cc
@@ -33,7 +33,8 @@ const float kScaleFactor = .5f;
ScaleGestureDetector::Config::Config()
: min_scaling_touch_major(48),
min_scaling_span(200),
- quick_scale_enabled(true) {}
+ quick_scale_enabled(true),
+ min_pinch_update_distance(0) {}
ScaleGestureDetector::Config::~Config() {}
@@ -80,6 +81,7 @@ ScaleGestureDetector::ScaleGestureDetector(const Config& config,
span_slop_ =
(config.gesture_detector_config.touch_slop + kSlopEpsilon) * 2;
touch_min_major_ = config.min_scaling_touch_major;
+ min_pinch_update_distance_ = config.min_pinch_update_distance;
min_span_ = config.min_scaling_span + kSlopEpsilon;
SetQuickScaleEnabled(config.quick_scale_enabled);
}
@@ -205,6 +207,9 @@ bool ScaleGestureDetector::OnTouchEvent(const MotionEvent& event) {
initial_span_ = prev_span_ = curr_span_ = span;
}
+ bool pinch_occured =
+ std::abs(span - prev_span_) >= min_pinch_update_distance_;
jdduke (slow) 2014/05/21 19:30:37 Can we move this check into the ACTION_MOVE portio
tdresser 2014/05/22 12:31:44 We need to read prev_span_ before it is modified b
+
const float min_span = InDoubleTapMode() ? span_slop_ : min_span_;
if (!in_progress_ && span >= min_span &&
(was_in_progress || std::abs(span - initial_span_) > span_slop_)) {
@@ -217,6 +222,9 @@ bool ScaleGestureDetector::OnTouchEvent(const MotionEvent& event) {
// Handle motion; focal point and span/scale factor are changing.
if (action == MotionEvent::ACTION_MOVE) {
+ if (!pinch_occured)
+ return true;
+
curr_span_x_ = span_x;
curr_span_y_ = span_y;
curr_span_ = span;

Powered by Google App Engine
This is Rietveld 408576698