mirror of
https://github.com/atom/atom.git
synced 2026-04-06 03:02:13 -04:00
Remove all redundant separators
This commit is contained in:
@@ -149,7 +149,7 @@ describe "ContextMenuManager", ->
|
||||
shouldDisplay = false
|
||||
expect(contextMenu.templateForEvent(dispatchedEvent)).toEqual []
|
||||
|
||||
it "prunes a trailing separator", ->
|
||||
fit "prunes a trailing separator", ->
|
||||
contextMenu.add
|
||||
'.grandchild': [
|
||||
{label: 'A', command: 'a'},
|
||||
@@ -160,6 +160,44 @@ describe "ContextMenuManager", ->
|
||||
|
||||
expect(contextMenu.templateForEvent({target: grandchild}).length).toBe(3)
|
||||
|
||||
fit "prunes a leading separator", ->
|
||||
contextMenu.add
|
||||
'.grandchild': [
|
||||
{type: 'separator'},
|
||||
{label: 'A', command: 'a'},
|
||||
{type: 'separator'},
|
||||
{label: 'B', command: 'b'}
|
||||
]
|
||||
|
||||
expect(contextMenu.templateForEvent({target: grandchild}).length).toBe(3)
|
||||
|
||||
fit "prunes duplicate separators", ->
|
||||
contextMenu.add
|
||||
'.grandchild': [
|
||||
{label: 'A', command: 'a'},
|
||||
{type: 'separator'},
|
||||
{type: 'separator'},
|
||||
{label: 'B', command: 'b'}
|
||||
]
|
||||
|
||||
expect(contextMenu.templateForEvent({target: grandchild}).length).toBe(3)
|
||||
|
||||
fit "prunes all redundant separators", ->
|
||||
contextMenu.add
|
||||
'.grandchild': [
|
||||
{type: 'separator'},
|
||||
{type: 'separator'},
|
||||
{label: 'A', command: 'a'},
|
||||
{type: 'separator'},
|
||||
{type: 'separator'},
|
||||
{label: 'B', command: 'b'}
|
||||
{label: 'C', command: 'c'}
|
||||
{type: 'separator'},
|
||||
{type: 'separator'},
|
||||
]
|
||||
|
||||
expect(contextMenu.templateForEvent({target: grandchild}).length).toBe(4)
|
||||
|
||||
it "throws an error when the selector is invalid", ->
|
||||
addError = null
|
||||
try
|
||||
|
||||
@@ -145,12 +145,23 @@ class ContextMenuManager
|
||||
|
||||
currentTarget = currentTarget.parentElement
|
||||
|
||||
# Remove trailing separator
|
||||
if template.length > 0 and template[template.length - 1].type is 'separator'
|
||||
template.splice(template.length-1, 1)
|
||||
@pruneRedundantSeparators(template)
|
||||
|
||||
template
|
||||
|
||||
pruneRedundantSeparators: (menu) ->
|
||||
keepNextItemIfSeparator = false
|
||||
index = 0
|
||||
while index < menu.length
|
||||
if menu[index].type is 'separator'
|
||||
if not keepNextItemIfSeparator or index is menu.length - 1
|
||||
menu.splice(index, 1)
|
||||
else
|
||||
index++
|
||||
else
|
||||
keepNextItemIfSeparator = true
|
||||
index++
|
||||
|
||||
# Returns an object compatible with `::add()` or `null`.
|
||||
cloneItemForEvent: (item, event) ->
|
||||
return null if item.devMode and not @devMode
|
||||
|
||||
Reference in New Issue
Block a user