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