diff options
| author | Stephen Blott | 2015-03-06 13:45:36 +0000 |
|---|---|---|
| committer | Stephen Blott | 2015-03-06 13:45:36 +0000 |
| commit | 3c988a07a64a5bf4cab9ec98fe4d377c2af2208e (patch) | |
| tree | fd91f6c98c975ebc64782730839e3e84ed7450fa /pages/vomnibar.coffee | |
| parent | 5b6014c2f6d3fa24c04fbb5435fe79896f400001 (diff) | |
| download | vimium-3c988a07a64a5bf4cab9ec98fe4d377c2af2208e.tar.bz2 | |
Remove need for short delay to prevent vomnibar flicker.
This delivers a "hidden" massage to the vomnibar after the vomnibar has
been hiddent in the host page. The vomnibar only performs whatever
action is required when it receives this "hidden" message.
Diffstat (limited to 'pages/vomnibar.coffee')
| -rw-r--r-- | pages/vomnibar.coffee | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/pages/vomnibar.coffee b/pages/vomnibar.coffee index 8243b696..906aa0f3 100644 --- a/pages/vomnibar.coffee +++ b/pages/vomnibar.coffee @@ -39,10 +39,12 @@ Vomnibar = @vomnibarUI.update() hide: -> @vomnibarUI?.hide() + onHidden: -> @vomnibarUI?.onHidden() class VomnibarUI constructor: -> @refreshInterval = 0 + @postHideCallback = null @initDom() setQuery: (query) -> @input.value = query @@ -59,13 +61,10 @@ class VomnibarUI setForceNewTab: (forceNewTab) -> @forceNewTab = forceNewTab - # Hide the vomnibar, then call callback. We add a short delay to allow the vomnibar to close before the - # action is performed. This ensures (hopefully) that the vomnibar isn't visible when the tab is - # subsequently refocused (see #1485). - hide: (callback = ->) -> + hide: (callback = null) -> UIComponentServer.postMessage "hide" @reset() - setTimeout callback, 20 + @postHideCallback = callback reset: -> @completionList.style.display = "" @@ -74,6 +73,12 @@ class VomnibarUI @completions = [] @selection = @initialSelectionValue + # Called after the vomnibar has been hidden. We wait until after the vomnibar has been hidden to avoid + # vomnibar flicker (see #1485). + onHidden: -> + @postHideCallback?() + @postHideCallback = null + updateSelection: -> # We retain global state here (previousAutoSelect) to tell if a search item (for which autoSelect is set) # has just appeared or disappeared. If that happens, we set @selection to 0 or -1. @@ -238,7 +243,10 @@ extend BackgroundCompleter, switchToTab: (tabId) -> chrome.runtime.sendMessage({ handler: "selectSpecificTab", id: tabId }) UIComponentServer.registerHandler (event) -> - if event.data == "hide" then Vomnibar.hide() else Vomnibar.activate event.data + switch event.data + when "hide" then Vomnibar.hide() + when "hidden" then Vomnibar.onHidden() + else Vomnibar.activate event.data root = exports ? window root.Vomnibar = Vomnibar |
