Convert submenu when non-Menu is passed into MenuItem ctor
authorKevin Sawicki <kevinsawicki@gmail.com>
Mon, 7 Dec 2015 17:28:48 +0000 (09:28 -0800)
committerKevin Sawicki <kevinsawicki@gmail.com>
Mon, 7 Dec 2015 17:28:48 +0000 (09:28 -0800)
atom/browser/api/lib/menu-item.coffee
atom/browser/api/lib/menu.coffee

index 57beb6f..737f9c0 100644 (file)
@@ -24,8 +24,10 @@ class MenuItem
   constructor: (options) ->
     {Menu} = require 'electron'
 
-    {click, @selector, @type, @role, @label, @sublabel, @accelerator, @icon, @enabled, @visible, @checked, @submenu} = options
+    {click, @selector, @type, @role, @label, @sublabel, @accelerator, @icon, @enabled, @visible, @checked} = options
 
+    if options.submenu? and options.submenu.constructor isnt Menu
+      @submenu = Menu.buildFromTemplate options.submenu
     @type = 'submenu' if not @type? and @submenu?
     throw new Error('Invalid submenu') if @type is 'submenu' and @submenu?.constructor isnt Menu
 
index 26e2dc2..eac6a60 100644 (file)
@@ -169,7 +169,6 @@ Menu.buildFromTemplate = (template) ->
   for item in positionedTemplate
     throw new TypeError('Invalid template for MenuItem') unless typeof item is 'object'
 
-    item.submenu = Menu.buildFromTemplate item.submenu if item.submenu?
     menuItem = new MenuItem(item)
     menuItem[key] = value for key, value of item when not menuItem[key]?
     menu.append menuItem