diff options
Diffstat (limited to 'content_scripts/hud.coffee')
| -rw-r--r-- | content_scripts/hud.coffee | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/content_scripts/hud.coffee b/content_scripts/hud.coffee index 84b8abeb..bfad71b7 100644 --- a/content_scripts/hud.coffee +++ b/content_scripts/hud.coffee @@ -6,6 +6,7 @@ HUD = tween: null hudUI: null _displayElement: null + findMode: null # This HUD is styled to precisely mimick the chrome HUD on Mac. Use the "has_popup_and_link_hud.html" # test harness to tweak these styles to match Chrome's. One limitation of our HUD display is that @@ -26,6 +27,19 @@ HUD = @hudUI.show {name: "show", text} @tween.fade 1.0, 150 + showFindMode: (@findMode = null) -> + return unless @enabled() + @hudUI.show {name: "showFindMode", text: ""} + @tween.fade 1.0, 150 + + search: (data) -> + @findMode.findInPlace data.query + + # Show the number of matches in the HUD UI. + matchCount = if FindMode.query.parsedQuery.length > 0 then FindMode.query.matchCount else 0 + showMatchText = FindMode.query.rawQuery.length > 0 + @hudUI.postMessage {name: "updateMatchesCount", matchCount, showMatchText} + # Hide the HUD. # If :immediate is falsy, then the HUD is faded out smoothly (otherwise it is hidden immediately). # If :updateIndicator is truthy, then we also refresh the mode indicator. The only time we don't update the @@ -42,6 +56,32 @@ HUD = else @tween.fade 0, 150, => @hide true, updateIndicator + hideFindMode: (data) -> + @findMode.checkReturnToViewPort() + + # An element element won't receive a focus event if the search landed on it while we were in the HUD + # iframe. To end up with the correct modes active, we create a focus/blur event manually after refocusing + # this window. + window.focus() + + focusNode = DomUtils.getSelectionFocusElement() + document.activeElement?.blur() + focusNode?.focus() + + {event} = data + + if event.keyCode == keyCodes.enter + handleEnterForFindMode() + if FindMode.query.hasResults + postExit = -> new PostFindMode + else if KeyboardUtils.isEscape event + # We don't want FindMode to handle the click events that handleEscapeForFindMode can generate, so we + # wait until the mode is closed before running it. + postExit = handleEscapeForFindMode + + @findMode.exit() + postExit?() + isReady: do -> ready = false DomUtils.documentReady -> ready = true |
