| Index: athena/wm/bezel_controller.cc
|
| diff --git a/athena/wm/bezel_controller.cc b/athena/wm/bezel_controller.cc
|
| index c4a53a04129c1e0ab5f3c1ca4878a5a3d5d34d8a..9ac2a030f494f48cb3c01f875d53d6e8715c423a 100644
|
| --- a/athena/wm/bezel_controller.cc
|
| +++ b/athena/wm/bezel_controller.cc
|
| @@ -83,15 +83,21 @@ void BezelController::SetState(BezelController::State state,
|
| if (!left_right_delegate_ || state == state_)
|
| return;
|
|
|
| - if (state == BEZEL_SCROLLING_TWO_FINGERS)
|
| - left_right_delegate_->BezelScrollBegin(scroll_bezel_, scroll_delta);
|
| - else if (state_ == BEZEL_SCROLLING_TWO_FINGERS)
|
| - left_right_delegate_->BezelScrollEnd();
|
| + State old_state = state_;
|
| state_ = state;
|
| +
|
| if (state == NONE) {
|
| scroll_bezel_ = BEZEL_NONE;
|
| scroll_target_ = NULL;
|
| }
|
| +
|
| + if (state == BEZEL_SCROLLING_TWO_FINGERS) {
|
| + left_right_delegate_->BezelScrollBegin(scroll_bezel_, scroll_delta);
|
| + } else if (old_state == BEZEL_SCROLLING_TWO_FINGERS) {
|
| + // If BezelScrollEnd() hides |scroll_target_|, ET_GESTURE_END is dispatched
|
| + // and we get a reentrant call to SetState().
|
| + left_right_delegate_->BezelScrollEnd();
|
| + }
|
| }
|
|
|
| void BezelController::OnGestureEvent(ui::GestureEvent* event) {
|
|
|