aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhil Crosby2009-12-31 02:29:58 -0500
committerPhil Crosby2009-12-31 02:29:58 -0500
commit198ef63cbfdcab7f8fef72bf6144964ed5b76cf6 (patch)
treefedf5897739c6f9332622f4300d7b73d4d897007
parentcccd76bc46633a81dcdbe80b08b3f70f7737c2b6 (diff)
downloadvimium-198ef63cbfdcab7f8fef72bf6144964ed5b76cf6.tar.bz2
Fix a race condition where domready would be fired prior to 'initializeWhenEnabled', breaking our initial input-is-focused detection
-rw-r--r--vimiumFrontend.js24
1 files changed, 16 insertions, 8 deletions
diff --git a/vimiumFrontend.js b/vimiumFrontend.js
index 58113e1a..a1ad7c9c 100644
--- a/vimiumFrontend.js
+++ b/vimiumFrontend.js
@@ -115,25 +115,33 @@ function initializeWhenEnabled() {
document.addEventListener("keydown", onKeydown);
document.addEventListener("focus", onFocusCapturePhase, true);
document.addEventListener("blur", onBlurCapturePhase, true);
+ enterInsertModeIfElementIsFocused();
}
/*
* Initialization tasks that must wait for the document to be ready.
*/
function initializeOnDomReady() {
- if (isEnabledForUrl) {
- // Enter insert mode automatically if there's already a text box focused.
- var focusNode = window.getSelection().focusNode;
- var focusOffset = window.getSelection().focusOffset;
- if (focusNode && focusOffset && focusNode.children.length > focusOffset &&
- isInputOrText(focusNode.children[focusOffset]))
- enterInsertMode();
- }
+ if (isEnabledForUrl)
+ enterInsertModeIfElementIsFocused();
// Tell the background page we're in the dom ready state.
chrome.extension.connect({ name: "domReady" });
};
/*
+ * Checks the currently focused element of the document and will enter insert mode if that element is focusable.
+ */
+function enterInsertModeIfElementIsFocused() {
+ // Enter insert mode automatically if there's already a text box focused.
+ // TODO(philc): Consider using document.activeElement here instead.
+ var focusNode = window.getSelection().focusNode;
+ var focusOffset = window.getSelection().focusOffset;
+ if (focusNode && focusOffset && focusNode.children.length > focusOffset &&
+ isInputOrText(focusNode.children[focusOffset]))
+ enterInsertMode();
+}
+
+/*
* Asks the background page to persist the zoom level for the given domain to localStorage.
*/
function saveZoomLevel(domain, zoomLevel) {