diff --git a/browser/api/lib/menu_item.coffee b/browser/api/lib/menu_item.coffee index 14d65d30e68..bd7113fa59d 100644 --- a/browser/api/lib/menu_item.coffee +++ b/browser/api/lib/menu_item.coffee @@ -4,7 +4,7 @@ class MenuItem @types = ['normal', 'separator', 'submenu', 'checkbox', 'radio'] constructor: (options) -> - {click, @type, @label, @sublabel, @accelerator, @enabled, @visible, @checked, @groupId, @submenu} = options + {click, selector, @type, @label, @sublabel, @accelerator, @enabled, @visible, @checked, @groupId, @submenu} = options @type = @type ? 'normal' @label = @label ? '' @@ -16,6 +16,10 @@ class MenuItem throw new Error('Invalid menu') if @type is 'submenu' and @submenu?.constructor.name isnt 'Menu' @commandId = ++nextCommandId - @click = -> click() if typeof click is 'function' + @click = -> + if typeof click is 'function' + click() + else if typeof selector is 'string' + require('menu').sendActionToFirstResponder selector module.exports = MenuItem diff --git a/browser/default_app/main.js b/browser/default_app/main.js index 6160d1c46d9..1660fc69ac9 100644 --- a/browser/default_app/main.js +++ b/browser/default_app/main.js @@ -33,24 +33,18 @@ delegate.browserMainParts.preMainMessageLoopRun = function() { var appleMenu = new Menu; appleMenu.append(new MenuItem({ label: 'About Atom Shell', - click: function() { - Menu.sendActionToFirstResponder('orderFrontStandardAboutPanel:'); - } + selector: 'orderFrontStandardAboutPanel:' })); appleMenu.append(new MenuItem({ type: 'separator' })); appleMenu.append(new MenuItem({ label: 'Hide Atom Shell', accelerator: 'Command+H', - click: function() { - Menu.sendActionToFirstResponder('hide:'); - } + selector: 'hide:' })); appleMenu.append(new MenuItem({ label: 'Hide Others', accelerator: 'Command+Shift+H', - click: function() { - Menu.sendActionToFirstResponder('hideOtherApplications:'); - } + selector: 'hideOtherApplications:' })); appleMenu.append(new MenuItem({ type: 'separator' })); appleMenu.append(new MenuItem({ @@ -65,23 +59,17 @@ delegate.browserMainParts.preMainMessageLoopRun = function() { windowMenu.append(new MenuItem({ label: 'Minimize', accelerator: 'Command+M', - click: function() { - Menu.sendActionToFirstResponder('performMiniaturize:'); - } + selector: 'performMiniaturize:' })); windowMenu.append(new MenuItem({ label: 'Close', accelerator: 'Command+W', - click: function() { - Menu.sendActionToFirstResponder('performClose:'); - } + selector: 'performClose:' })); windowMenu.append(new MenuItem({ type: 'separator' })); windowMenu.append(new MenuItem({ label: 'Bring All to Front', - click: function() { - Menu.sendActionToFirstResponder('arrangeInFront:'); - } + selector: 'arrangeInFront:' })); menu.append(new MenuItem({ type: 'submenu', submenu: appleMenu }));