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#ifndef CHROME_BROWSER_UI_COCOA_MULTI_KEY_EQUIVALENT_BUTTON_H_ 6#define CHROME_BROWSER_UI_COCOA_MULTI_KEY_EQUIVALENT_BUTTON_H_ 7 8#import <AppKit/AppKit.h> 9 10#include <vector> 11 12struct KeyEquivalentAndModifierMask { 13 public: 14 KeyEquivalentAndModifierMask() : charCode(nil), mask(0) {} 15 NSString* charCode; 16 NSUInteger mask; 17}; 18 19// MultiKeyEquivalentButton is an NSButton subclass that is capable of 20// responding to additional key equivalents. It will respond to the ordinary 21// NSButton key equivalent set by -setKeyEquivalent: and 22// -setKeyEquivalentModifierMask:, and it will also respond to any additional 23// equivalents provided to it in a KeyEquivalentAndModifierMask structure 24// passed to -addKeyEquivalent:. 25 26@interface MultiKeyEquivalentButton : NSButton { 27 @private 28 std::vector<KeyEquivalentAndModifierMask> extraKeys_; 29} 30 31- (void)addKeyEquivalent:(KeyEquivalentAndModifierMask)key; 32 33@end 34 35#endif // CHROME_BROWSER_UI_COCOA_MULTI_KEY_EQUIVALENT_BUTTON_H_ 36