aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Blott2015-06-07 10:53:25 +0100
committerStephen Blott2015-06-07 10:53:35 +0100
commit59daec7b9914729b60e1d783bb1143499421fae6 (patch)
treea4b8b0a60d892d1ee626f46e5be6415088dac01b
parent20038e470c84a722c61c7afb5f634e9890f6eaf3 (diff)
downloadvimium-59daec7b9914729b60e1d783bb1143499421fae6.tar.bz2
Exit link-hint mode on click or scroll.
Exit on click because, if the user is clicking stuff, then they're probably no longer interested in selecting links. Exit on scroll because, if the user is scrolling, then the link hints can all go out of the viewport.
-rw-r--r--content_scripts/link_hints.coffee2
-rw-r--r--content_scripts/mode.coffee6
-rw-r--r--content_scripts/vimium_frontend.coffee2
3 files changed, 9 insertions, 1 deletions
diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee
index 1e172710..04853c22 100644
--- a/content_scripts/link_hints.coffee
+++ b/content_scripts/link_hints.coffee
@@ -70,6 +70,8 @@ LinkHints =
passInitialKeyupEvents: true
suppressAllKeyboardEvents: true
exitOnEscape: true
+ exitOnClick: true
+ exitOnScroll: true
keypress: @onKeyDownInMode.bind this, hintMarkers
@hintMode.onExit =>
diff --git a/content_scripts/mode.coffee b/content_scripts/mode.coffee
index ffabc111..508b1b2c 100644
--- a/content_scripts/mode.coffee
+++ b/content_scripts/mode.coffee
@@ -101,6 +101,12 @@ class Mode
"focus": (event) => @alwaysContinueBubbling =>
@exit event if DomUtils.isFocusable event.target
+ # If @options.exitOnScroll is truthy, then the mode will exit on any scroll event.
+ if @options.exitOnScroll
+ @push
+ _name: "mode-#{@id}/exitOnScroll"
+ "scroll": (event) => @alwaysContinueBubbling => @exit event
+
# Some modes are singletons: there may be at most one instance active at any time. A mode is a singleton
# if @options.singleton is truthy. The value of @options.singleton should be the key which is intended to
# be unique. New instances deactivate existing instances with the same key.
diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee
index 3055ecea..8c28b4e6 100644
--- a/content_scripts/vimium_frontend.coffee
+++ b/content_scripts/vimium_frontend.coffee
@@ -192,7 +192,7 @@ window.installListeners = ->
unless installedListeners
# Key event handlers fire on window before they do on document. Prefer window for key events so the page
# can't set handlers to grab the keys before us.
- for type in [ "keydown", "keypress", "keyup", "click", "focus", "blur", "mousedown" ]
+ for type in [ "keydown", "keypress", "keyup", "click", "focus", "blur", "mousedown", "scroll" ]
do (type) -> installListener window, type, (event) -> handlerStack.bubbleEvent type, event
installListener document, "DOMActivate", (event) -> handlerStack.bubbleEvent 'DOMActivate', event
installedListeners = true