| 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 "ui/aura/window_event_dispatcher.h" | 5 #include "ui/aura/window_event_dispatcher.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 event->ConvertLocationToTarget(window(), target); | 146 event->ConvertLocationToTarget(window(), target); |
| 147 DispatchDetails details = DispatchEvent(target, event); | 147 DispatchDetails details = DispatchEvent(target, event); |
| 148 if (details.dispatcher_destroyed) | 148 if (details.dispatcher_destroyed) |
| 149 return; | 149 return; |
| 150 } | 150 } |
| 151 } | 151 } |
| 152 | 152 |
| 153 DispatchDetails WindowEventDispatcher::DispatchMouseExitAtPoint( | 153 DispatchDetails WindowEventDispatcher::DispatchMouseExitAtPoint( |
| 154 Window* window, | 154 Window* window, |
| 155 const gfx::Point& point) { | 155 const gfx::Point& point) { |
| 156 ui::MouseEvent event(ui::ET_MOUSE_EXITED, point, point, ui::EventTimeForNow(), | 156 ui::MouseEvent event( |
| 157 ui::EF_NONE, ui::EF_NONE); | 157 ui::ET_MOUSE_EXITED, point, point, ui::EventTimeForNow(), ui::EF_NONE, |
| 158 ui::EF_NONE, |
| 159 ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 158 return DispatchMouseEnterOrExit(window, event, ui::ET_MOUSE_EXITED); | 160 return DispatchMouseEnterOrExit(window, event, ui::ET_MOUSE_EXITED); |
| 159 } | 161 } |
| 160 | 162 |
| 161 void WindowEventDispatcher::ProcessedTouchEvent(uint32 unique_event_id, | 163 void WindowEventDispatcher::ProcessedTouchEvent(uint32 unique_event_id, |
| 162 Window* window, | 164 Window* window, |
| 163 ui::EventResult result) { | 165 ui::EventResult result) { |
| 164 scoped_ptr<ui::GestureRecognizer::Gestures> gestures( | 166 scoped_ptr<ui::GestureRecognizer::Gestures> gestures( |
| 165 ui::GestureRecognizer::Get()->AckTouchEvent(unique_event_id, result, | 167 ui::GestureRecognizer::Get()->AckTouchEvent(unique_event_id, result, |
| 166 window)); | 168 window)); |
| 167 DispatchDetails details = ProcessGestures(gestures.get()); | 169 DispatchDetails details = ProcessGestures(gestures.get()); |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 359 Window* new_capture) { | 361 Window* new_capture) { |
| 360 // |mouse_moved_handler_| may have been set to a Window in a different root | 362 // |mouse_moved_handler_| may have been set to a Window in a different root |
| 361 // (see below). Clear it here to ensure we don't end up referencing a stale | 363 // (see below). Clear it here to ensure we don't end up referencing a stale |
| 362 // Window. | 364 // Window. |
| 363 if (mouse_moved_handler_ && !window()->Contains(mouse_moved_handler_)) | 365 if (mouse_moved_handler_ && !window()->Contains(mouse_moved_handler_)) |
| 364 mouse_moved_handler_ = NULL; | 366 mouse_moved_handler_ = NULL; |
| 365 | 367 |
| 366 if (old_capture && old_capture->GetRootWindow() == window() && | 368 if (old_capture && old_capture->GetRootWindow() == window() && |
| 367 old_capture->delegate()) { | 369 old_capture->delegate()) { |
| 368 // Send a capture changed event with bogus location data. | 370 // Send a capture changed event with bogus location data. |
| 369 ui::MouseEvent event(ui::ET_MOUSE_CAPTURE_CHANGED, gfx::Point(), | 371 ui::MouseEvent event( |
| 370 gfx::Point(), ui::EventTimeForNow(), 0, 0); | 372 ui::ET_MOUSE_CAPTURE_CHANGED, gfx::Point(), gfx::Point(), |
| 373 ui::EventTimeForNow(), 0, 0, |
| 374 ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 371 | 375 |
| 372 DispatchDetails details = DispatchEvent(old_capture, &event); | 376 DispatchDetails details = DispatchEvent(old_capture, &event); |
| 373 if (details.dispatcher_destroyed) | 377 if (details.dispatcher_destroyed) |
| 374 return; | 378 return; |
| 375 | 379 |
| 376 if (!details.target_destroyed) | 380 if (!details.target_destroyed) |
| 377 old_capture->delegate()->OnCaptureLost(); | 381 old_capture->delegate()->OnCaptureLost(); |
| 378 } | 382 } |
| 379 | 383 |
| 380 if (new_capture) { | 384 if (new_capture) { |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 716 // DRAGGED event can be synthesized in the incorrect host. So avoid | 720 // DRAGGED event can be synthesized in the incorrect host. So avoid |
| 717 // synthesizing any events at all. | 721 // synthesizing any events at all. |
| 718 if (Env::GetInstance()->mouse_button_flags()) | 722 if (Env::GetInstance()->mouse_button_flags()) |
| 719 return details; | 723 return details; |
| 720 | 724 |
| 721 gfx::Point root_mouse_location = GetLastMouseLocationInRoot(); | 725 gfx::Point root_mouse_location = GetLastMouseLocationInRoot(); |
| 722 if (!window()->bounds().Contains(root_mouse_location)) | 726 if (!window()->bounds().Contains(root_mouse_location)) |
| 723 return details; | 727 return details; |
| 724 gfx::Point host_mouse_location = root_mouse_location; | 728 gfx::Point host_mouse_location = root_mouse_location; |
| 725 host_->ConvertPointToHost(&host_mouse_location); | 729 host_->ConvertPointToHost(&host_mouse_location); |
| 726 ui::MouseEvent event(ui::ET_MOUSE_MOVED, host_mouse_location, | 730 ui::MouseEvent event( |
| 727 host_mouse_location, ui::EventTimeForNow(), | 731 ui::ET_MOUSE_MOVED, host_mouse_location, host_mouse_location, |
| 728 ui::EF_IS_SYNTHESIZED, 0); | 732 ui::EventTimeForNow(), ui::EF_IS_SYNTHESIZED, 0, |
| 733 ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 729 return OnEventFromSource(&event); | 734 return OnEventFromSource(&event); |
| 730 } | 735 } |
| 731 | 736 |
| 732 void WindowEventDispatcher::PreDispatchLocatedEvent(Window* target, | 737 void WindowEventDispatcher::PreDispatchLocatedEvent(Window* target, |
| 733 ui::LocatedEvent* event) { | 738 ui::LocatedEvent* event) { |
| 734 int flags = event->flags(); | 739 int flags = event->flags(); |
| 735 if (IsNonClientLocation(target, event->location())) | 740 if (IsNonClientLocation(target, event->location())) |
| 736 flags |= ui::EF_IS_NON_CLIENT; | 741 flags |= ui::EF_IS_NON_CLIENT; |
| 737 event->set_flags(flags); | 742 event->set_flags(flags); |
| 738 | 743 |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 893 } | 898 } |
| 894 | 899 |
| 895 // This flag is set depending on the gestures recognized in the call above, | 900 // This flag is set depending on the gestures recognized in the call above, |
| 896 // and needs to propagate with the forwarded event. | 901 // and needs to propagate with the forwarded event. |
| 897 event->set_may_cause_scrolling(orig_event.may_cause_scrolling()); | 902 event->set_may_cause_scrolling(orig_event.may_cause_scrolling()); |
| 898 | 903 |
| 899 PreDispatchLocatedEvent(target, event); | 904 PreDispatchLocatedEvent(target, event); |
| 900 } | 905 } |
| 901 | 906 |
| 902 } // namespace aura | 907 } // namespace aura |
| OLD | NEW |