Merge pull request #4840 from atom/undefined-menu-accelerator

Undefined menu accelerator
This commit is contained in:
Cheng Zhao 2016-03-21 21:02:44 +09:00
commit e08b48ab48
2 changed files with 19 additions and 4 deletions

View file

@ -269,7 +269,7 @@ Menu.getApplicationMenu = function() {
Menu.sendActionToFirstResponder = bindings.sendActionToFirstResponder; Menu.sendActionToFirstResponder = bindings.sendActionToFirstResponder;
Menu.buildFromTemplate = function(template) { Menu.buildFromTemplate = function(template) {
var insertIndex, item, j, k, key, len, len1, menu, menuItem, positionedTemplate, value; var insertIndex, item, j, k, key, len, len1, menu, menuItem, positionedTemplate;
if (!Array.isArray(template)) { if (!Array.isArray(template)) {
throw new TypeError('Invalid template for Menu'); throw new TypeError('Invalid template for Menu');
} }
@ -293,9 +293,9 @@ Menu.buildFromTemplate = function(template) {
} }
menuItem = new MenuItem(item); menuItem = new MenuItem(item);
for (key in item) { for (key in item) {
value = item[key]; // Preserve extra fields specified by user
if (menuItem[key] == null) { if (!menuItem.hasOwnProperty(key)) {
menuItem[key] = value; menuItem[key] = item[key];
} }
} }
menu.append(menuItem); menu.append(menuItem);

View file

@ -32,6 +32,21 @@ describe('menu module', function() {
]); ]);
}); });
it('does not throw exceptions for undefined/null values', function() {
assert.doesNotThrow(function() {
Menu.buildFromTemplate([
{
label: 'text',
accelerator: undefined
},
{
label: 'text again',
accelerator: null
}
]);
});
});
describe('Menu.buildFromTemplate should reorder based on item position specifiers', function() { describe('Menu.buildFromTemplate should reorder based on item position specifiers', function() {
it('should position before existing item', function() { it('should position before existing item', function() {
var menu = Menu.buildFromTemplate([ var menu = Menu.buildFromTemplate([