Skip to content

Commit c1f1663

Browse files
committed
Menu: Allow to set native action for first responder
1 parent f0b72e6 commit c1f1663

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

React/Modules/RCTMenuManager.m

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,23 +66,35 @@ -(void)callback:(id)sender
6666
resolver:(RCTPromiseResolveBlock)resolve
6767
rejecter:(RCTPromiseRejectBlock)reject)
6868
{
69+
6970
if (!item || ![item valueForKey:@"title"]) {
7071
reject(@"Item requires title, key and callback", nil, nil);
7172
}
7273

7374
NSMenu *menu = [self ensureSubmenu:title];
7475
if ([menu indexOfItemWithTitle:item[@"title"]] == -1) {
7576
NSMenuItem *menuItem = [[NSMenuItem alloc] init];
77+
7678
menuItem.title = item[@"title"];
7779
if ([item valueForKey:@"key"]) {
7880
menuItem.keyEquivalent = item[@"key"];
7981
}
80-
menuItem.enabled = YES;
81-
menuItem.action = @selector(callback:);
82-
[menuItem setTarget:self];
83-
[menu addItem:menuItem];
82+
83+
if ([item valueForKey:@"firstResponder"]) {
84+
menuItem.action = NSSelectorFromString([item valueForKey:@"firstResponder"]);
85+
[menuItem setTarget:nil];
86+
} else {
87+
menuItem.action = @selector(callback:);
88+
[menuItem setTarget:self];
89+
90+
}
91+
[menu addItem:menuItem];
92+
if ([item valueForKey:@"separator"]) {
93+
[menu addItem:[NSMenuItem separatorItem]];
94+
}
8495
resolve(@[]);
8596
}
8697
}
8798

99+
88100
@end

0 commit comments

Comments
 (0)