Honor created() function for an item in a submenu.

Fixes #10483.
This commit is contained in:
Michael Bolin 2016-01-18 16:11:40 -08:00
parent f826d38d0b
commit 962308509b

View File

@ -136,12 +136,9 @@ class ContextMenuManager
for itemSet in matchingItemSets
for item in itemSet.items
continue if item.devMode and not @devMode
item = Object.create(item)
if typeof item.shouldDisplay is 'function'
continue unless item.shouldDisplay(event)
item.created?(event)
MenuHelpers.merge(currentTargetItems, item, itemSet.specificity)
itemForEvent = @cloneItemForEvent(item, event)
if itemForEvent
MenuHelpers.merge(currentTargetItems, itemForEvent, itemSet.specificity)
for item in currentTargetItems
MenuHelpers.merge(template, item, false)
@ -150,6 +147,19 @@ class ContextMenuManager
template
# Returns an object compatible with `::add()` or `null`.
cloneItemForEvent: (item, event) ->
return null if item.devMode and not @devMode
item = Object.create(item)
if typeof item.shouldDisplay is 'function'
return null unless item.shouldDisplay(event)
item.created?(event)
if Array.isArray(item.submenu)
item.submenu = item.submenu
.map((item) => @cloneItemForEvent(item, event))
.filter((item) -> item isnt null)
return item
convertLegacyItemsBySelector: (legacyItemsBySelector, devMode) ->
itemsBySelector = {}