| Index: ui/views/cocoa/native_widget_mac_nswindow.mm
|
| diff --git a/ui/views/cocoa/native_widget_mac_nswindow.mm b/ui/views/cocoa/native_widget_mac_nswindow.mm
|
| index 8799ee15a35550cea141390c6a4f51f9d5de6c6c..dcd8ea081812e2344391fd9ef1afbb86b7b9b070 100644
|
| --- a/ui/views/cocoa/native_widget_mac_nswindow.mm
|
| +++ b/ui/views/cocoa/native_widget_mac_nswindow.mm
|
| @@ -20,7 +20,23 @@
|
| - (BOOL)_isTitleHidden;
|
| @end
|
|
|
| -@implementation NativeWidgetMacNSWindow
|
| +@implementation NativeWidgetMacNSWindow {
|
| + @private
|
| + base::scoped_nsobject<CommandDispatcher> commandDispatcher_;
|
| +}
|
| +
|
| +- (instancetype)initWithContentRect:(NSRect)contentRect
|
| + styleMask:(NSUInteger)windowStyle
|
| + backing:(NSBackingStoreType)bufferingType
|
| + defer:(BOOL)deferCreation {
|
| + if ((self = [super initWithContentRect:contentRect
|
| + styleMask:windowStyle
|
| + backing:bufferingType
|
| + defer:deferCreation])) {
|
| + commandDispatcher_.reset([[CommandDispatcher alloc] initWithOwner:self]);
|
| + }
|
| + return self;
|
| +}
|
|
|
| - (ViewsNSWindowDelegate*)viewsNSWindowDelegate {
|
| return base::mac::ObjCCastStrict<ViewsNSWindowDelegate>([self delegate]);
|
| @@ -64,6 +80,10 @@
|
| // menu while it is active, and while still allowing any native subview to
|
| // retain firstResponder status.
|
| - (void)sendEvent:(NSEvent*)event {
|
| + // Let CommandDispatcher check if this is a redispatched event.
|
| + if ([commandDispatcher_ preSendEvent:event])
|
| + return;
|
| +
|
| NSEventType type = [event type];
|
| if ((type != NSKeyDown && type != NSKeyUp) || ![self hasViewsMenuActive]) {
|
| [super sendEvent:event];
|
| @@ -104,6 +124,10 @@
|
|
|
| // NSResponder implementation.
|
|
|
| +- (BOOL)performKeyEquivalent:(NSEvent*)event {
|
| + return [commandDispatcher_ performKeyEquivalent:event];
|
| +}
|
| +
|
| - (void)cursorUpdate:(NSEvent*)theEvent {
|
| // The cursor provided by the delegate should only be applied within the
|
| // content area. This is because we rely on the contentView to track the
|
| @@ -124,4 +148,14 @@
|
| [super cursorUpdate:theEvent];
|
| }
|
|
|
| +// CommandDispatchingWindow implementation.
|
| +
|
| +- (BOOL)redispatchKeyEvent:(NSEvent*)event {
|
| + return [commandDispatcher_ redispatchKeyEvent:event];
|
| +}
|
| +
|
| +- (BOOL)defaultPerformKeyEquivalent:(NSEvent*)event {
|
| + return [super performKeyEquivalent:event];
|
| +}
|
| +
|
| @end
|
|
|