aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Blott2015-03-05 15:14:01 +0000
committerStephen Blott2015-03-05 15:14:01 +0000
commit8099d5d57f885517c4d5e04cdcc74c91980a75fb (patch)
tree350b2ce99b6b76584d711fff88069941afe2cb09
parentc2638cd00b19e04bdfed164de6b1a3d4051cfbd9 (diff)
downloadvimium-8099d5d57f885517c4d5e04cdcc74c91980a75fb.tar.bz2
Hide vomnibar if host frame regains focus.
Fixes #1506. This takes the opposite approach to #1511. Instead of hiding the vomnibar when it blurs, we hide it when it's host frame is focused.
-rw-r--r--content_scripts/ui_component.coffee15
-rw-r--r--pages/vomnibar.coffee5
2 files changed, 12 insertions, 8 deletions
diff --git a/content_scripts/ui_component.coffee b/content_scripts/ui_component.coffee
index c4ed3bf6..c6b59464 100644
--- a/content_scripts/ui_component.coffee
+++ b/content_scripts/ui_component.coffee
@@ -29,24 +29,25 @@ class UIComponent
activate: (message) ->
@postMessage message if message?
- if @showing
- # NOTE(smblott) Experimental. Not sure this is a great idea. If the iframe was already showing, then
- # the user gets no visual feedback when it is re-focused. So flash its border.
- @iframeElement.classList.add "vimiumUIComponentReactivated"
- setTimeout((=> @iframeElement.classList.remove "vimiumUIComponentReactivated"), 200)
- else
- @show()
+ @show() unless @showing
@iframeElement.focus()
show: (message) ->
@postMessage message if message?
@iframeElement.classList.remove "vimiumUIComponentHidden"
@iframeElement.classList.add "vimiumUIComponentShowing"
+ window.addEventListener "focus", @onFocus = (event) =>
+ if event.target == window
+ window.removeEventListener @onFocus
+ @onFocus = null
+ @postMessage "hide"
@showing = true
hide: (focusWindow = true)->
@iframeElement.classList.remove "vimiumUIComponentShowing"
@iframeElement.classList.add "vimiumUIComponentHidden"
+ window.removeEventListener @onFocus if @onFocus
+ @onFocus = null
window.focus() if focusWindow
@showing = false
diff --git a/pages/vomnibar.coffee b/pages/vomnibar.coffee
index 18a72a37..255dd893 100644
--- a/pages/vomnibar.coffee
+++ b/pages/vomnibar.coffee
@@ -38,6 +38,8 @@ Vomnibar =
@vomnibarUI.setQuery(options.query)
@vomnibarUI.update()
+ hide: -> @vomnibarUI?.hide()
+
class VomnibarUI
constructor: ->
@refreshInterval = 0
@@ -225,7 +227,8 @@ extend BackgroundCompleter,
switchToTab: (tabId) -> chrome.runtime.sendMessage({ handler: "selectSpecificTab", id: tabId })
-UIComponentServer.registerHandler (event) -> Vomnibar.activate event.data
+UIComponentServer.registerHandler (event) ->
+ if event.data == "hide" then Vomnibar.hide() else Vomnibar.activate event.data
root = exports ? window
root.Vomnibar = Vomnibar