diff options
| author | Stephen Blott | 2015-05-05 09:56:07 +0100 |
|---|---|---|
| committer | Stephen Blott | 2015-05-05 17:00:09 +0100 |
| commit | 80f9ea33c2daf6648aa45511ccd9bc3bc156cfad (patch) | |
| tree | 5c6e315b5243f8b84ad7ac34ab109aa95c7c81f9 | |
| parent | 14b8370dcd87a969ebd5a521877d4c52e18b4b14 (diff) | |
| download | vimium-80f9ea33c2daf6648aa45511ccd9bc3bc156cfad.tar.bz2 | |
Possible re-working of #1627.
| -rw-r--r-- | content_scripts/mode_insert.coffee | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/content_scripts/mode_insert.coffee b/content_scripts/mode_insert.coffee index 4d68b12d..4e03cdd5 100644 --- a/content_scripts/mode_insert.coffee +++ b/content_scripts/mode_insert.coffee @@ -19,7 +19,7 @@ class InsertMode extends Mode # the right thing to do for most common use cases. However, it could also cripple flash-based sites and # games. See discussion in #1211 and #1194. target.blur() - else if target.shadowRoot and @insertModeLock + else if target?.shadowRoot and @insertModeLock # An editable element in a shadow DOM is focused; blur it. @insertModeLock.blur() @exit event, event.srcElement @@ -61,17 +61,19 @@ class InsertMode extends Mode # event inside the shadow DOM. This fixes #853. shadowRoot = event.target.shadowRoot eventListeners = {} - for type in ["focus", "blur"] + for type in [ "focus", "blur" ] eventListeners[type] = do (type) -> - (event) -> - handlerStack.bubbleEvent type, event - if type == "blur" - # Unregister the event listeners. - for ltype, listener of eventListeners - shadowRoot.removeEventListener ltype, listener, true - + (event) -> handlerStack.bubbleEvent type, event shadowRoot.addEventListener type, eventListeners[type], true + handlerStack.push + _name: "shadow-DOM-input-mode" + blur: (event) -> + if event.target.shadowRoot == shadowRoot + handlerStack.remove() + for type, listener of eventListeners + shadowRoot.removeEventListener type, listener, true + # Only for tests. This gives us a hook to test the status of the permanently-installed instance. InsertMode.permanentInstance = @ if @permanent |
