mirror of
https://github.com/textmate/textmate.git
synced 2026-04-28 03:00:34 -04:00
ARC: Update BundleMenu framework
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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++
|
||||
|
||||
Reference in New Issue
Block a user