aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts
diff options
context:
space:
mode:
Diffstat (limited to 'content_scripts')
-rw-r--r--content_scripts/link_hints.coffee8
1 files changed, 6 insertions, 2 deletions
diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee
index 56cea78d..70c51eac 100644
--- a/content_scripts/link_hints.coffee
+++ b/content_scripts/link_hints.coffee
@@ -82,13 +82,17 @@ HintCoordinator =
DomUtils.documentReady => Settings.onLoaded =>
requireHref = availableModes[modeIndex] in [COPY_LINK_URL, OPEN_INCOGNITO]
@localHints = LocalHints.getLocalHints requireHref
- @sendMessage "postHintDescriptors", hintDescriptors:
- @localHints.map ({linkText}, localIndex) -> {frameId, localIndex, linkText}
+ @localHintDescriptors = @localHints.map ({linkText}, localIndex) -> {frameId, localIndex, linkText}
+ @sendMessage "postHintDescriptors", hintDescriptors: @localHintDescriptors
# We activate LinkHintsMode() in every frame and provide every frame with exactly the same hint descriptors.
# We also propagate the key state between frames. Therefore, the hint-selection process proceeds in lock
# step in every frame, and @linkHintsMode is in the same state in every frame.
activateMode: ({hintDescriptors, modeIndex, originatingFrameId}) ->
+ # We do not receive the frame's own hint descritors back from the background page. Instead, we merge them
+ # with the hint descriptors from other frames here.
+ [hintDescriptors[frameId], @localHintDescriptors] = [@localHintDescriptors, null]
+ hintDescriptors = [].concat (hintDescriptors[fId] for fId in (fId for own fId of hintDescriptors).sort())...
# Ensure that the document is ready and that the settings are loaded.
DomUtils.documentReady => Settings.onLoaded =>
@suppressKeyboardEvents.exit() if @suppressKeyboardEvents?.modeIsActive