diff options
| -rw-r--r-- | background_page.html | 19 | ||||
| -rw-r--r-- | vimiumFrontend.js | 11 |
2 files changed, 16 insertions, 14 deletions
diff --git a/background_page.html b/background_page.html index b862a881..48084f77 100644 --- a/background_page.html +++ b/background_page.html @@ -604,15 +604,20 @@ } function registerFrame(request, sender) { - if (request.top) - framesForTab[sender.tab.id] = { total: request.total, frames: [] }; - else { - framesForTab[sender.tab.id].frames.push({ id: request.frameId, area: request.area }); + if (!framesForTab[sender.tab.id]) + framesForTab[sender.tab.id] = { frames: [] }; - // We've seen all the frames. Time to focus the largest one. - if (framesForTab[sender.tab.id].frames.length == framesForTab[sender.tab.id].total) - focusLargestFrame(sender.tab.id); + if (request.top) { + focusedFrame = request.frameId; + framesForTab[sender.tab.id].total = request.total; } + + framesForTab[sender.tab.id].frames.push({ id: request.frameId, area: request.area }); + + // We've seen all the frames. Time to focus the largest one. + // NOTE: Disabled because it's buggy with iframes. + // if (framesForTab[sender.tab.id].frames.length >= framesForTab[sender.tab.id].total) + // focusLargestFrame(sender.tab.id); } function focusLargestFrame(tabId) { diff --git a/vimiumFrontend.js b/vimiumFrontend.js index 3b73144a..d7c429cb 100644 --- a/vimiumFrontend.js +++ b/vimiumFrontend.js @@ -170,10 +170,7 @@ function focusThisFrame(shouldHighlight) { * Initialization tasks that must wait for the document to be ready. */ function initializeOnDomReady() { - if (window.top == window.self) - chrome.extension.sendRequest({ handler: "registerFrame", frameId: frameId, top: true, total: frames.length }); - else - registerFrameIfSizeAvailable(); + registerFrameIfSizeAvailable(window.top == window.self); if (isEnabledForUrl) enterInsertModeIfElementIsFocused(); @@ -183,11 +180,11 @@ function initializeOnDomReady() { }; // This is a little hacky but sometimes the size wasn't available on domReady? -function registerFrameIfSizeAvailable () { +function registerFrameIfSizeAvailable (top) { if (innerWidth != undefined && innerWidth != 0 && innerHeight != undefined && innerHeight != 0) - chrome.extension.sendRequest({ handler: "registerFrame", frameId: frameId, area: innerWidth * innerHeight }); + chrome.extension.sendRequest({ handler: "registerFrame", frameId: frameId, area: innerWidth * innerHeight, top: top, total: frames.length + 1 }); else - setTimeout(registerFrameIfSizeAvailable, 100); + setTimeout(function () { registerFrameIfSizeAvailable(top); }, 100); } /* |
