OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "ui/views/animation/ink_drop_host_view.h" | 5 #include "ui/views/animation/ink_drop_host_view.h" |
6 | 6 |
7 #include "ui/events/event.h" | 7 #include "ui/events/event.h" |
8 #include "ui/events/scoped_target_handler.h" | 8 #include "ui/events/scoped_target_handler.h" |
9 #include "ui/gfx/color_palette.h" | 9 #include "ui/gfx/color_palette.h" |
10 #include "ui/gfx/geometry/size_conversions.h" | 10 #include "ui/gfx/geometry/size_conversions.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 return gfx::ScaleToCeiledSize(gfx::Size(small_size), kLargeInkDropScale); | 31 return gfx::ScaleToCeiledSize(gfx::Size(small_size), kLargeInkDropScale); |
32 } | 32 } |
33 | 33 |
34 } // namespace | 34 } // namespace |
35 | 35 |
36 // static | 36 // static |
37 const int InkDropHostView::kInkDropSmallCornerRadius = 2; | 37 const int InkDropHostView::kInkDropSmallCornerRadius = 2; |
38 | 38 |
39 // An EventHandler that is guaranteed to be invoked and is not prone to | 39 // An EventHandler that is guaranteed to be invoked and is not prone to |
40 // InkDropHostView descendents who do not call | 40 // InkDropHostView descendents who do not call |
41 // InkDropHostView::OnGestureEvent(). | 41 // InkDropHostView::OnGestureEvent(). Only one instance of this class can exist |
| 42 // at any given time for each ink drop host view. |
42 // | 43 // |
43 // TODO(bruthig): Consider getting rid of this class. | 44 // TODO(bruthig): Consider getting rid of this class. |
44 class InkDropHostView::InkDropGestureHandler : public ui::EventHandler { | 45 class InkDropHostView::InkDropGestureHandler : public ui::EventHandler { |
45 public: | 46 public: |
46 InkDropGestureHandler(InkDropHostView* host_view, InkDrop* ink_drop) | 47 InkDropGestureHandler(InkDropHostView* host_view, InkDrop* ink_drop) |
47 : target_handler_(new ui::ScopedTargetHandler(host_view, this)), | 48 : target_handler_(new ui::ScopedTargetHandler(host_view, this)), |
48 host_view_(host_view), | 49 host_view_(host_view), |
49 ink_drop_(ink_drop) {} | 50 ink_drop_(ink_drop) {} |
50 | 51 |
51 ~InkDropGestureHandler() override {} | 52 ~InkDropGestureHandler() override {} |
52 | 53 |
| 54 void SetInkDrop(InkDrop* ink_drop) { ink_drop_ = ink_drop; } |
| 55 |
53 // ui::EventHandler: | 56 // ui::EventHandler: |
54 void OnGestureEvent(ui::GestureEvent* event) override { | 57 void OnGestureEvent(ui::GestureEvent* event) override { |
55 InkDropState current_ink_drop_state = ink_drop_->GetTargetInkDropState(); | 58 InkDropState current_ink_drop_state = ink_drop_->GetTargetInkDropState(); |
56 | 59 |
57 InkDropState ink_drop_state = InkDropState::HIDDEN; | 60 InkDropState ink_drop_state = InkDropState::HIDDEN; |
58 switch (event->type()) { | 61 switch (event->type()) { |
59 case ui::ET_GESTURE_TAP_DOWN: | 62 case ui::ET_GESTURE_TAP_DOWN: |
60 ink_drop_state = InkDropState::ACTION_PENDING; | 63 ink_drop_state = InkDropState::ACTION_PENDING; |
61 // The ui::ET_GESTURE_TAP_DOWN event needs to be marked as handled so | 64 // The ui::ET_GESTURE_TAP_DOWN event needs to be marked as handled so |
62 // that | 65 // that |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 return gfx::kPlaceholderColor; | 219 return gfx::kPlaceholderColor; |
217 } | 220 } |
218 | 221 |
219 bool InkDropHostView::ShouldShowInkDropForFocus() const { | 222 bool InkDropHostView::ShouldShowInkDropForFocus() const { |
220 return false; | 223 return false; |
221 } | 224 } |
222 | 225 |
223 void InkDropHostView::SetHasInkDrop(bool has_an_ink_drop) { | 226 void InkDropHostView::SetHasInkDrop(bool has_an_ink_drop) { |
224 if (has_an_ink_drop) { | 227 if (has_an_ink_drop) { |
225 ink_drop_.reset(new InkDropImpl(this)); | 228 ink_drop_.reset(new InkDropImpl(this)); |
226 gesture_handler_.reset(new InkDropGestureHandler(this, ink_drop_.get())); | 229 if (!gesture_handler_) |
| 230 gesture_handler_.reset(new InkDropGestureHandler(this, ink_drop_.get())); |
| 231 else |
| 232 gesture_handler_->SetInkDrop(ink_drop_.get()); |
227 } else { | 233 } else { |
228 gesture_handler_.reset(); | 234 gesture_handler_.reset(); |
229 ink_drop_.reset(new InkDropStub()); | 235 ink_drop_.reset(new InkDropStub()); |
230 } | 236 } |
231 } | 237 } |
232 | 238 |
233 } // namespace views | 239 } // namespace views |
OLD | NEW |