| // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import "chrome/browser/ui/cocoa/multi_key_equivalent_button.h" |
| |
| @implementation MultiKeyEquivalentButton |
| |
| - (void)addKeyEquivalent:(KeyEquivalentAndModifierMask)key { |
| extraKeys_.push_back(key); |
| } |
| |
| - (BOOL)performKeyEquivalent:(NSEvent*)event { |
| NSWindow* modalWindow = [NSApp modalWindow]; |
| NSWindow* window = [self window]; |
| |
| if ([self isEnabled] && |
| (!modalWindow || modalWindow == window || [window worksWhenModal])) { |
| for (size_t index = 0; index < extraKeys_.size(); ++index) { |
| KeyEquivalentAndModifierMask key = extraKeys_[index]; |
| if (key.charCode && |
| [key.charCode isEqualToString:[event charactersIgnoringModifiers]] && |
| ([event modifierFlags] & key.mask) == key.mask) { |
| [self performClick:self]; |
| return YES; |
| } |
| } |
| } |
| |
| return [super performKeyEquivalent:event]; |
| } |
| |
| @end |