diff options
| author | mrmr1993 | 2014-12-29 09:33:34 +0000 | 
|---|---|---|
| committer | mrmr1993 | 2014-12-29 09:33:34 +0000 | 
| commit | 5ea0f75a00b592956981bf8f6f7a0d2fa89620ae (patch) | |
| tree | fc2d8ba0ebdfcd50e6aa7392b3a716c4c0d5ea1a | |
| parent | 71af7f016f51e3c8b9c1fcfba46cb8289c91e030 (diff) | |
| download | vimium-5ea0f75a00b592956981bf8f6f7a0d2fa89620ae.tar.bz2 | |
Close UIComponent iframes when pressing esc by default
| -rw-r--r-- | content_scripts/ui_component.coffee | 11 | ||||
| -rw-r--r-- | pages/test_ui_component.coffee | 5 | ||||
| -rw-r--r-- | pages/test_ui_component.html | 1 | ||||
| -rw-r--r-- | pages/ui_component_server.coffee | 9 | 
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 | 
