source: trunk/ICeCoffEE/ICeCoffEE/ICeCoffEEMenuOutlineView.m@ 429

Last change on this file since 429 was 429, checked in by Nicholas Riley, 16 years ago

Disable unwanted Leopard table inter-cell navigation

File size: 1.6 KB
Line 
1//
2// ICeCoffEEMenuOutlineView.m
3// ICeCoffEE
4//
5// Created by Nicholas Riley on 3/2/08.
6// Copyright 2008 Nicholas Riley. All rights reserved.
7//
8
9#import "ICeCoffEEMenuOutlineView.h"
10#import <Carbon/Carbon.h>
11
12@implementation ICeCoffEEMenuOutlineView
13
14// undocumented, Leopard-only, only way I can figure out to bypass inter-cell navigation
15- (BOOL)canFocusCell:(NSCell *)cell atTableColumn:(NSTableColumn *)tableColumn row:(int)row;
16{
17 return NO;
18}
19
20- (void)highlightSelectionInClipRect:(NSRect)clipRect;
21{
22 NSRange rows = [self rowsInRect: clipRect];
23 unsigned maxRow = NSMaxRange(rows);
24
25 HIThemeMenuItemDrawInfo drawInfo = {0, kThemeMenuItemHierBackground | kThemeMenuItemPopUpBackground, kThemeMenuSelected};
26 if ([[self window] firstResponder] != self || [NSApp keyWindow] != [self window]) {
27 NSLog(@"firstResponder %@ key %@ main %@ this %@", [[self window] firstResponder], [NSApp keyWindow], [NSApp mainWindow], [self window]);
28 [super highlightSelectionInClipRect: clipRect];
29 return;
30 }
31
32 for (unsigned row = rows.location ; row < maxRow ; ++row) {
33 if (![self isRowSelected: row])
34 continue;
35
36 NSRect rowRect = [self rectOfRow: row];
37 rowRect.size.height += 2;
38 if (NSIntersectsRect(rowRect, clipRect)) {
39 OSStatus err = HIThemeDrawMenuItem((HIRect *)&clipRect,
40 (HIRect *)&rowRect,
41 &drawInfo,
42 (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort],
43 kHIThemeOrientationInverted,
44 (HIRect *)&rowRect);
45 if (err != noErr) {
46 [super highlightSelectionInClipRect: clipRect];
47 return;
48 }
49 }
50 }
51}
52
53@end
Note: See TracBrowser for help on using the repository browser.