aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts/link_hints.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'content_scripts/link_hints.coffee')
-rw-r--r--content_scripts/link_hints.coffee12
1 files changed, 11 insertions, 1 deletions
diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee
index eeadfc0c..f06ef786 100644
--- a/content_scripts/link_hints.coffee
+++ b/content_scripts/link_hints.coffee
@@ -11,6 +11,7 @@
# The "name" property below is a short-form name to appear in the link-hints mode's name. It's for debug only.
#
isMac = KeyboardUtils.platform == "Mac"
+simulateClickDefaultAction = true
OPEN_IN_CURRENT_TAB =
name: "curr-tab"
indicator: "Open link in current tab"
@@ -384,7 +385,16 @@ class LinkHintsMode
window.focus()
DomUtils.simulateSelect clickEl
else
- clickActivator = (modifiers) -> (link) -> DomUtils.simulateClick link, modifiers
+ clickActivator = (modifiers) -> (link) ->
+ defaultActionsTriggered = DomUtils.simulateClick link, modifiers
+ if simulateClickDefaultAction and
+ defaultActionsTriggered[3] and link.tagName?.toLowerCase() == "a" and
+ modifiers? and modifiers.metaKey == isMac and modifiers.ctrlKey == not isMac
+ # We've clicked a link that *should* open in a new tab. If simulateClickDefaultAction is true,
+ # we assume the popup-blocker is active, and simulate opening the new tab ourselves.
+ chrome.runtime.sendMessage {handler: "openUrlInNewTab", url: link.href, active:
+ modifiers.shiftKey == true}
+
linkActivator = @mode.linkActivator ? clickActivator @mode.clickModifiers
# TODO: Are there any other input elements which should not receive focus?
if clickEl.nodeName.toLowerCase() in ["input", "select"] and clickEl.type not in ["button", "submit"]