X-Git-Url: http://git.ithinksw.org/ITKit.git/blobdiff_plain/a8daf8ac0972b8b5b582a97b50889fec447f45a4..0fc44e732f98ed55cdd0d0914c4031ad9c005edc:/ITCategory-NSMenu.m?ds=sidebyside diff --git a/ITCategory-NSMenu.m b/ITCategory-NSMenu.m old mode 100755 new mode 100644 index 80501bf..5ec05a8 --- a/ITCategory-NSMenu.m +++ b/ITCategory-NSMenu.m @@ -1,50 +1,56 @@ #import "ITCategory-NSMenu.h" -@interface NSMenu (HACKHACKHACKHACK) +extern void _NSGetMenuItemForCommandKeyEvent(NSMenu *menu, void *chicken, void *taco, void *food); +extern MenuRef _NSGetCarbonMenu(NSMenu *menu); + +@interface NSMenu (ITKitCategoryHacks) - (id)_menuImpl; @end -extern void _NSGetMenuItemForCommandKeyEvent (NSMenu *menu, void *chicken, void *taco, void *food); -extern MenuRef _NSGetCarbonMenu( NSMenu *menu); +@protocol _ITKitCategoryNSMenuItemPantherCompatability +- (int)indentationLevel; +- (void)setIndentationLevel:(int)indentationLevel; +@end -@implementation NSMenu (ITCategory) +@implementation NSMenu (ITKitCategory) - (void)indentItem:(id )item { - [self indentItem:item toLevel:1]; + [self indentItem:item toLevel:1]; } - (void)indentItemAtIndex:(int)index { - [self indentItemAtIndex:index toLevel:1]; + [self indentItemAtIndex:index toLevel:1]; } - (void)indentItem:(id )item toLevel:(int)indentLevel { - [self indentItemAtIndex:[self indexOfItem:item] toLevel:indentLevel]; + [self indentItemAtIndex:[self indexOfItem:item] toLevel:indentLevel]; } - (void)indentItemAtIndex:(int)index toLevel:(int)indentLevel { - if ([[self itemAtIndex:index] respondsToSelector:@selector(setIndentationLevel:)]) { - (void)[[self itemAtIndex:index] setIndentationLevel:indentLevel]; - } else { - MenuRef carbonMenu = [self menuRef]; - if (carbonMenu) { - SetMenuItemIndent(carbonMenu, index + 1, indentLevel); - } - } + id theItem = [self itemAtIndex:index]; + if ([theItem respondsToSelector:@selector(setIndentationLevel:)]) { + [(id <_ITKitCategoryNSMenuItemPantherCompatability>)theItem 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)] ) { - (void)[self _menuImpl]; - } else { - return nil; - } - - _NSGetMenuItemForCommandKeyEvent(self, NULL, &w00t, &m00f); - carbonMenu = _NSGetCarbonMenu(self); - return carbonMenu; + MenuRef carbonMenu; + int w00t, m00f; + + if ([self respondsToSelector:@selector(_menuImpl)]) { + (void)[self _menuImpl]; + } else { + return nil; + } + + _NSGetMenuItemForCommandKeyEvent(self, NULL, &w00t, &m00f); + carbonMenu = _NSGetCarbonMenu(self); + return carbonMenu; } - (void)removeAllItems { @@ -57,4 +63,4 @@ extern MenuRef _NSGetCarbonMenu( NSMenu *menu); } } -@end +@end \ No newline at end of file