aboutsummaryrefslogtreecommitdiffstats
path: root/linkHints.js
diff options
context:
space:
mode:
authorBranden Rolston2010-04-28 11:36:16 -0700
committerBranden Rolston2010-04-28 11:36:16 -0700
commit07d8cc8787eca94ed733176b8e7961580c7dc9ec (patch)
tree677dacabe2b5315c41f1e51546ae273eb409c1a1 /linkHints.js
parent87e611dccd8a9c6b4ee681fc88f2a461f76e830a (diff)
downloadvimium-07d8cc8787eca94ed733176b8e7961580c7dc9ec.tar.bz2
Shift key toggles current/new tab in link hints 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();
}
/*