X-Git-Url: http://git.ithinksw.org/ITKit.git/blobdiff_plain/4ff490fc75e62c7dc772093f719e8c44903e7610..5cf6107f7fb51538c33d2839a2485493a7446c43:/ITCategory-NSMenu.m diff --git a/ITCategory-NSMenu.m b/ITCategory-NSMenu.m index 4e94be0..7eeacc5 100755 --- a/ITCategory-NSMenu.m +++ b/ITCategory-NSMenu.m @@ -12,16 +12,17 @@ - (id)_menuImpl; @end +extern void _NSGetMenuItemForCommandKeyEvent (NSMenu *menu, void *chicken, void *taco, void *food); extern MenuRef _NSGetCarbonMenu( NSMenu *menu); @implementation NSMenu (ITCategory) - (void)indentItem:(NSMenuItem *)item { - [self indentItem:item toLevel:2]; + [self indentItem:item toLevel:1]; } - (void)indentItemAtIndex:(int)index { - [self indentItemAtIndex:index toLevel:2]; + [self indentItemAtIndex:index toLevel:1]; } - (void)indentItem:(NSMenuItem *)item toLevel:(int)indentLevel { @@ -29,15 +30,19 @@ extern MenuRef _NSGetCarbonMenu( NSMenu *menu); } - (void)indentItemAtIndex:(int)index toLevel:(int)indentLevel { - MenuRef carbonMenu = [self menuRef]; - - if (carbonMenu) { - SetMenuItemIndent(carbonMenu, index, indentLevel); + if ([[self itemAtIndex:index] respondsToSelector:@selector(setIndentationLevel:)]) { + [[self itemAtIndex:index] setIndentationLevel:indentLevel]; + } else { + MenuRef carbonMenu = [self menuRef]; + if (carbonMenu) { + SetMenuItemIndent(carbonMenu, index + 1, indentLevel); + } } } - (MenuRef)menuRef { MenuRef carbonMenu; + int w00t, m00f; if( [self respondsToSelector:@selector(_menuImpl)] ) { [self _menuImpl]; @@ -45,6 +50,7 @@ extern MenuRef _NSGetCarbonMenu( NSMenu *menu); return nil; } + _NSGetMenuItemForCommandKeyEvent(self, NULL, &w00t, &m00f); carbonMenu = _NSGetCarbonMenu(self); return carbonMenu; }