mirror of
https://github.com/electron/electron.git
synced 2026-01-22 13:58:01 -05:00
Add 'selector' property for MenuItem, which automatically calls first reponder's selector.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 }));
|
||||
|
||||
Reference in New Issue
Block a user