Fixed the menu indent.
[ITKit.git] / ITCategory-NSMenu.m
1 //
2 //  ITCategory-NSMenu.m
3 //  ITKit
4 //
5 //  Created by Joseph Spiros on Sat Sep 27 2003.
6 //  Copyright (c) 2003 __MyCompanyName__. All rights reserved.
7 //
8
9 #import "ITCategory-NSMenu.h"
10
11 @interface NSMenu (HACKHACKHACKHACK)
12 - (id)_menuImpl;
13 @end
14
15 extern void _NSGetMenuItemForCommandKeyEvent (NSMenu *menu, void *chicken, void *taco, void *food); 
16 extern MenuRef _NSGetCarbonMenu( NSMenu *menu);
17
18 @implementation NSMenu (ITCategory)
19
20 - (void)indentItem:(NSMenuItem *)item {
21     [self indentItem:item toLevel:2];
22 }
23
24 - (void)indentItemAtIndex:(int)index {
25     [self indentItemAtIndex:index toLevel:2];
26 }
27
28 - (void)indentItem:(NSMenuItem *)item toLevel:(int)indentLevel {
29     [self indentItemAtIndex:[self indexOfItem:item] toLevel:indentLevel];
30 }
31
32 - (void)indentItemAtIndex:(int)index toLevel:(int)indentLevel {
33     MenuRef carbonMenu = [self menuRef];
34     if (carbonMenu) {
35         SetMenuItemIndent(carbonMenu, index + 1, indentLevel);
36     }
37 }
38
39 - (MenuRef)menuRef {
40     MenuRef carbonMenu;
41     int w00t, m00f;
42     
43     if( [self respondsToSelector:@selector(_menuImpl)] ) {
44         [self _menuImpl];
45     } else {
46         return nil;
47     }
48     
49     _NSGetMenuItemForCommandKeyEvent(self, NULL, &w00t, &m00f); 
50     carbonMenu = _NSGetCarbonMenu(self);
51     return carbonMenu;
52 }
53
54 @end