aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content_scripts/link_hints.coffee3
-rw-r--r--content_scripts/mode.coffee6
-rw-r--r--content_scripts/mode_visual.coffee2
3 files changed, 9 insertions, 2 deletions
diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee
index 909f50b4..ad2afaa2 100644
--- a/content_scripts/link_hints.coffee
+++ b/content_scripts/link_hints.coffee
@@ -66,12 +66,13 @@ LinkHints =
{ id: "vimiumHintMarkerContainer", className: "vimiumReset" })
@handlerMode =
- new class HintMode extends Mode
+ new class HintMode extends InsertModeBlocker
constructor: ->
super
name: "hint/#{mode.name}"
badge: "#{mode.key}?"
exitOnEscape: true
+ exitOnClick: true
keydown: (event) -> LinkHints.onKeyDownInMode hintMarkers, event
# trap all key events
keypress: => @stopBubblingAndFalse
diff --git a/content_scripts/mode.coffee b/content_scripts/mode.coffee
index 94854b74..51bb1c29 100644
--- a/content_scripts/mode.coffee
+++ b/content_scripts/mode.coffee
@@ -97,6 +97,12 @@ class Mode
_name: "mode-#{@id}/exitOnBlur"
"blur": (event) => @alwaysContinueBubbling => @exit() if event.srcElement == @options.exitOnBlur
+ # If @options.exitOnClick is truthy, then the mode will exit on any click event.
+ if @options.exitOnClick
+ @push
+ _name: "mode-#{@id}/exitOnClick"
+ "click": (event) => @alwaysContinueBubbling => @exit()
+
# If @options.trackState is truthy, then the mode mainatins the current state in @enabled and @passKeys,
# and calls @registerStateChange() (if defined) whenever the state changes.
if @options.trackState
diff --git a/content_scripts/mode_visual.coffee b/content_scripts/mode_visual.coffee
index 2580106d..7b5cc0f6 100644
--- a/content_scripts/mode_visual.coffee
+++ b/content_scripts/mode_visual.coffee
@@ -1,5 +1,5 @@
-class VisualMode extends Mode
+class VisualMode extends InsertModeBlocker
constructor: (element=null) ->
super
name: "visual"