diff options
| author | Stephen Blott | 2015-06-07 10:53:25 +0100 |
|---|---|---|
| committer | Stephen Blott | 2015-06-07 10:53:35 +0100 |
| commit | 59daec7b9914729b60e1d783bb1143499421fae6 (patch) | |
| tree | a4b8b0a60d892d1ee626f46e5be6415088dac01b | |
| parent | 20038e470c84a722c61c7afb5f634e9890f6eaf3 (diff) | |
| download | vimium-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.coffee | 2 | ||||
| -rw-r--r-- | content_scripts/mode.coffee | 6 | ||||
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 2 |
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 |
