| 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 #import "ui/views/event_monitor_mac.h" | 5 #import "ui/views/event_monitor_mac.h" |
| 6 | 6 |
| 7 #import <Cocoa/Cocoa.h> | 7 #import <Cocoa/Cocoa.h> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| 11 #include "ui/display/screen.h" |
| 11 #include "ui/events/event.h" | 12 #include "ui/events/event.h" |
| 12 #include "ui/events/event_handler.h" | 13 #include "ui/events/event_handler.h" |
| 13 #include "ui/events/event_utils.h" | 14 #include "ui/events/event_utils.h" |
| 14 #include "ui/gfx/screen.h" | |
| 15 | 15 |
| 16 namespace views { | 16 namespace views { |
| 17 | 17 |
| 18 // static | 18 // static |
| 19 std::unique_ptr<EventMonitor> EventMonitor::CreateApplicationMonitor( | 19 std::unique_ptr<EventMonitor> EventMonitor::CreateApplicationMonitor( |
| 20 ui::EventHandler* event_handler) { | 20 ui::EventHandler* event_handler) { |
| 21 return base::WrapUnique(new EventMonitorMac(event_handler, nullptr)); | 21 return base::WrapUnique(new EventMonitorMac(event_handler, nullptr)); |
| 22 } | 22 } |
| 23 | 23 |
| 24 // static | 24 // static |
| 25 std::unique_ptr<EventMonitor> EventMonitor::CreateWindowMonitor( | 25 std::unique_ptr<EventMonitor> EventMonitor::CreateWindowMonitor( |
| 26 ui::EventHandler* event_handler, | 26 ui::EventHandler* event_handler, |
| 27 gfx::NativeWindow target_window) { | 27 gfx::NativeWindow target_window) { |
| 28 return base::WrapUnique(new EventMonitorMac(event_handler, target_window)); | 28 return base::WrapUnique(new EventMonitorMac(event_handler, target_window)); |
| 29 } | 29 } |
| 30 | 30 |
| 31 // static | 31 // static |
| 32 gfx::Point EventMonitor::GetLastMouseLocation() { | 32 gfx::Point EventMonitor::GetLastMouseLocation() { |
| 33 return gfx::Screen::GetScreen()->GetCursorScreenPoint(); | 33 return display::Screen::GetScreen()->GetCursorScreenPoint(); |
| 34 } | 34 } |
| 35 | 35 |
| 36 EventMonitorMac::EventMonitorMac(ui::EventHandler* event_handler, | 36 EventMonitorMac::EventMonitorMac(ui::EventHandler* event_handler, |
| 37 gfx::NativeWindow target_window) { | 37 gfx::NativeWindow target_window) { |
| 38 DCHECK(event_handler); | 38 DCHECK(event_handler); |
| 39 monitor_ = [NSEvent addLocalMonitorForEventsMatchingMask:NSAnyEventMask | 39 monitor_ = [NSEvent addLocalMonitorForEventsMatchingMask:NSAnyEventMask |
| 40 handler:^NSEvent*(NSEvent* event) { | 40 handler:^NSEvent*(NSEvent* event) { |
| 41 if (!target_window || [event window] == target_window) { | 41 if (!target_window || [event window] == target_window) { |
| 42 std::unique_ptr<ui::Event> ui_event = ui::EventFromNative(event); | 42 std::unique_ptr<ui::Event> ui_event = ui::EventFromNative(event); |
| 43 if (ui_event) | 43 if (ui_event) |
| 44 event_handler->OnEvent(ui_event.get()); | 44 event_handler->OnEvent(ui_event.get()); |
| 45 } | 45 } |
| 46 return event; | 46 return event; |
| 47 }]; | 47 }]; |
| 48 } | 48 } |
| 49 | 49 |
| 50 EventMonitorMac::~EventMonitorMac() { | 50 EventMonitorMac::~EventMonitorMac() { |
| 51 [NSEvent removeMonitor:monitor_]; | 51 [NSEvent removeMonitor:monitor_]; |
| 52 } | 52 } |
| 53 | 53 |
| 54 } // namespace views | 54 } // namespace views |
| OLD | NEW |