diff options
| author | Stephen Blott | 2016-04-28 13:51:44 +0100 | 
|---|---|---|
| committer | Stephen Blott | 2016-04-28 13:55:08 +0100 | 
| commit | f83e99fd42a4cf412c79fb15c58f59c105c25723 (patch) | |
| tree | 673e75c9d372fd70ae0742a05c76c581f0faff32 /content_scripts/ui_component.coffee | |
| parent | ac340e2346247b5cd1878e1a814d4c151df3e892 (diff) | |
| download | vimium-f83e99fd42a4cf412c79fb15c58f59c105c25723.tar.bz2 | |
Fix UI-component initialization issues.
This fixes some UI component initialization issues.  It's a long
story...
The problem.
- Go to this page: http://www.thejournal.ie/seanad-election-results-2016-2737768-Apr2016/
- Click one of the links from the "Most Popular" box on the right.
- Navigate back (`H`) and, as the original page is loading, activate the Vomnibar.
In 1.54 this renders Vimium unusable.  In `master` this renders the
Vomnibar unsable, but the rest of Vimium usable.
It seems the source of the issue is that we're initializing UI
components too soon.  We need to wait until the `readyState` is
"complete".
With this PR:
- The Vomnibar is initialised when the `readyState` is "complete" (in
  the top frame only, and only if Vimium is enabled).  Requests arriving
  prior to then are silently discarded.
- The HUD is also initialized only when the `readyState` is "complete";
  however, requests arriving before then are queued.  So, if the user
  immediately enters insert mode, then the "Insert mode" indicator will
  eventually be displayed.
- The help dialog silently discards requests until the `readyState` is
  "complete.
I'm posting this as a PR because:
1. It needs some visibility.
2. With this, if the `readyState` *never* reaches "complete", then the
   Vomnibar would be unusable.  And that's pretty serious.
Diffstat (limited to 'content_scripts/ui_component.coffee')
| -rw-r--r-- | content_scripts/ui_component.coffee | 7 | 
1 files changed, 3 insertions, 4 deletions
| diff --git a/content_scripts/ui_component.coffee b/content_scripts/ui_component.coffee index 59e4fe41..203f0c8c 100644 --- a/content_scripts/ui_component.coffee +++ b/content_scripts/ui_component.coffee @@ -68,10 +68,9 @@ class UIComponent    # Post a message (if provided), then call continuation (if provided).  We wait for documentReady() to ensure    # that the @iframePort set (so that we can use @iframePort.use()).    postMessage: (message = null, continuation = null) -> -    DomUtils.documentReady => -      @iframePort.use (port) -> -        port.postMessage message if message? -        continuation?() +    @iframePort?.use (port) -> +      port.postMessage message if message? +      continuation?()    activate: (@options = null) ->      @postMessage @options, => | 
