Make MenuItem's type default to 'submenu' if it has submenu property.
authorCheng Zhao <zcbenz@gmail.com>
Thu, 16 May 2013 14:22:33 +0000 (22:22 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Thu, 16 May 2013 14:22:33 +0000 (22:22 +0800)
browser/api/lib/menu_item.coffee
browser/default_app/main.js

index bd7113f..2764a0b 100644 (file)
@@ -4,8 +4,13 @@ class MenuItem
   @types = ['normal', 'separator', 'submenu', 'checkbox', 'radio']
 
   constructor: (options) ->
+    Menu = require 'menu'
+
     {click, selector, @type, @label, @sublabel, @accelerator, @enabled, @visible, @checked, @groupId, @submenu} = options
 
+    @type = 'submenu' if not @type? and @submenu?
+    throw new Error('Invalid submenu') if @type is 'submenu' and @submenu?.constructor isnt Menu
+
     @type = @type ? 'normal'
     @label = @label ? ''
     @sublabel = @sublabel ? ''
@@ -13,13 +18,12 @@ class MenuItem
     @visible = @visible ? true
 
     throw new Error('Unknown menu type') if MenuItem.types.indexOf(@type) is -1
-    throw new Error('Invalid menu') if @type is 'submenu' and @submenu?.constructor.name isnt 'Menu'
 
     @commandId = ++nextCommandId
     @click = ->
       if typeof click is 'function'
         click()
       else if typeof selector is 'string'
-        require('menu').sendActionToFirstResponder selector
+        Menu.sendActionToFirstResponder selector
 
 module.exports = MenuItem
index 1660fc6..8e3a76b 100644 (file)
@@ -72,8 +72,8 @@ delegate.browserMainParts.preMainMessageLoopRun = function() {
     selector: 'arrangeInFront:'
   }));
 
-  menu.append(new MenuItem({ type: 'submenu', submenu: appleMenu }));
-  menu.append(new MenuItem({ label: 'Window', type: 'submenu', submenu: windowMenu }));
+  menu.append(new MenuItem({ submenu: appleMenu }));
+  menu.append(new MenuItem({ label: 'Window', submenu: windowMenu }));
 
   Menu.setApplicationMenu(menu);