| Index: ui/aura/window_event_dispatcher.cc
|
| diff --git a/ui/aura/window_event_dispatcher.cc b/ui/aura/window_event_dispatcher.cc
|
| index b4077ffe79bfbfc62c5f48b6e76f2f41d8af1d7d..27f1ff6a74d0589eaa3ad5b6d49357479301968f 100644
|
| --- a/ui/aura/window_event_dispatcher.cc
|
| +++ b/ui/aura/window_event_dispatcher.cc
|
| @@ -150,10 +150,11 @@ void WindowEventDispatcher::DispatchGestureEvent(ui::GestureEvent* event) {
|
| }
|
|
|
| DispatchDetails WindowEventDispatcher::DispatchMouseExitAtPoint(
|
| + Window* window,
|
| const gfx::Point& point) {
|
| ui::MouseEvent event(ui::ET_MOUSE_EXITED, point, point, ui::EF_NONE,
|
| ui::EF_NONE);
|
| - return DispatchMouseEnterOrExit(event, ui::ET_MOUSE_EXITED);
|
| + return DispatchMouseEnterOrExit(window, event, ui::ET_MOUSE_EXITED);
|
| }
|
|
|
| void WindowEventDispatcher::ProcessedTouchEvent(ui::TouchEvent* event,
|
| @@ -242,13 +243,15 @@ void WindowEventDispatcher::DispatchMouseExitToHidingWindow(Window* window) {
|
| gfx::Point last_mouse_location = GetLastMouseLocationInRoot();
|
| if (window->Contains(mouse_moved_handler_) &&
|
| window->ContainsPointInRoot(last_mouse_location)) {
|
| - DispatchDetails details = DispatchMouseExitAtPoint(last_mouse_location);
|
| + DispatchDetails details =
|
| + DispatchMouseExitAtPoint(window, last_mouse_location);
|
| if (details.dispatcher_destroyed)
|
| return;
|
| }
|
| }
|
|
|
| ui::EventDispatchDetails WindowEventDispatcher::DispatchMouseEnterOrExit(
|
| + Window* target,
|
| const ui::MouseEvent& event,
|
| ui::EventType type) {
|
| if (event.type() != ui::ET_MOUSE_CAPTURE_CHANGED &&
|
| @@ -265,7 +268,6 @@ ui::EventDispatchDetails WindowEventDispatcher::DispatchMouseEnterOrExit(
|
| // system), or a synthetic event created in root-window (in which case, the
|
| // event's target will be NULL, and the event will be in the root-window's
|
| // coordinate system.
|
| - aura::Window* target = static_cast<Window*>(event.target());
|
| if (!target)
|
| target = window();
|
| ui::MouseEvent translated_event(event,
|
| @@ -404,8 +406,8 @@ void WindowEventDispatcher::OnOtherRootGotCapture() {
|
| // Dispatch a mouse exit to reset any state associated with hover. This is
|
| // important when going from no window having capture to a window having
|
| // capture because we do not dispatch ET_MOUSE_CAPTURE_CHANGED in this case.
|
| - DispatchDetails details = DispatchMouseExitAtPoint(
|
| - GetLastMouseLocationInRoot());
|
| + DispatchDetails details =
|
| + DispatchMouseExitAtPoint(nullptr, GetLastMouseLocationInRoot());
|
| if (details.dispatcher_destroyed)
|
| return;
|
| }
|
| @@ -785,7 +787,7 @@ void WindowEventDispatcher::PreDispatchMouseEvent(Window* target,
|
| case ui::ET_MOUSE_EXITED:
|
| if (!target || target == window()) {
|
| DispatchDetails details =
|
| - DispatchMouseEnterOrExit(*event, ui::ET_MOUSE_EXITED);
|
| + DispatchMouseEnterOrExit(target, *event, ui::ET_MOUSE_EXITED);
|
| if (details.dispatcher_destroyed) {
|
| event->SetHandled();
|
| return;
|
| @@ -802,7 +804,7 @@ void WindowEventDispatcher::PreDispatchMouseEvent(Window* target,
|
| WindowTracker live_window;
|
| live_window.Add(target);
|
| DispatchDetails details =
|
| - DispatchMouseEnterOrExit(*event, ui::ET_MOUSE_EXITED);
|
| + DispatchMouseEnterOrExit(target, *event, ui::ET_MOUSE_EXITED);
|
| if (details.dispatcher_destroyed) {
|
| event->SetHandled();
|
| return;
|
| @@ -821,7 +823,8 @@ void WindowEventDispatcher::PreDispatchMouseEvent(Window* target,
|
| live_window.Remove(target);
|
|
|
| mouse_moved_handler_ = target;
|
| - details = DispatchMouseEnterOrExit(*event, ui::ET_MOUSE_ENTERED);
|
| + details =
|
| + DispatchMouseEnterOrExit(target, *event, ui::ET_MOUSE_ENTERED);
|
| if (details.dispatcher_destroyed || details.target_destroyed) {
|
| event->SetHandled();
|
| return;
|
|
|