aboutsummaryrefslogtreecommitdiffstats
path: root/linkHints.js
diff options
context:
space:
mode:
Diffstat (limited to 'linkHints.js')
-rw-r--r--linkHints.js31
1 files changed, 30 insertions, 1 deletions
diff --git a/linkHints.js b/linkHints.js
index de140581..aa6ba5d3 100644
--- a/linkHints.js
+++ b/linkHints.js
@@ -13,6 +13,8 @@ var hintMarkerContainingDiv = null;
var hintKeystrokeQueue = [];
var linkHintsModeActivated = false;
var shouldOpenLinkHintInNewTab = false;
+// Whether link hint's "open in current/new tab" setting is currently toggled
+var openLinkModeToggle = false;
// Whether we have added to the page the CSS needed to display link hints.
var linkHintsCssAdded = false;
@@ -37,9 +39,18 @@ function activateLinkHintsMode(openInNewTab) {
addCssToPage(linkHintCss); // linkHintCss is declared by vimiumFrontend.js
linkHintCssAdded = true;
linkHintsModeActivated = true;
- shouldOpenLinkHintInNewTab = openInNewTab
+ setOpenLinkMode(openInNewTab);
buildLinkHints();
document.addEventListener("keydown", onKeyDownInLinkHintsMode, true);
+ document.addEventListener("keyup", onKeyUpInLinkHintsMode, true);
+}
+
+function setOpenLinkMode(openInNewTab) {
+ shouldOpenLinkHintInNewTab = openInNewTab;
+ if (shouldOpenLinkHintInNewTab)
+ HUD.show("Open link in new tab");
+ else
+ HUD.show("Open link in current tab");
}
/*
@@ -113,6 +124,12 @@ function getVisibleClickableElements() {
}
function onKeyDownInLinkHintsMode(event) {
+ if (event.keyCode == keyCodes.shiftKey && !openLinkModeToggle) {
+ // Toggle whether to open link in a new or current tab.
+ setOpenLinkMode(!shouldOpenLinkHintInNewTab);
+ openLinkModeToggle = true;
+ }
+
var keyChar = getKeyChar(event);
if (!keyChar)
return;
@@ -138,6 +155,16 @@ function onKeyDownInLinkHintsMode(event) {
event.preventDefault();
}
+function onKeyUpInLinkHintsMode(event) {
+ if (event.keyCode == keyCodes.shiftKey && openLinkModeToggle) {
+ // Revert toggle on whether to open link in new or current tab.
+ setOpenLinkMode(!shouldOpenLinkHintInNewTab);
+ openLinkModeToggle = false;
+ }
+ event.stopPropagation();
+ event.preventDefault();
+}
+
/*
* Updates the visibility of link hints on screen based on the keystrokes typed thus far. If only one
* link hint remains, click on that link and exit link hints mode.
@@ -238,7 +265,9 @@ function deactivateLinkHintsMode() {
hintMarkers = [];
hintKeystrokeQueue = [];
document.removeEventListener("keydown", onKeyDownInLinkHintsMode, true);
+ document.removeEventListener("keyup", onKeyUpInLinkHintsMode, true);
linkHintsModeActivated = false;
+ HUD.hide();
}
/*