ARC: Update BundleMenu framework

This commit is contained in:
Allan Odgaard
2012-09-23 02:01:57 +02:00
parent 7cc86ae8cf
commit 596bd65140
4 changed files with 18 additions and 28 deletions

View File

@@ -5,11 +5,6 @@
#import <oak/misc.h>
PUBLIC @interface BundleMenuDelegate : NSObject <NSMenuDelegate>
{
OBJC_WATCH_LEAKS(BundleMenuDelegate);
bundles::item_ptr umbrellaItem;
NSMutableArray* subdelegates;
}
- (id)initWithBundleItem:(bundles::item_ptr const&)aBundleItem;
@end

View File

@@ -7,20 +7,10 @@
#import <oak/oak.h>
@interface BundlePopupMenuTarget : NSObject
{
NSString* selectedItemUUID;
}
@property (nonatomic, retain) NSString* selectedItemUUID;
@end
@implementation BundlePopupMenuTarget
@synthesize selectedItemUUID;
- (void)dealloc
{
self.selectedItemUUID = nil;
[super dealloc];
}
- (BOOL)validateMenuItem:(NSMenuItem*)menuItem
{
return [menuItem action] == @selector(takeItemUUIDFrom:);
@@ -156,8 +146,8 @@ bundles::item_ptr OakShowMenuForBundleItems (std::vector<bundles::item_ptr> cons
else if(items.size() == 1)
return items.front();
BundlePopupMenuTarget* menuTarget = [[[BundlePopupMenuTarget alloc] init] autorelease];
NSMenu* menu = [[[NSMenu alloc] init] autorelease];
BundlePopupMenuTarget* menuTarget = [BundlePopupMenuTarget new];
NSMenu* menu = [NSMenu new];
[menu setFont:[NSFont menuFontOfSize:[NSFont smallSystemFontSize]]];
OakAddBundlesToMenu(items, hasSelection, false, menu, @selector(takeItemUUIDFrom:), menuTarget);

View File

@@ -11,23 +11,25 @@ OAK_DEBUG_VAR(BundleMenu);
- (scope::context_t const&)scopeContext;
@end
@interface BundleMenuDelegate ()
@property (nonatomic, retain) NSMutableArray* subdelegates;
@end
@implementation BundleMenuDelegate
{
bundles::item_ptr umbrellaItem;
}
- (id)initWithBundleItem:(bundles::item_ptr const&)aBundleItem
{
if(self = [super init])
{
umbrellaItem = aBundleItem;
subdelegates = [NSMutableArray new];
self.subdelegates = [NSMutableArray new];
}
return self;
}
- (void)dealloc
{
[subdelegates release];
[super dealloc];
}
- (BOOL)menuHasKeyEquivalent:(NSMenu*)aMenu forEvent:(NSEvent*)theEvent target:(id*)aTarget action:(SEL*)anAction
{
return NO;
@@ -37,7 +39,7 @@ OAK_DEBUG_VAR(BundleMenu);
{
D(DBF_BundleMenu, bug("\n"););
[aMenu removeAllItems];
[subdelegates removeAllObjects];
[self.subdelegates removeAllObjects];
BOOL hasSelection = NO;
if(id textView = [NSApp targetForAction:@selector(hasSelection)])
@@ -55,10 +57,10 @@ OAK_DEBUG_VAR(BundleMenu);
{
NSMenuItem* menuItem = [aMenu addItemWithTitle:[NSString stringWithCxxString:(*item)->name()] action:NULL keyEquivalent:@""];
menuItem.submenu = [[NSMenu new] autorelease];
BundleMenuDelegate* delegate = [[[BundleMenuDelegate alloc] initWithBundleItem:*item] autorelease];
menuItem.submenu = [NSMenu new];
BundleMenuDelegate* delegate = [[BundleMenuDelegate alloc] initWithBundleItem:*item];
menuItem.submenu.delegate = delegate;
[subdelegates addObject:delegate];
[self.subdelegates addObject:delegate];
}
break;

View File

@@ -2,3 +2,6 @@ SOURCES = src/*.mm
LINK += OakAppKit OakFoundation bundles text cf ns
EXPORT = src/BundleMenu.h
FRAMEWORKS = AppKit
OBJCXX_FLAGS += -fobjc-arc
LN_FLAGS += -fobjc-arc-cxxlib=libc++