diff --git a/spec/context-menu-manager-spec.coffee b/spec/context-menu-manager-spec.coffee index b336361f8..63815d1dd 100644 --- a/spec/context-menu-manager-spec.coffee +++ b/spec/context-menu-manager-spec.coffee @@ -149,6 +149,17 @@ describe "ContextMenuManager", -> shouldDisplay = false expect(contextMenu.templateForEvent(dispatchedEvent)).toEqual [] + it "prunes a trailing separator", -> + contextMenu.add + '.grandchild': [ + {label: 'A', command: 'a'}, + {type: 'separator'}, + {label: 'B', command: 'b'}, + {type: 'separator'} + ] + + expect(contextMenu.templateForEvent({target: grandchild}).length).toBe(3) + it "throws an error when the selector is invalid", -> addError = null try diff --git a/src/context-menu-manager.coffee b/src/context-menu-manager.coffee index 936a9c6b6..1fe780db3 100644 --- a/src/context-menu-manager.coffee +++ b/src/context-menu-manager.coffee @@ -145,6 +145,10 @@ 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) + template # Returns an object compatible with `::add()` or `null`.