| 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
|
|
|