Index: components/mus/ws/event_dispatcher.cc |
diff --git a/components/mus/ws/event_dispatcher.cc b/components/mus/ws/event_dispatcher.cc |
index c9f71deda563e6948ce4eb61b9a28e9ec3d38429..63b42dd6a9745a2daf6e068a78fd927846c65c9d 100644 |
--- a/components/mus/ws/event_dispatcher.cc |
+++ b/components/mus/ws/event_dispatcher.cc |
@@ -141,7 +141,9 @@ class EventMatcher { |
//////////////////////////////////////////////////////////////////////////////// |
EventDispatcher::EventDispatcher(EventDispatcherDelegate* delegate) |
- : delegate_(delegate), root_(nullptr) {} |
+ : delegate_(delegate), |
+ root_(nullptr), |
+ last_pointer_target_window_(nullptr) {} |
EventDispatcher::~EventDispatcher() { |
std::set<ServerWindow*> pointer_targets; |
@@ -263,6 +265,9 @@ void EventDispatcher::DispatchToPointerTarget(const PointerTarget& target, |
if (!target.window) |
return; |
+ if (event->pointer_data->kind == mojom::PointerKind::POINTER_KIND_MOUSE) |
+ last_pointer_target_window_ = target.window; |
+ |
gfx::Point location(EventLocationToPoint(*event)); |
gfx::Transform transform(GetTransformToWindow(surface_id_, target.window)); |
transform.TransformPoint(&location); |
@@ -313,6 +318,9 @@ void EventDispatcher::OnWindowVisibilityChanged(ServerWindow* window) { |
void EventDispatcher::OnWindowDestroyed(ServerWindow* window) { |
CancelPointerEventsToTarget(window); |
+ |
+ if (last_pointer_target_window_ == window) |
+ last_pointer_target_window_ = nullptr; |
} |
} // namespace ws |