From 4ff490fc75e62c7dc772093f719e8c44903e7610 Mon Sep 17 00:00:00 2001 From: Joseph Spiros Date: Sat, 27 Sep 2003 12:29:34 +0000 Subject: [PATCH] Added category on NSMenu which supports indenting items (uses Carbon in the backend) --- ITCategory-NSMenu.h | 16 ++++++++++++++ ITCategory-NSMenu.m | 52 +++++++++++++++++++++++++++++++++++++++++++++ ITKit.h | 1 + 3 files changed, 69 insertions(+) create mode 100755 ITCategory-NSMenu.h create mode 100755 ITCategory-NSMenu.m diff --git a/ITCategory-NSMenu.h b/ITCategory-NSMenu.h new file mode 100755 index 0000000..7cdac3d --- /dev/null +++ b/ITCategory-NSMenu.h @@ -0,0 +1,16 @@ +// +// ITCategory-NSMenu.h +// ITKit +// +// Created by Joseph Spiros on Sat Sep 27 2003. +// Copyright (c) 2003 __MyCompanyName__. All rights reserved. +// + +#import +#import + +@interface NSMenu (ITCategory) + +- (MenuRef)menuRef; + +@end diff --git a/ITCategory-NSMenu.m b/ITCategory-NSMenu.m new file mode 100755 index 0000000..4e94be0 --- /dev/null +++ b/ITCategory-NSMenu.m @@ -0,0 +1,52 @@ +// +// ITCategory-NSMenu.m +// ITKit +// +// Created by Joseph Spiros on Sat Sep 27 2003. +// Copyright (c) 2003 __MyCompanyName__. All rights reserved. +// + +#import "ITCategory-NSMenu.h" + +@interface NSMenu (HACKHACKHACKHACK) +- (id)_menuImpl; +@end + +extern MenuRef _NSGetCarbonMenu( NSMenu *menu); + +@implementation NSMenu (ITCategory) + +- (void)indentItem:(NSMenuItem *)item { + [self indentItem:item toLevel:2]; +} + +- (void)indentItemAtIndex:(int)index { + [self indentItemAtIndex:index toLevel:2]; +} + +- (void)indentItem:(NSMenuItem *)item toLevel:(int)indentLevel { + [self indentItemAtIndex:[self indexOfItem:item] toLevel:indentLevel]; +} + +- (void)indentItemAtIndex:(int)index toLevel:(int)indentLevel { + MenuRef carbonMenu = [self menuRef]; + + if (carbonMenu) { + SetMenuItemIndent(carbonMenu, index, indentLevel); + } +} + +- (MenuRef)menuRef { + MenuRef carbonMenu; + + if( [self respondsToSelector:@selector(_menuImpl)] ) { + [self _menuImpl]; + } else { + return nil; + } + + carbonMenu = _NSGetCarbonMenu(self); + return carbonMenu; +} + +@end diff --git a/ITKit.h b/ITKit.h index e76e907..e03aef2 100755 --- a/ITKit.h +++ b/ITKit.h @@ -29,3 +29,4 @@ #import #import +#import -- 2.20.1