diff options
Diffstat (limited to 'background_scripts')
| -rw-r--r-- | background_scripts/main.coffee | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee index b40907fb..4dd12420 100644 --- a/background_scripts/main.coffee +++ b/background_scripts/main.coffee @@ -285,11 +285,11 @@ BackgroundCommands = nextFrame: (count) -> chrome.tabs.getSelected(null, (tab) -> frames = framesForTab[tab.id].frames - currIndex = getCurrFrameIndex(frames) + currIndex = frames.frameIndex or getCurrFrameIndex(frames) # TODO: Skip the "top" frame (which doesn't actually have a <frame> tag), # since it exists only to contain the other frames. - newIndex = (currIndex + count) % frames.length + frames.frameIndex = newIndex = (currIndex + count) % frames.length chrome.tabs.sendMessage(tab.id, { name: "focusFrame", frameId: frames[newIndex].id, highlight: true })) @@ -394,7 +394,7 @@ chrome.tabs.onUpdated.addListener (tabId, changeInfo, tab) -> code: Settings.get("userDefinedLinkHintCss") runAt: "document_start" chrome.tabs.insertCSS tabId, cssConf, -> chrome.runtime.lastError - updateOpenTabs(tab) + updateOpenTabs(tab) if "url" in changeInfo updateActiveState(tabId) chrome.tabs.onAttached.addListener (tabId, attachedInfo) -> @@ -608,11 +608,30 @@ registerFrame = (request, sender) -> if (request.is_top) focusedFrame = request.frameId - framesForTab[sender.tab.id].total = request.total + framesForTab[sender.tab.id].frames.frameIndex = getCurrFrameIndex(framesForTab[sender.tab.id]) framesForTab[sender.tab.id].frames.push({ id: request.frameId }) -handleFrameFocused = (request, sender) -> focusedFrame = request.frameId +unregisterFrame = (request, sender) -> + return unless framesForTab[sender.tab.id] + + if request.is_top # The whole tab is closing, so we can drop the frames list. + updateOpenTabs(sender.tab) + return + + frames = framesForTab[sender.tab.id].frames + + for index, tabDetails of frames + if (tabDetails.id == request.frameId) + frames.splice(index, 1) + + frames.frameIndex-- if frames.frameIndex >= index # Adjust index if it is shifted. + nextFrame(0) if frames.frameIndex == index # Focus another frame if the closed one was focused. + return + +handleFrameFocused = (request, sender) -> + focusedFrame = request.frameId + framesForTab[sender.tab.id].frames.frameIndex = getCurrFrameIndex(framesForTab[sender.tab.id]) getCurrFrameIndex = (frames) -> for i in [0...frames.length] @@ -633,6 +652,7 @@ sendRequestHandlers = openUrlInCurrentTab: openUrlInCurrentTab, openOptionsPageInNewTab: openOptionsPageInNewTab, registerFrame: registerFrame, + unregisterFrame: unregisterFrame, frameFocused: handleFrameFocused, upgradeNotificationClosed: upgradeNotificationClosed, updateScrollPosition: handleUpdateScrollPosition, @@ -640,7 +660,7 @@ sendRequestHandlers = isEnabledForUrl: isEnabledForUrl, saveHelpDialogSettings: saveHelpDialogSettings, selectSpecificTab: selectSpecificTab, - refreshCompleter: refreshCompleter + refreshCompleter: refreshCompleter, createMark: Marks.create.bind(Marks), gotoMark: Marks.goto.bind(Marks) |
