diff options
| -rw-r--r-- | linkHints.js | 24 | 
1 files changed, 11 insertions, 13 deletions
diff --git a/linkHints.js b/linkHints.js index 3b3fc3f9..1bd93a23 100644 --- a/linkHints.js +++ b/linkHints.js @@ -16,8 +16,6 @@ var linkHints = {    shouldOpenWithQueue: false,    // function that does the appropriate action on the selected link    linkActivator: undefined, -  // Whether link hint's "open in current/new tab" setting is currently toggled -  openLinkModeToggle: false,    // While in delayMode, all keypresses have no effect.    delayMode: false,    // Handle the link hinting marker generation and matching. Must be initialized after settings have been @@ -47,7 +45,7 @@ var linkHints = {    // We need this as a top-level function because our command system doesn't yet support arguments.    activateModeToOpenInNewTab: function() { this.activateMode(true, false, false); }, -  activateModeToCopyLinkUrl: function() { this.activateMode(false, false, true); }, +  activateModeToCopyLinkUrl: function() { this.activateMode(null, false, true); },    activateModeWithQueue: function() { this.activateMode(true, true, false); }, @@ -62,8 +60,6 @@ var linkHints = {        keypress: this.onKeyPressInMode,        keyup: this.onKeyUpInMode      }); - -    this.openLinkModeToggle = false;    },    setOpenLinkMode: function(openInNewTab, withQueue, copyLinkUrl) { @@ -168,10 +164,18 @@ var linkHints = {      if (this.delayMode)        return; -    if (event.keyCode == keyCodes.shiftKey && !this.openLinkModeToggle) { +    var that = this; + +    if (event.keyCode == keyCodes.shiftKey && this.shouldOpenInNewTab !== null) {        // Toggle whether to open link in a new or current tab.        this.setOpenLinkMode(!this.shouldOpenInNewTab, this.shouldOpenWithQueue, false); -      this.openLinkModeToggle = true; +      handlerStack.push({ +        keyup: function(event) { +          if (event.keyCode !== keyCodes.shiftKey) return; +          linkHints.setOpenLinkMode(!that.shouldOpenInNewTab, that.shouldOpenWithQueue, false); +          handlerStack.pop(); +        } +      });      }      // TODO(philc): Ignore keys that have modifiers. @@ -201,12 +205,6 @@ var linkHints = {    onKeyUpInMode: function(event) {      if (this.delayMode)        return; - -    if (event.keyCode == keyCodes.shiftKey && this.openLinkModeToggle) { -      // Revert toggle on whether to open link in new or current tab. -      this.setOpenLinkMode(!this.shouldOpenInNewTab, this.shouldOpenWithQueue, false); -      this.openLinkModeToggle = false; -    }    },    /*  | 
