aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content_scripts/marks.coffee15
-rw-r--r--content_scripts/mode.coffee9
2 files changed, 13 insertions, 11 deletions
diff --git a/content_scripts/marks.coffee b/content_scripts/marks.coffee
index f3dfd465..8ba45fd4 100644
--- a/content_scripts/marks.coffee
+++ b/content_scripts/marks.coffee
@@ -2,15 +2,13 @@
exit = (mode, continuation = null) ->
mode.exit()
continuation?()
- false
Marks =
activateCreateMode: ->
mode = new Mode
name: "create-mark"
indicator: "Create mark?"
- keypress: -> false
- keyup: -> false
+ suppressAllKeyboardEvents: true
keydown: (event) ->
keyChar = KeyboardUtils.getKeyChar(event)
if /[A-Z]/.test keyChar
@@ -27,17 +25,14 @@ Marks =
scrollX: window.scrollX,
scrollY: window.scrollY
exit mode, -> HUD.showForDuration "Created local mark '#{keyChar}'.", 1000
- else if event.shiftKey
- false
- else
+ else if not event.shiftKey
exit mode
activateGotoMode: ->
mode = new Mode
name: "goto-mark"
indicator: "Go to mark?"
- keypress: -> false
- keyup: -> false
+ suppressAllKeyboardEvents: true
keydown: (event) ->
keyChar = KeyboardUtils.getKeyChar(event)
if /[A-Z]/.test keyChar
@@ -55,9 +50,7 @@ Marks =
HUD.showForDuration "Jumped to local mark '#{keyChar}'", 1000
else
HUD.showForDuration "Local mark not set: '#{keyChar}'.", 1000
- else if event.shiftKey
- false
- else
+ else if not event.shiftKey
exit mode
root = exports ? window
diff --git a/content_scripts/mode.coffee b/content_scripts/mode.coffee
index f631b4cd..b2019ef9 100644
--- a/content_scripts/mode.coffee
+++ b/content_scripts/mode.coffee
@@ -47,6 +47,15 @@ class Mode
@id = "#{@name}-#{@count}"
@log "activate:", @id
+ # If options.suppressAllKeyboardEvents is truthy, then all keyboard events are suppressed. This avoids
+ # the need for modes which block all keyboard events to 1) provide handlers for all keyboard events,
+ # and 2) worry about their return value.
+ if options.suppressAllKeyboardEvents
+ for type in [ "keydown", "keypress", "keyup" ]
+ do (type) ->
+ handler = options[type]
+ options[type] = (event) -> handler? event; false
+
@push
keydown: @options.keydown || null
keypress: @options.keypress || null