OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "athena/wm/bezel_controller.h" | 5 #include "athena/wm/bezel_controller.h" |
6 | 6 |
7 #include "ui/aura/window.h" | 7 #include "ui/aura/window.h" |
8 #include "ui/events/event_handler.h" | 8 #include "ui/events/event_handler.h" |
9 #include "ui/gfx/display.h" | 9 #include "ui/gfx/display.h" |
10 #include "ui/gfx/geometry/point_conversions.h" | 10 #include "ui/gfx/geometry/point_conversions.h" |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 DCHECK_NE(state, BEZEL_SCROLLING_TWO_FINGERS); | 61 DCHECK_NE(state, BEZEL_SCROLLING_TWO_FINGERS); |
62 DCHECK_NE(state, BEZEL_SCROLLING_ONE_FINGER); | 62 DCHECK_NE(state, BEZEL_SCROLLING_ONE_FINGER); |
63 SetState(state, kScrollDeltaNone); | 63 SetState(state, kScrollDeltaNone); |
64 } | 64 } |
65 | 65 |
66 void BezelController::SetState(BezelController::State state, | 66 void BezelController::SetState(BezelController::State state, |
67 float scroll_delta) { | 67 float scroll_delta) { |
68 if (!left_right_delegate_ || state == state_) | 68 if (!left_right_delegate_ || state == state_) |
69 return; | 69 return; |
70 | 70 |
71 if (state == BEZEL_SCROLLING_TWO_FINGERS) | 71 State old_state = state_; |
72 left_right_delegate_->ScrollBegin(scroll_bezel_, scroll_delta); | |
73 else if (state_ == BEZEL_SCROLLING_TWO_FINGERS) | |
74 left_right_delegate_->ScrollEnd(); | |
75 state_ = state; | 72 state_ = state; |
| 73 |
76 if (state == NONE) { | 74 if (state == NONE) { |
77 scroll_bezel_ = BEZEL_NONE; | 75 scroll_bezel_ = BEZEL_NONE; |
78 scroll_target_ = NULL; | 76 scroll_target_ = NULL; |
79 } | 77 } |
| 78 |
| 79 if (state == BEZEL_SCROLLING_TWO_FINGERS) { |
| 80 left_right_delegate_->ScrollBegin(scroll_bezel_, scroll_delta); |
| 81 } else if (old_state == BEZEL_SCROLLING_TWO_FINGERS) { |
| 82 // If ScrollEnd() hides |scroll_target_|, ET_GESTURE_END is dispatched |
| 83 // and we get a reentrant call to SetState(). |
| 84 left_right_delegate_->ScrollEnd(); |
| 85 } |
80 } | 86 } |
81 | 87 |
82 // Only implemented for LEFT and RIGHT bezels ATM. | 88 // Only implemented for LEFT and RIGHT bezels ATM. |
83 BezelController::Bezel BezelController::GetBezel(const gfx::PointF& location) { | 89 BezelController::Bezel BezelController::GetBezel(const gfx::PointF& location) { |
84 int screen_width = GetDisplay(container_).bounds().width(); | 90 int screen_width = GetDisplay(container_).bounds().width(); |
85 if (location.x() < kBezelWidth) { | 91 if (location.x() < kBezelWidth) { |
86 return BEZEL_LEFT; | 92 return BEZEL_LEFT; |
87 } else if (location.x() > screen_width - kBezelWidth) { | 93 } else if (location.x() > screen_width - kBezelWidth) { |
88 return BEZEL_RIGHT; | 94 return BEZEL_RIGHT; |
89 } else { | 95 } else { |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 if (state_ != BEZEL_SCROLLING_TWO_FINGERS) | 186 if (state_ != BEZEL_SCROLLING_TWO_FINGERS) |
181 return; | 187 return; |
182 | 188 |
183 left_right_delegate_->ScrollUpdate(scroll_delta); | 189 left_right_delegate_->ScrollUpdate(scroll_delta); |
184 if (left_right_delegate_->CanScroll()) | 190 if (left_right_delegate_->CanScroll()) |
185 event->SetHandled(); | 191 event->SetHandled(); |
186 } | 192 } |
187 } | 193 } |
188 | 194 |
189 } // namespace athena | 195 } // namespace athena |
OLD | NEW |