- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / cocoa / multi_key_equivalent_button.mm
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import "chrome/browser/ui/cocoa/multi_key_equivalent_button.h"
6
7 @implementation MultiKeyEquivalentButton
8
9 - (void)addKeyEquivalent:(KeyEquivalentAndModifierMask)key {
10   extraKeys_.push_back(key);
11 }
12
13 - (BOOL)performKeyEquivalent:(NSEvent*)event {
14   NSWindow* modalWindow = [NSApp modalWindow];
15   NSWindow* window = [self window];
16
17   if ([self isEnabled] &&
18       (!modalWindow || modalWindow == window || [window worksWhenModal])) {
19     for (size_t index = 0; index < extraKeys_.size(); ++index) {
20       KeyEquivalentAndModifierMask key = extraKeys_[index];
21       if (key.charCode &&
22           [key.charCode isEqualToString:[event charactersIgnoringModifiers]] &&
23           ([event modifierFlags] & key.mask) == key.mask) {
24         [self performClick:self];
25         return YES;
26       }
27     }
28   }
29
30   return [super performKeyEquivalent:event];
31 }
32
33 @end