diff options
Diffstat (limited to 'content_scripts')
| -rw-r--r-- | content_scripts/link_hints.coffee | 8 |
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 |
