diff options
| -rw-r--r-- | content_scripts/link_hints.coffee | 27 | ||||
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 6 | ||||
| -rw-r--r-- | lib/dom_utils.coffee | 9 |
3 files changed, 26 insertions, 16 deletions
diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee index 5e41cbbb..2abfa001 100644 --- a/content_scripts/link_hints.coffee +++ b/content_scripts/link_hints.coffee @@ -257,22 +257,31 @@ LinkHints = if ((event.keyCode == keyCodes.shiftKey or event.keyCode == keyCodes.ctrlKey) and (@mode == OPEN_IN_CURRENT_TAB or + @mode == OPEN_WITH_QUEUE or @mode == OPEN_IN_NEW_BG_TAB or @mode == OPEN_IN_NEW_FG_TAB)) - # Toggle whether to open link in a new or current tab. - prev_mode = @mode - - if event.keyCode == keyCodes.shiftKey - @setOpenLinkMode(if @mode is OPEN_IN_CURRENT_TAB then OPEN_IN_NEW_BG_TAB else OPEN_IN_CURRENT_TAB) - - else # event.keyCode == keyCodes.ctrlKey - @setOpenLinkMode(if @mode is OPEN_IN_NEW_FG_TAB then OPEN_IN_NEW_BG_TAB else OPEN_IN_NEW_FG_TAB) + # Toggle whether to open the link in a new or current tab. + previousMode = @mode + keyCode = event.keyCode + + switch keyCode + when keyCodes.shiftKey + @setOpenLinkMode(if @mode is OPEN_IN_CURRENT_TAB then OPEN_IN_NEW_BG_TAB else OPEN_IN_CURRENT_TAB) + when keyCodes.ctrlKey + @setOpenLinkMode(if @mode is OPEN_IN_NEW_FG_TAB then OPEN_IN_NEW_BG_TAB else OPEN_IN_NEW_FG_TAB) + + handlerStack.push + keyup: (event) => + if event.keyCode == keyCode + @setOpenLinkMode previousMode if @isActive + handlerStack.remove() + true # TODO(philc): Ignore keys that have modifiers. if (KeyboardUtils.isEscape(event)) DomUtils.suppressKeyupAfterEscape handlerStack @deactivateMode() - else + else if (event.keyCode != keyCodes.shiftKey and event.keyCode != keyCodes.ctrlKey) keyResult = @getMarkerMatcher().matchHintsByKey(hintMarkers, event) linksMatched = keyResult.linksMatched delay = keyResult.delay ? 0 diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 6a26a133..7121569a 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -1187,9 +1187,9 @@ CursorHider = window.addEventListener "scroll", @onScroll initializePreDomReady() -window.addEventListener("DOMContentLoaded", registerFrame) -window.addEventListener("unload", unregisterFrame) -window.addEventListener("DOMContentLoaded", initializeOnDomReady) +DomUtils.documentReady initializeOnDomReady +DomUtils.documentReady registerFrame +window.addEventListener "unload", unregisterFrame window.onbeforeunload = -> chrome.runtime.sendMessage( diff --git a/lib/dom_utils.coffee b/lib/dom_utils.coffee index e1f1f442..aee2f972 100644 --- a/lib/dom_utils.coffee +++ b/lib/dom_utils.coffee @@ -2,10 +2,11 @@ DomUtils = # # Runs :callback if the DOM has loaded, otherwise runs it on load # - documentReady: do -> - loaded = false - window.addEventListener("DOMContentLoaded", -> loaded = true) - (callback) -> if loaded then callback() else window.addEventListener("DOMContentLoaded", callback) + documentReady: (func) -> + if document.readyState == "loading" + window.addEventListener "DOMContentLoaded", func + else + func() # # Adds a list of elements to a page. |
