| Index: ui/views/event_monitor_mac.mm
|
| diff --git a/ui/views/event_monitor_mac.mm b/ui/views/event_monitor_mac.mm
|
| index a04f292550447e5d92b6a88c3205afb1f78d11ef..43ca5713d90fee73b7bcf36277facebbaea10595 100644
|
| --- a/ui/views/event_monitor_mac.mm
|
| +++ b/ui/views/event_monitor_mac.mm
|
| @@ -2,7 +2,9 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "ui/views/event_monitor_mac.h"
|
| +#import "ui/views/event_monitor_mac.h"
|
| +
|
| +#import <Cocoa/Cocoa.h>
|
|
|
| #include "base/logging.h"
|
| #include "ui/events/event.h"
|
| @@ -12,8 +14,17 @@
|
| namespace views {
|
|
|
| // static
|
| -EventMonitor* EventMonitor::Create(ui::EventHandler* event_handler) {
|
| - return new EventMonitorMac(event_handler);
|
| +scoped_ptr<EventMonitor> EventMonitor::CreateApplicationMonitor(
|
| + ui::EventHandler* event_handler) {
|
| + return scoped_ptr<EventMonitor>(new EventMonitorMac(event_handler, nullptr));
|
| +}
|
| +
|
| +// static
|
| +scoped_ptr<EventMonitor> EventMonitor::CreateWindowMonitor(
|
| + ui::EventHandler* event_handler,
|
| + gfx::NativeWindow target_window) {
|
| + return scoped_ptr<EventMonitor>(
|
| + new EventMonitorMac(event_handler, target_window));
|
| }
|
|
|
| // static
|
| @@ -25,14 +36,17 @@ gfx::Point EventMonitor::GetLastMouseLocation() {
|
| return gfx::Point(mouseLocation.x, mouseLocation.y);
|
| }
|
|
|
| -EventMonitorMac::EventMonitorMac(ui::EventHandler* event_handler) {
|
| +EventMonitorMac::EventMonitorMac(ui::EventHandler* event_handler,
|
| + gfx::NativeWindow target_window) {
|
| DCHECK(event_handler);
|
| monitor_ = [NSEvent addLocalMonitorForEventsMatchingMask:NSAnyEventMask
|
| - handler:^NSEvent*(NSEvent* event){
|
| - scoped_ptr<ui::Event> ui_event = ui::EventFromNative(event);
|
| - event_handler->OnEvent(ui_event.get());
|
| - return event;
|
| - }];
|
| + handler:^NSEvent*(NSEvent* event) {
|
| + if (!target_window || [event window] == target_window) {
|
| + scoped_ptr<ui::Event> ui_event = ui::EventFromNative(event);
|
| + event_handler->OnEvent(ui_event.get());
|
| + }
|
| + return event;
|
| + }];
|
| }
|
|
|
| EventMonitorMac::~EventMonitorMac() {
|
|
|