| Index: athena/wm/bezel_controller.cc
|
| diff --git a/athena/wm/bezel_controller.cc b/athena/wm/bezel_controller.cc
|
| index a4e815602e7b32ecee1667e88caf0962f71199d6..fbf9f92fc4eda5e509aa5ce6e5628cdec60c079f 100644
|
| --- a/athena/wm/bezel_controller.cc
|
| +++ b/athena/wm/bezel_controller.cc
|
| @@ -68,15 +68,21 @@ void BezelController::SetState(BezelController::State state,
|
| if (!left_right_delegate_ || state == state_)
|
| return;
|
|
|
| - if (state == BEZEL_SCROLLING_TWO_FINGERS)
|
| - left_right_delegate_->ScrollBegin(scroll_bezel_, scroll_delta);
|
| - else if (state_ == BEZEL_SCROLLING_TWO_FINGERS)
|
| - left_right_delegate_->ScrollEnd();
|
| + 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_->ScrollBegin(scroll_bezel_, scroll_delta);
|
| + } else if (old_state == BEZEL_SCROLLING_TWO_FINGERS) {
|
| + // If ScrollEnd() hides |scroll_target_|, ET_GESTURE_END is dispatched
|
| + // and we get a reentrant call to SetState().
|
| + left_right_delegate_->ScrollEnd();
|
| + }
|
| }
|
|
|
| // Only implemented for LEFT and RIGHT bezels ATM.
|
|
|