OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "mash/wm/frame/move_event_handler.h" | 5 #include "mash/wm/frame/move_event_handler.h" |
6 | 6 |
7 #include "components/mus/public/cpp/window.h" | 7 #include "components/mus/public/cpp/window.h" |
8 #include "components/mus/public/interfaces/cursor.mojom.h" | 8 #include "components/mus/public/interfaces/cursor.mojom.h" |
9 #include "mash/wm/frame/move_loop.h" | 9 #include "mash/wm/frame/move_loop.h" |
10 #include "mojo/converters/input_events/input_events_type_converters.h" | 10 #include "mojo/converters/input_events/input_events_type_converters.h" |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 root_window_->AddObserver(this); | 49 root_window_->AddObserver(this); |
50 root_window_->AddPreTargetHandler(this); | 50 root_window_->AddPreTargetHandler(this); |
51 } | 51 } |
52 | 52 |
53 MoveEventHandler::~MoveEventHandler() { | 53 MoveEventHandler::~MoveEventHandler() { |
54 Detach(); | 54 Detach(); |
55 } | 55 } |
56 | 56 |
57 void MoveEventHandler::ProcessLocatedEvent(ui::LocatedEvent* event) { | 57 void MoveEventHandler::ProcessLocatedEvent(ui::LocatedEvent* event) { |
58 const bool had_move_loop = move_loop_.get() != nullptr; | 58 const bool had_move_loop = move_loop_.get() != nullptr; |
59 ui::Event* ui_event = static_cast<ui::Event*>(event); | 59 DCHECK(event->IsMouseEvent() || event->IsTouchEvent()); |
| 60 |
| 61 // TODO(moshayedi): no need for this once MoveEventHandler directly receives |
| 62 // pointer events. |
| 63 scoped_ptr<ui::PointerEvent> pointer_event; |
| 64 if (event->IsMouseEvent()) |
| 65 pointer_event.reset(new ui::PointerEvent(*event->AsMouseEvent())); |
| 66 else |
| 67 pointer_event.reset(new ui::PointerEvent(*event->AsTouchEvent())); |
| 68 |
60 if (move_loop_) { | 69 if (move_loop_) { |
61 if (move_loop_->Move(*mus::mojom::Event::From(*ui_event)) == MoveLoop::DONE) | 70 if (move_loop_->Move(*pointer_event.get()) == MoveLoop::DONE) |
62 move_loop_.reset(); | 71 move_loop_.reset(); |
63 } else if (event->type() == ui::ET_MOUSE_PRESSED || | 72 } else if (pointer_event->type() == ui::ET_POINTER_DOWN) { |
64 event->type() == ui::ET_TOUCH_PRESSED) { | 73 const int ht_location = GetNonClientComponentForEvent(pointer_event.get()); |
65 const int ht_location = GetNonClientComponentForEvent(event); | |
66 if (ht_location != HTNOWHERE) { | 74 if (ht_location != HTNOWHERE) { |
67 // TODO(sky): convert MoveLoop to take ui::Event. | 75 move_loop_ = |
68 move_loop_ = MoveLoop::Create(mus_window_, ht_location, | 76 MoveLoop::Create(mus_window_, ht_location, *pointer_event.get()); |
69 *mus::mojom::Event::From(*ui_event)); | |
70 } | 77 } |
71 } else if (event->type() == ui::ET_MOUSE_MOVED) { | 78 } else if (pointer_event->type() == ui::ET_POINTER_MOVED) { |
72 const int ht_location = GetNonClientComponentForEvent(event); | 79 const int ht_location = GetNonClientComponentForEvent(pointer_event.get()); |
73 mus_window_->SetPredefinedCursor(CursorForWindowComponent(ht_location)); | 80 mus_window_->SetPredefinedCursor(CursorForWindowComponent(ht_location)); |
74 } | 81 } |
75 if (had_move_loop || move_loop_) | 82 if (had_move_loop || move_loop_) |
76 event->SetHandled(); | 83 event->SetHandled(); |
77 } | 84 } |
78 | 85 |
79 int MoveEventHandler::GetNonClientComponentForEvent( | 86 int MoveEventHandler::GetNonClientComponentForEvent( |
80 const ui::LocatedEvent* event) { | 87 const ui::LocatedEvent* event) { |
81 return aura_window_->delegate()->GetNonClientComponent(event->location()); | 88 return aura_window_->delegate()->GetNonClientComponent(event->location()); |
82 } | 89 } |
(...skipping 24 matching lines...) Expand all Loading... |
107 event->SetHandled(); | 114 event->SetHandled(); |
108 } | 115 } |
109 | 116 |
110 void MoveEventHandler::OnWindowDestroying(aura::Window* window) { | 117 void MoveEventHandler::OnWindowDestroying(aura::Window* window) { |
111 DCHECK_EQ(root_window_, window); | 118 DCHECK_EQ(root_window_, window); |
112 Detach(); | 119 Detach(); |
113 } | 120 } |
114 | 121 |
115 } // namespace wm | 122 } // namespace wm |
116 } // namespace mash | 123 } // namespace mash |
OLD | NEW |