aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Blott2015-01-12 15:46:57 +0000
committerStephen Blott2015-01-12 15:46:57 +0000
commit88e4f1587f30b928ae7cce5d9e01e93b27c87f55 (patch)
treedd847b5db9a05b28147fb1467776b8e2a60aba95
parentee17e7365b84d0c59ce3bcf50c517a7408b372b3 (diff)
downloadvimium-88e4f1587f30b928ae7cce5d9e01e93b27c87f55.tar.bz2
Modes; hint mode should be an insert-mode blocker...
Also: - visual-mode template should block insert. - hint mode should exit on click.
-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"