aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormrmr19932014-12-29 09:33:34 +0000
committermrmr19932014-12-29 09:33:34 +0000
commit5ea0f75a00b592956981bf8f6f7a0d2fa89620ae (patch)
treefc2d8ba0ebdfcd50e6aa7392b3a716c4c0d5ea1a
parent71af7f016f51e3c8b9c1fcfba46cb8289c91e030 (diff)
downloadvimium-5ea0f75a00b592956981bf8f6f7a0d2fa89620ae.tar.bz2
Close UIComponent iframes when pressing esc by default
-rw-r--r--content_scripts/ui_component.coffee11
-rw-r--r--pages/test_ui_component.coffee5
-rw-r--r--pages/test_ui_component.html1
-rw-r--r--pages/ui_component_server.coffee9
4 files changed, 21 insertions, 5 deletions
diff --git a/content_scripts/ui_component.coffee b/content_scripts/ui_component.coffee
index c0889e7f..f47719e5 100644
--- a/content_scripts/ui_component.coffee
+++ b/content_scripts/ui_component.coffee
@@ -14,6 +14,8 @@ class UIComponent
document.documentElement.appendChild @iframeElement
@hide()
+ @addEventListener "message", handleHideMessage
+
# Open a port and pass it to the iframe via window.postMessage.
openPort: ->
messageChannel = new MessageChannel()
@@ -30,6 +32,7 @@ class UIComponent
handleMessage: (event) ->
for listener in @messageEventListeners
retVal = listener.call this, event
+ retVal ?= true
return false unless retVal
true
@@ -60,7 +63,15 @@ class UIComponent
hide: ->
return unless @iframeElement?
@iframeElement.setAttribute "style", @hideStyle
+ window.focus()
@showing = false
+handleHideMessage = (event) ->
+ if event.data == "hide"
+ @hide()
+ false
+ else
+ true
+
root = exports ? window
root.UIComponent = UIComponent
diff --git a/pages/test_ui_component.coffee b/pages/test_ui_component.coffee
index 0156c8f2..b1d3625a 100644
--- a/pages/test_ui_component.coffee
+++ b/pages/test_ui_component.coffee
@@ -1,7 +1,2 @@
UIComponentServer.addEventListener "message", (event) ->
document.body.innerHTML = event.data
-
-document.addEventListener "DOMContentLoaded", ->
- document.addEventListener "keydown", (event) ->
- # Close on any key.
- console.log "How do I close myself?"
diff --git a/pages/test_ui_component.html b/pages/test_ui_component.html
index b8ad7475..06af346c 100644
--- a/pages/test_ui_component.html
+++ b/pages/test_ui_component.html
@@ -1,6 +1,7 @@
<html>
<head>
<title>Test</title>
+ <script type="text/javascript" src="../lib/keyboard_utils.js"></script>
<script type="text/javascript" src="ui_component_server.js"></script>
<script type="text/javascript" src="test_ui_component.js"></script>
<link rel="stylesheet" type="text/css" href="../content_scripts/vimium.css" />
diff --git a/pages/ui_component_server.coffee b/pages/ui_component_server.coffee
index 240233ed..3879cea0 100644
--- a/pages/ui_component_server.coffee
+++ b/pages/ui_component_server.coffee
@@ -7,11 +7,13 @@ window.addEventListener "message", (event) ->
chrome.storage.local.get "iframeMessageSecret", ({iframeMessageSecret: secret}) ->
return unless event.data == secret
UIComponentServer.portOpen event.ports[0]
+ window.addEventListener "keydown", (event) -> UIComponentServer.keydownListener event
window.removeEventListener "message", currentFunction # Stop listening for message events.
UIComponentServer =
ownerPagePort: null
messageEventListeners: []
+ exitOnEsc: true
portOpen: (@ownerPagePort) ->
@ownerPagePort.onmessage = (event) => @handleMessage event
@@ -37,5 +39,12 @@ UIComponentServer =
@messageEventListeners = @messageEventListeners.splice listenerIndex, 1
undefined
+ keydownListener: (event) ->
+ if @exitOnEsc and KeyboardUtils.isEscape event
+ @postMessage "hide"
+ false
+ else
+ true
+
root = exports ? window
root.UIComponentServer = UIComponentServer