blob: fcb994aead405f9b55adb9f29c8d91cff2acbd52 [file] [log] [blame]
Alexandre Lision2db8f472015-07-22 15:05:46 -04001/*
2 * Copyright (C) 2015 Savoir-faire Linux Inc.
3 * Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Additional permission under GNU GPL version 3 section 7:
20 *
21 * If you modify this program, or any covered work, by linking or
22 * combining it with the OpenSSL project's OpenSSL library (or a
23 * modified version of that library), containing parts covered by the
24 * terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
25 * grants you additional permission to convey the resulting work.
26 * Corresponding Source for a non-source form of such a combination
27 * shall include the source code for the parts of OpenSSL used as well
28 * as that of the covered work.
29 */
30
31#import "RingOutlineView.h"
32
33@implementation RingOutlineView
34
35- (NSMenu*)menuForEvent:(NSEvent*)evt
36{
37 NSPoint pt = [self convertPoint:[evt locationInWindow] fromView:nil];
38 int rowIdx = [self rowAtPoint:pt];
39 int colIdx = [self columnAtPoint:pt];
40 if (self.contextMenuDelegate && rowIdx >= 0 && colIdx >= 0) {
41 NSUInteger indexes[2] = {static_cast<NSUInteger>(rowIdx), static_cast<NSUInteger>(colIdx)};
42 NSIndexPath* path = [NSIndexPath indexPathWithIndexes:indexes length:2];
43 return [self.contextMenuDelegate contextualMenuForIndex:path];
44 }
45 return nil;
46}
47
48- (void)keyDown:(NSEvent *)theEvent
49{
50 // Handle the Tab key
51 if ([[theEvent characters] characterAtIndex:0] == NSTabCharacter) {
52 if (([theEvent modifierFlags] & NSShiftKeyMask) != NSShiftKeyMask) {
53 [[self window] selectKeyViewFollowingView:self];
54 } else {
55 [[self window] selectKeyViewPrecedingView:self];
56 }
57 }
58 else if (([theEvent modifierFlags] & NSCommandKeyMask) == NSCommandKeyMask) {
59 if (self.shortcutsDelegate) {
60 if ([[theEvent characters] characterAtIndex:0] == 'a') {
61 [self.shortcutsDelegate onAddShortcut];
62 }
63 }
64 } else
65 [super keyDown:theEvent];
66}
67
68@end