OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ash/wm/toplevel_window_event_handler.h" | 5 #include "ash/wm/toplevel_window_event_handler.h" |
6 | 6 |
7 #include "ash/shell.h" | 7 #include "ash/shell.h" |
8 #include "ash/wm/resize_shadow_controller.h" | 8 #include "ash/wm/resize_shadow_controller.h" |
9 #include "ash/wm/window_resizer.h" | 9 #include "ash/wm/window_resizer.h" |
10 #include "ash/wm/window_state.h" | 10 #include "ash/wm/window_state.h" |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 | 132 |
133 void ToplevelWindowEventHandler::OnKeyEvent(ui::KeyEvent* event) { | 133 void ToplevelWindowEventHandler::OnKeyEvent(ui::KeyEvent* event) { |
134 if (window_resizer_.get() && event->type() == ui::ET_KEY_PRESSED && | 134 if (window_resizer_.get() && event->type() == ui::ET_KEY_PRESSED && |
135 event->key_code() == ui::VKEY_ESCAPE) { | 135 event->key_code() == ui::VKEY_ESCAPE) { |
136 CompleteDrag(DRAG_REVERT); | 136 CompleteDrag(DRAG_REVERT); |
137 } | 137 } |
138 } | 138 } |
139 | 139 |
140 void ToplevelWindowEventHandler::OnMouseEvent( | 140 void ToplevelWindowEventHandler::OnMouseEvent( |
141 ui::MouseEvent* event) { | 141 ui::MouseEvent* event) { |
| 142 if (event->handled()) |
| 143 return; |
142 if ((event->flags() & | 144 if ((event->flags() & |
143 (ui::EF_MIDDLE_MOUSE_BUTTON | ui::EF_RIGHT_MOUSE_BUTTON)) != 0) | 145 (ui::EF_MIDDLE_MOUSE_BUTTON | ui::EF_RIGHT_MOUSE_BUTTON)) != 0) |
144 return; | 146 return; |
145 | 147 |
146 if (in_gesture_drag_) | 148 if (in_gesture_drag_) |
147 return; | 149 return; |
148 | 150 |
149 aura::Window* target = static_cast<aura::Window*>(event->target()); | 151 aura::Window* target = static_cast<aura::Window*>(event->target()); |
150 switch (event->type()) { | 152 switch (event->type()) { |
151 case ui::ET_MOUSE_PRESSED: | 153 case ui::ET_MOUSE_PRESSED: |
(...skipping 11 matching lines...) Expand all Loading... |
163 break; | 165 break; |
164 case ui::ET_MOUSE_EXITED: | 166 case ui::ET_MOUSE_EXITED: |
165 HandleMouseExited(target, event); | 167 HandleMouseExited(target, event); |
166 break; | 168 break; |
167 default: | 169 default: |
168 break; | 170 break; |
169 } | 171 } |
170 } | 172 } |
171 | 173 |
172 void ToplevelWindowEventHandler::OnGestureEvent(ui::GestureEvent* event) { | 174 void ToplevelWindowEventHandler::OnGestureEvent(ui::GestureEvent* event) { |
| 175 if (event->handled()) |
| 176 return; |
173 aura::Window* target = static_cast<aura::Window*>(event->target()); | 177 aura::Window* target = static_cast<aura::Window*>(event->target()); |
174 if (!target->delegate()) | 178 if (!target->delegate()) |
175 return; | 179 return; |
176 | 180 |
177 if (window_resizer_.get() && !in_gesture_drag_) | 181 if (window_resizer_.get() && !in_gesture_drag_) |
178 return; | 182 return; |
179 | 183 |
180 if (window_resizer_.get() && | 184 if (window_resizer_.get() && |
181 window_resizer_->resizer()->GetTarget() != target) { | 185 window_resizer_->resizer()->GetTarget() != target) { |
182 return; | 186 return; |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 aura::Window* target, | 381 aura::Window* target, |
378 ui::MouseEvent* event) { | 382 ui::MouseEvent* event) { |
379 if (event->phase() != ui::EP_PRETARGET) | 383 if (event->phase() != ui::EP_PRETARGET) |
380 return; | 384 return; |
381 | 385 |
382 CompleteDrag(event->type() == ui::ET_MOUSE_RELEASED ? | 386 CompleteDrag(event->type() == ui::ET_MOUSE_RELEASED ? |
383 DRAG_COMPLETE : DRAG_REVERT); | 387 DRAG_COMPLETE : DRAG_REVERT); |
384 // Completing the drag may result in hiding the window. If this happens | 388 // Completing the drag may result in hiding the window. If this happens |
385 // return true so no other handlers/observers see the event. Otherwise | 389 // return true so no other handlers/observers see the event. Otherwise |
386 // they see the event on a hidden window. | 390 // they see the event on a hidden window. |
387 if (event->type() == ui::ET_MOUSE_CAPTURE_CHANGED && | 391 if (window_resizer_ && |
| 392 event->type() == ui::ET_MOUSE_CAPTURE_CHANGED && |
388 !target->IsVisible()) { | 393 !target->IsVisible()) { |
389 event->StopPropagation(); | 394 event->StopPropagation(); |
390 } | 395 } |
391 } | 396 } |
392 | 397 |
393 void ToplevelWindowEventHandler::HandleDrag( | 398 void ToplevelWindowEventHandler::HandleDrag( |
394 aura::Window* target, | 399 aura::Window* target, |
395 ui::LocatedEvent* event) { | 400 ui::LocatedEvent* event) { |
396 // This function only be triggered to move window | 401 // This function only be triggered to move window |
397 // by mouse drag or touch move event. | 402 // by mouse drag or touch move event. |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
489 | 494 |
490 void ToplevelWindowEventHandler::ResizerWindowDestroyed() { | 495 void ToplevelWindowEventHandler::ResizerWindowDestroyed() { |
491 // We explicitly don't invoke RevertDrag() since that may do things to window. | 496 // We explicitly don't invoke RevertDrag() since that may do things to window. |
492 // Instead we destroy the resizer. | 497 // Instead we destroy the resizer. |
493 window_resizer_.reset(); | 498 window_resizer_.reset(); |
494 | 499 |
495 CompleteDrag(DRAG_REVERT); | 500 CompleteDrag(DRAG_REVERT); |
496 } | 501 } |
497 | 502 |
498 } // namespace ash | 503 } // namespace ash |
OLD | NEW |