diff options
| -rw-r--r-- | background_scripts/main.coffee | 32 | 
1 files changed, 14 insertions, 18 deletions
| diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee index 0c4e0281..0c969aed 100644 --- a/background_scripts/main.coffee +++ b/background_scripts/main.coffee @@ -8,7 +8,7 @@ keyQueue = "" # Queue of keys typed  validFirstKeys = {}  singleKeyCommands = []  focusedFrame = null -framesForTab = {} +frameIdsForTab = {}  # Keys are either literal characters, or "named" - for example <a-b> (alt+b), <left> (left arrow) or <f12>  # This regular expression captures two groups: the first is a named key, the second is the remainder of @@ -284,8 +284,8 @@ BackgroundCommands =    moveTabRight: (count) -> moveTab(null, count)    nextFrame: (count) ->      chrome.tabs.getSelected(null, (tab) -> -      frames = framesForTab[tab.id] = framesForTab[tab.id].rotate(count) -      chrome.tabs.sendMessage(tab.id, { name: "focusFrame", frameId: frames[0].id, highlight: true })) +      frames = frameIdsForTab[tab.id] = frameIdsForTab[tab.id].rotate(count) +      chrome.tabs.sendMessage(tab.id, { name: "focusFrame", frameId: frames[0], highlight: true }))    closeTabsOnLeft: -> removeTabsRelative "before"    closeTabsOnRight: -> removeTabsRelative "after" @@ -341,7 +341,7 @@ updateOpenTabs = (tab) ->      scrollY: null      deletor: null    # Frames are recreated on refresh -  delete framesForTab[tab.id] +  delete frameIdsForTab[tab.id]  setBrowserActionIcon = (tabId,path) ->    chrome.browserAction.setIcon({ tabId: tabId, path: path }) @@ -423,7 +423,7 @@ chrome.tabs.onRemoved.addListener (tabId) ->    # scroll position)    tabInfoMap.deletor = -> delete tabInfoMap[tabId]    setTimeout tabInfoMap.deletor, 1000 -  delete framesForTab[tabId] +  delete frameIdsForTab[tabId]  chrome.tabs.onActiveChanged.addListener (tabId, selectInfo) -> updateActiveState(tabId) @@ -597,31 +597,27 @@ openOptionsPageInNewTab = ->      chrome.tabs.create({ url: chrome.runtime.getURL("pages/options.html"), index: tab.index + 1 }))  registerFrame = (request, sender) -> -  frames = framesForTab[sender.tab.id] ?= [] +  frames = frameIdsForTab[sender.tab.id] ?= []    if request.is_top -    frames.unshift id: request.frameId +    frames.unshift request.frameId    else -    frames.push id: request.frameId +    frames.push request.frameId  unregisterFrame = (request, sender) -> -  frames = framesForTab[sender.tab.id] +  frames = frameIdsForTab[sender.tab.id]    return unless frames?    if request.is_top # The whole tab is closing, so we can drop the frames list.      updateOpenTabs sender.tab    else -    index = getFrameIndex frames, request.frameId +    index = frames.indexOf request.frameId +    return if index == -1      frames.splice index, 1 -    nextFrame 0 +    nextFrame 0 if index == 0  handleFrameFocused = (request, sender) -> -  index = getFrameIndex framesForTab[sender.tab.id], request.frameId -  framesForTab[sender.tab.id] = frames.rotate index - -getFrameIndex = (frames, frameId) -> -  for frameDetails, index in frames -    return index if frameDetails.id == frameId -  frames.length + 1 +  index = frameIdsForTab[sender.tab.id].indexOf request.frameId +  frameIdsForTab[sender.tab.id] = frames.rotate index  # Port handler mapping  portHandlers = | 
