diff --git a/shell/browser/ui/cocoa/electron_menu_controller.mm b/shell/browser/ui/cocoa/electron_menu_controller.mm index d23e007dd0ba..2c5eae1499b1 100644 --- a/shell/browser/ui/cocoa/electron_menu_controller.mm +++ b/shell/browser/ui/cocoa/electron_menu_controller.mm @@ -320,6 +320,10 @@ NSArray* ConvertSharingItemToNS(const SharingItem& item) { NSMenuItem* item = [[NSMenuItem alloc] initWithTitle:label action:@selector(itemSelected:) keyEquivalent:@""]; + if (model->IsEnabledAt(index)) + [item setEnabled:YES]; + else + [item setEnabled:NO]; // If the menu item has an icon, set it. ui::ImageModel icon = model->GetIconAt(index); @@ -349,11 +353,6 @@ NSArray* ConvertSharingItemToNS(const SharingItem& item) { [item setSubmenu:[self createShareMenuForItem:sharing_item]]; } else if (type == electron::ElectronMenuModel::TYPE_SUBMENU && model->IsVisibleAt(index)) { - // We need to specifically check that the submenu top-level item has been - // enabled as it's not validated by validateUserInterfaceItem - if (!model->IsEnabledAt(index)) - [item setEnabled:NO]; - // Recursively build a submenu from the sub-model at this index. [item setTarget:nil]; [item setAction:nil]; @@ -493,8 +492,10 @@ NSArray* ConvertSharingItemToNS(const SharingItem& item) { } - (NSMenu*)menu { - if (menu_) + if (menu_) { + [menu_ setAutoenablesItems:NO]; return menu_; + } if (model_ && model_->sharing_item()) { NSMenu* menu = [self createShareMenuForItem:*model_->sharing_item()]; @@ -504,6 +505,8 @@ NSArray* ConvertSharingItemToNS(const SharingItem& item) { if (model_) [self populateWithModel:model_.get()]; } + + [menu_ setAutoenablesItems:NO]; [menu_ setDelegate:self]; return menu_; }