Calling .abortKeyBinding on an event that wasn't triggered by the keymap is ok

Certain events call `abortKeyBinding` to opt out of handling certain keybindings. Snippets does this with tab for example. If it's not a situation where it's appropriate to go to the next tab stop, we let the next binding be triggered, which could insert a tab, for example. But when we trigger events from the event palette, there *is* no next binding. Having a no-op function helps in this situation.
This commit is contained in:
Corey Johnson & Nathan Sobo 2012-10-19 12:42:27 -06:00
parent 503d25dff0
commit 84b2cabeb3
2 changed files with 9 additions and 1 deletions

View File

@ -86,7 +86,9 @@ describe "Keymap", ->
expect(insertCharHandler).not.toHaveBeenCalled()
describe "when 'abortKeyBinding' is called on the triggered event", ->
it "aborts the current event and tries again with the next-most-specific key binding", ->
[fooHandler1, fooHandler2] = []
beforeEach ->
fooHandler1 = jasmine.createSpy('fooHandler1').andCallFake (e) ->
expect(deleteCharHandler).not.toHaveBeenCalled()
e.abortKeyBinding()
@ -95,12 +97,16 @@ describe "Keymap", ->
fragment.find('.child-node').on 'foo', fooHandler1
fragment.on 'foo', fooHandler2
it "aborts the current event and tries again with the next-most-specific key binding", ->
target = fragment.find('.grandchild-node')[0]
keymap.handleKeyEvent(keydownEvent('x', target: target))
expect(fooHandler1).toHaveBeenCalled()
expect(fooHandler2).not.toHaveBeenCalled()
expect(deleteCharHandler).toHaveBeenCalled()
ffit "does not throw an exception if the event was not triggered by the keymap", ->
fragment.find('.grandchild-node').trigger 'foo'
describe "when the event bubbles to a node that matches multiple selectors", ->
describe "when the matching selectors differ in specificity", ->
it "triggers the binding for the most specific selector", ->

View File

@ -72,3 +72,5 @@ $.fn.command = (args...) ->
documentation[eventName] = _.humanizeEventName(eventName)
@document(documentation)
@on(args...)
$.Event.prototype.abortKeyBinding = ->