aboutsummaryrefslogtreecommitdiffstats
path: root/pages/vomnibar.coffee
diff options
context:
space:
mode:
authorStephen Blott2015-03-06 13:45:36 +0000
committerStephen Blott2015-03-06 13:45:36 +0000
commit3c988a07a64a5bf4cab9ec98fe4d377c2af2208e (patch)
treefd91f6c98c975ebc64782730839e3e84ed7450fa /pages/vomnibar.coffee
parent5b6014c2f6d3fa24c04fbb5435fe79896f400001 (diff)
downloadvimium-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.coffee20
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