mirror of
https://github.com/atom/atom.git
synced 2026-04-28 03:01:47 -04:00
Fix handling of submenus in conversion of legacy context menu format
This commit is contained in:
@@ -85,7 +85,7 @@ class ContextMenuManager
|
||||
for key, value of itemsBySelector
|
||||
unless _.isArray(value)
|
||||
Grim.deprecate("The format for declaring context menu items has changed. Please consult the documentation.")
|
||||
itemsBySelector = @convertLegacyItems(itemsBySelector, devMode)
|
||||
itemsBySelector = @convertLegacyItemsBySelector(itemsBySelector, devMode)
|
||||
|
||||
addedItemSets = []
|
||||
|
||||
@@ -126,22 +126,27 @@ class ContextMenuManager
|
||||
|
||||
template
|
||||
|
||||
convertLegacyItems: (legacyItems, devMode) ->
|
||||
convertLegacyItemsBySelector: (legacyItemsBySelector, devMode) ->
|
||||
itemsBySelector = {}
|
||||
|
||||
for selector, commandsByLabel of legacyItems
|
||||
itemsBySelector[selector] = items = []
|
||||
|
||||
for label, commandOrSubmenu of commandsByLabel
|
||||
if typeof commandOrSubmenu is 'object'
|
||||
items.push({label, submenu: @convertLegacyItems(commandOrSubmenu, devMode), devMode})
|
||||
else if commandOrSubmenu is '-'
|
||||
items.push({type: 'separator'})
|
||||
else
|
||||
items.push({label, command: commandOrSubmenu, devMode})
|
||||
for selector, commandsByLabel of legacyItemsBySelector
|
||||
itemsBySelector[selector] = @convertLegacyItems(commandsByLabel, devMode)
|
||||
|
||||
itemsBySelector
|
||||
|
||||
convertLegacyItems: (legacyItems, devMode) ->
|
||||
items = []
|
||||
|
||||
for label, commandOrSubmenu of legacyItems
|
||||
if typeof commandOrSubmenu is 'object'
|
||||
items.push({label, submenu: @convertLegacyItems(commandOrSubmenu, devMode), devMode})
|
||||
else if commandOrSubmenu is '-'
|
||||
items.push({type: 'separator'})
|
||||
else
|
||||
items.push({label, command: commandOrSubmenu, devMode})
|
||||
|
||||
items
|
||||
|
||||
# Public: Request a context menu to be displayed.
|
||||
#
|
||||
# * `event` A DOM event.
|
||||
|
||||
@@ -42,7 +42,6 @@ normalizeLabel = (label) ->
|
||||
else
|
||||
label.replace(/\&/g, '')
|
||||
|
||||
|
||||
cloneMenuItem = (item) ->
|
||||
item = _.pick(item, 'type', 'label', 'command', 'submenu', 'commandDetail')
|
||||
if item.submenu?
|
||||
|
||||
Reference in New Issue
Block a user