| Index: ui/base/gestures/gesture_sequence.cc
|
| diff --git a/ui/base/gestures/gesture_sequence.cc b/ui/base/gestures/gesture_sequence.cc
|
| index 42c19b356633cec8514d0eb600bcce024c014b5a..b52babb2b6a6ea0780a751ea9e40ba43f5a2397e 100644
|
| --- a/ui/base/gestures/gesture_sequence.cc
|
| +++ b/ui/base/gestures/gesture_sequence.cc
|
| @@ -675,12 +675,12 @@ void GestureSequence::AppendScrollGestureUpdate(const GesturePoint& point,
|
| gfx::Point current_center = bounding_box_.CenterPoint();
|
| int dx = current_center.x() - bounding_box_last_center_.x();
|
| int dy = current_center.y() - bounding_box_last_center_.y();
|
| - if (dx == 0 && dy == 0)
|
| - return;
|
| if (scroll_type_ == ST_HORIZONTAL)
|
| dy = 0;
|
| else if (scroll_type_ == ST_VERTICAL)
|
| dx = 0;
|
| + if (dx == 0 && dy == 0)
|
| + return;
|
|
|
| gestures->push_back(CreateGestureEvent(
|
| GestureEventDetails(ui::ET_GESTURE_SCROLL_UPDATE, dx, dy),
|
| @@ -908,6 +908,22 @@ bool GestureSequence::PinchUpdate(const TouchEvent& event,
|
| const GesturePoint& point, Gestures* gestures) {
|
| DCHECK(state_ == GS_PINCH);
|
|
|
| + // It is possible that the none of the touch-points changed their position,
|
| + // but their radii changed, and that caused the bounding box to also change.
|
| + // But in such cases, we do not want to either pinch or scroll.
|
| + // To avoid small jiggles, it is also necessary to make sure that at least one
|
| + // of the fingers moved enough before a pinch or scroll update is created.
|
| + bool did_scroll = false;
|
| + for (int i = 0; i < kMaxGesturePoints; ++i) {
|
| + if (!points_[i].in_use() || !points_[i].DidScroll(event, 2))
|
| + continue;
|
| + did_scroll = true;
|
| + break;
|
| + }
|
| +
|
| + if (!did_scroll)
|
| + return false;
|
| +
|
| float distance = BoundingBoxDiagonal(bounding_box_);
|
|
|
| if (abs(distance - pinch_distance_current_) >=
|
|
|