| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/ui/cocoa/chrome_event_processing_window.h" | 5 #import "chrome/browser/ui/cocoa/chrome_event_processing_window.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #import "chrome/browser/ui/cocoa/chrome_command_dispatcher_delegate.h" | 8 #import "chrome/browser/ui/cocoa/chrome_command_dispatcher_delegate.h" |
| 9 | 9 |
| 10 @implementation ChromeEventProcessingWindow | 10 @implementation ChromeEventProcessingWindow |
| 11 | 11 |
| 12 - (instancetype)initWithContentRect:(NSRect)contentRect | 12 - (instancetype)initWithContentRect:(NSRect)contentRect |
| 13 styleMask:(NSUInteger)windowStyle | 13 styleMask:(NSUInteger)windowStyle |
| 14 backing:(NSBackingStoreType)bufferingType | 14 backing:(NSBackingStoreType)bufferingType |
| 15 defer:(BOOL)deferCreation { | 15 defer:(BOOL)deferCreation { |
| 16 if ((self = [super initWithContentRect:contentRect | 16 if ((self = [super initWithContentRect:contentRect |
| 17 styleMask:windowStyle | 17 styleMask:windowStyle |
| 18 backing:bufferingType | 18 backing:bufferingType |
| 19 defer:deferCreation])) { | 19 defer:deferCreation])) { |
| 20 commandDispatcher_.reset([[CommandDispatcher alloc] initWithOwner:self]); | 20 commandDispatcher_.reset([[CommandDispatcher alloc] initWithOwner:self]); |
| 21 commandDispatcherDelegate_.reset( | 21 commandDispatcherDelegate_.reset( |
| 22 [[ChromeCommandDispatcherDelegate alloc] init]); | 22 [[ChromeCommandDispatcherDelegate alloc] init]); |
| 23 [commandDispatcher_ setDelegate:commandDispatcherDelegate_]; | 23 [commandDispatcher_ setDelegate:commandDispatcherDelegate_]; |
| 24 [self setCommandHandler:commandDispatcherDelegate_]; |
| 24 } | 25 } |
| 25 return self; | 26 return self; |
| 26 } | 27 } |
| 27 | 28 |
| 28 - (BOOL)handleExtraKeyboardShortcut:(NSEvent*)event { | 29 - (BOOL)handleExtraKeyboardShortcut:(NSEvent*)event { |
| 29 return [commandDispatcherDelegate_ handleExtraKeyboardShortcut:event | 30 return [commandDispatcherDelegate_ handleExtraKeyboardShortcut:event |
| 30 window:self]; | 31 window:self]; |
| 31 } | 32 } |
| 32 | 33 |
| 33 // CommandDispatchingWindow implementation. | 34 // CommandDispatchingWindow implementation. |
| 34 | 35 |
| 36 @synthesize commandHandler; |
| 37 |
| 35 - (BOOL)redispatchKeyEvent:(NSEvent*)event { | 38 - (BOOL)redispatchKeyEvent:(NSEvent*)event { |
| 36 return [commandDispatcher_ redispatchKeyEvent:event]; | 39 return [commandDispatcher_ redispatchKeyEvent:event]; |
| 37 } | 40 } |
| 38 | 41 |
| 39 - (BOOL)defaultPerformKeyEquivalent:(NSEvent*)event { | 42 - (BOOL)defaultPerformKeyEquivalent:(NSEvent*)event { |
| 40 return [super performKeyEquivalent:event]; | 43 return [super performKeyEquivalent:event]; |
| 41 } | 44 } |
| 42 | 45 |
| 46 - (BOOL)validateUserInterfaceItem:(id<NSValidatedUserInterfaceItem>)item { |
| 47 return [[self commandHandler] validateUserInterfaceItem:item window:self]; |
| 48 } |
| 49 |
| 50 - (void)commandDispatch:(id)sender { |
| 51 [[self commandHandler] commandDispatch:sender window:self]; |
| 52 } |
| 53 |
| 54 - (void)commandDispatchUsingKeyModifiers:(id)sender { |
| 55 [[self commandHandler] commandDispatchUsingKeyModifiers:sender window:self]; |
| 56 } |
| 57 |
| 43 // NSWindow overrides. | 58 // NSWindow overrides. |
| 44 | 59 |
| 45 - (BOOL)performKeyEquivalent:(NSEvent*)event { | 60 - (BOOL)performKeyEquivalent:(NSEvent*)event { |
| 46 return [commandDispatcher_ performKeyEquivalent:event]; | 61 return [commandDispatcher_ performKeyEquivalent:event]; |
| 47 } | 62 } |
| 48 | 63 |
| 49 - (void)sendEvent:(NSEvent*)event { | 64 - (void)sendEvent:(NSEvent*)event { |
| 50 if (![commandDispatcher_ preSendEvent:event]) | 65 if (![commandDispatcher_ preSendEvent:event]) |
| 51 [super sendEvent:event]; | 66 [super sendEvent:event]; |
| 52 } | 67 } |
| 53 | 68 |
| 54 @end // ChromeEventProcessingWindow | 69 @end // ChromeEventProcessingWindow |
| OLD | NEW |