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 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 | 176 |
177 void ToplevelWindowEventHandler::OnKeyEvent(ui::KeyEvent* event) { | 177 void ToplevelWindowEventHandler::OnKeyEvent(ui::KeyEvent* event) { |
178 if (window_resizer_.get() && event->type() == ui::ET_KEY_PRESSED && | 178 if (window_resizer_.get() && event->type() == ui::ET_KEY_PRESSED && |
179 event->key_code() == ui::VKEY_ESCAPE) { | 179 event->key_code() == ui::VKEY_ESCAPE) { |
180 CompleteDrag(DRAG_REVERT); | 180 CompleteDrag(DRAG_REVERT); |
181 } | 181 } |
182 } | 182 } |
183 | 183 |
184 void ToplevelWindowEventHandler::OnMouseEvent( | 184 void ToplevelWindowEventHandler::OnMouseEvent( |
185 ui::MouseEvent* event) { | 185 ui::MouseEvent* event) { |
| 186 if (event->handled()) |
| 187 return; |
186 if ((event->flags() & | 188 if ((event->flags() & |
187 (ui::EF_MIDDLE_MOUSE_BUTTON | ui::EF_RIGHT_MOUSE_BUTTON)) != 0) | 189 (ui::EF_MIDDLE_MOUSE_BUTTON | ui::EF_RIGHT_MOUSE_BUTTON)) != 0) |
188 return; | 190 return; |
189 | 191 |
190 if (in_gesture_drag_) | 192 if (in_gesture_drag_) |
191 return; | 193 return; |
192 | 194 |
193 aura::Window* target = static_cast<aura::Window*>(event->target()); | 195 aura::Window* target = static_cast<aura::Window*>(event->target()); |
194 switch (event->type()) { | 196 switch (event->type()) { |
195 case ui::ET_MOUSE_PRESSED: | 197 case ui::ET_MOUSE_PRESSED: |
(...skipping 11 matching lines...) Expand all Loading... |
207 break; | 209 break; |
208 case ui::ET_MOUSE_EXITED: | 210 case ui::ET_MOUSE_EXITED: |
209 HandleMouseExited(target, event); | 211 HandleMouseExited(target, event); |
210 break; | 212 break; |
211 default: | 213 default: |
212 break; | 214 break; |
213 } | 215 } |
214 } | 216 } |
215 | 217 |
216 void ToplevelWindowEventHandler::OnGestureEvent(ui::GestureEvent* event) { | 218 void ToplevelWindowEventHandler::OnGestureEvent(ui::GestureEvent* event) { |
| 219 if (event->handled()) |
| 220 return; |
217 aura::Window* target = static_cast<aura::Window*>(event->target()); | 221 aura::Window* target = static_cast<aura::Window*>(event->target()); |
218 if (!target->delegate()) | 222 if (!target->delegate()) |
219 return; | 223 return; |
220 | 224 |
221 if (window_resizer_.get() && !in_gesture_drag_) | 225 if (window_resizer_.get() && !in_gesture_drag_) |
222 return; | 226 return; |
223 | 227 |
224 if (window_resizer_.get() && | 228 if (window_resizer_.get() && |
225 window_resizer_->resizer()->GetTarget() != target) { | 229 window_resizer_->resizer()->GetTarget() != target) { |
226 return; | 230 return; |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
488 aura::Window* target, | 492 aura::Window* target, |
489 ui::MouseEvent* event) { | 493 ui::MouseEvent* event) { |
490 if (event->phase() != ui::EP_PRETARGET) | 494 if (event->phase() != ui::EP_PRETARGET) |
491 return; | 495 return; |
492 | 496 |
493 CompleteDrag(event->type() == ui::ET_MOUSE_RELEASED ? | 497 CompleteDrag(event->type() == ui::ET_MOUSE_RELEASED ? |
494 DRAG_COMPLETE : DRAG_REVERT); | 498 DRAG_COMPLETE : DRAG_REVERT); |
495 // Completing the drag may result in hiding the window. If this happens | 499 // Completing the drag may result in hiding the window. If this happens |
496 // return true so no other handlers/observers see the event. Otherwise | 500 // return true so no other handlers/observers see the event. Otherwise |
497 // they see the event on a hidden window. | 501 // they see the event on a hidden window. |
498 if (event->type() == ui::ET_MOUSE_CAPTURE_CHANGED && | 502 if (window_resizer_ && |
| 503 event->type() == ui::ET_MOUSE_CAPTURE_CHANGED && |
499 !target->IsVisible()) { | 504 !target->IsVisible()) { |
500 event->StopPropagation(); | 505 event->StopPropagation(); |
501 } | 506 } |
502 } | 507 } |
503 | 508 |
504 void ToplevelWindowEventHandler::HandleDrag( | 509 void ToplevelWindowEventHandler::HandleDrag( |
505 aura::Window* target, | 510 aura::Window* target, |
506 ui::LocatedEvent* event) { | 511 ui::LocatedEvent* event) { |
507 // This function only be triggered to move window | 512 // This function only be triggered to move window |
508 // by mouse drag or touch move event. | 513 // by mouse drag or touch move event. |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
600 | 605 |
601 void ToplevelWindowEventHandler::ResizerWindowDestroyed() { | 606 void ToplevelWindowEventHandler::ResizerWindowDestroyed() { |
602 // We explicitly don't invoke RevertDrag() since that may do things to window. | 607 // We explicitly don't invoke RevertDrag() since that may do things to window. |
603 // Instead we destroy the resizer. | 608 // Instead we destroy the resizer. |
604 window_resizer_.reset(); | 609 window_resizer_.reset(); |
605 | 610 |
606 CompleteDrag(DRAG_REVERT); | 611 CompleteDrag(DRAG_REVERT); |
607 } | 612 } |
608 | 613 |
609 } // namespace ash | 614 } // namespace ash |
OLD | NEW |