aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts
diff options
context:
space:
mode:
authorStephen Blott2016-01-31 15:26:46 +0000
committerStephen Blott2016-01-31 15:26:46 +0000
commitaad03c6d834d81d52c99d62f77fa87d0e5b3384f (patch)
tree69bd152980938a2e0ce35e58c72299b7f67a3778 /content_scripts
parent8f54de210ebc1109cf9a82eae14296667a37f751 (diff)
downloadvimium-aad03c6d834d81d52c99d62f77fa87d0e5b3384f.tar.bz2
Use a count with link hints.
Pass a count to link-hint commands, and the link-hint mode is started that many times (except "with queue"). This resolves the same issue as #1291. However, this: - does not require re-basing (which is no biggie), and - keeps all of the count-handling logic (apart from plumbing) in one place, in `LinkHints.activateMode()`. The link-hints mode itself does not know anything about count handling. Serious bug: - Using `Escape` to exit does not cancel the repeat! Fixes #1289. Closes #1291.
Diffstat (limited to 'content_scripts')
-rw-r--r--content_scripts/link_hints.coffee19
1 files changed, 11 insertions, 8 deletions
diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee
index 54476935..3fcbfd40 100644
--- a/content_scripts/link_hints.coffee
+++ b/content_scripts/link_hints.coffee
@@ -19,14 +19,16 @@ OPEN_INCOGNITO = name: "incognito"
DOWNLOAD_LINK_URL = name: "download"
LinkHints =
- activateMode: (mode = OPEN_IN_CURRENT_TAB) -> new LinkHintsMode mode
+ activateMode: (count = 1, mode = OPEN_IN_CURRENT_TAB) ->
+ if 0 < count
+ new LinkHintsMode mode, -> LinkHints.activateMode count-1, mode
- activateModeToOpenInNewTab: -> @activateMode OPEN_IN_NEW_BG_TAB
- activateModeToOpenInNewForegroundTab: -> @activateMode OPEN_IN_NEW_FG_TAB
- activateModeToCopyLinkUrl: -> @activateMode COPY_LINK_URL
- activateModeWithQueue: -> @activateMode OPEN_WITH_QUEUE
- activateModeToOpenIncognito: -> @activateMode OPEN_INCOGNITO
- activateModeToDownloadLink: -> @activateMode DOWNLOAD_LINK_URL
+ activateModeToOpenInNewTab: (count) -> @activateMode count, OPEN_IN_NEW_BG_TAB
+ activateModeToOpenInNewForegroundTab: (count) -> @activateMode count, OPEN_IN_NEW_FG_TAB
+ activateModeToCopyLinkUrl: (count) -> @activateMode count, COPY_LINK_URL
+ activateModeWithQueue: -> @activateMode 1, OPEN_WITH_QUEUE
+ activateModeToOpenIncognito: (count) -> @activateMode count, OPEN_INCOGNITO
+ activateModeToDownloadLink: (count) -> @activateMode count, DOWNLOAD_LINK_URL
class LinkHintsMode
hintMarkerContainingDiv: null
@@ -43,7 +45,7 @@ class LinkHintsMode
# A count of the number of Tab presses since the last non-Tab keyboard event.
tabCount: 0
- constructor: (mode = OPEN_IN_CURRENT_TAB) ->
+ constructor: (mode = OPEN_IN_CURRENT_TAB, onExit = (->)) ->
# we need documentElement to be ready in order to append links
return unless document.documentElement
@isActive = true
@@ -80,6 +82,7 @@ class LinkHintsMode
@hintMode.onExit =>
@deactivateMode() if @isActive
+ @hintMode.onExit onExit
@setOpenLinkMode mode