diff options
| -rw-r--r-- | content_scripts/link_hints.coffee | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee index 0739d621..01ed6de5 100644 --- a/content_scripts/link_hints.coffee +++ b/content_scripts/link_hints.coffee @@ -68,8 +68,8 @@ HintCoordinator =      Settings.onLoaded =>        @localHints = LocalHints.getLocalHints()        @sendMessage "postHintDescriptors", hintDescriptors: -        @localHints.map ({rect, linkText, showLinkText, hasHref}, localIndex) -> -          {rect, linkText, showLinkText, hasHref, frameId, localIndex} +        @localHints.map ({rect, linkText, showLinkText, hasHref, reason}, localIndex) -> +          {rect, linkText, showLinkText, hasHref, reason, frameId, localIndex}    # 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 @@ -283,8 +283,11 @@ class LinkHintsMode      if clickEl?        HintCoordinator.onExit.push (isSuccess) =>          if isSuccess -          if clickEl == document.body +          if linkMatched.hintDescriptor.reason == "Frame."              Utils.nextTick -> focusThisFrame highlight: true +          else if linkMatched.hintDescriptor.reason == "Scroll." +            # Tell the scroller that this is the activated element. +            handlerStack.bubbleEvent "DOMActivate", target: clickEl            else if DomUtils.isSelectable clickEl              window.focus()              DomUtils.simulateSelect clickEl @@ -576,6 +579,9 @@ LocalHints =                window.innerWidth > 3 and window.innerHeight > 3 and                document.body?.tagName.toLowerCase() != "frameset"              reason = "Frame." +        isClickable ||= +          if element == document.body and document.hasFocus() and Scroller.isScrollableElement element +            reason = "Scroll."        when "div", "ol", "ul"          isClickable ||=            if element.clientHeight < element.scrollHeight and Scroller.isScrollableElement element  | 
