From 0eb42fdf4b949593e83d1d59f23c9de467913bfa Mon Sep 17 00:00:00 2001 From: Manuel Reimer Date: Sat, 10 Oct 2015 23:33:08 +0200 Subject: [PATCH] Thunderbird: Fix closing extension tabs --- platform/firefox/vapi-background.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/platform/firefox/vapi-background.js b/platform/firefox/vapi-background.js index ccbbcd88e..cff89ba13 100644 --- a/platform/firefox/vapi-background.js +++ b/platform/firefox/vapi-background.js @@ -818,7 +818,7 @@ vAPI.tabs.replace = function(tabId, url) { /******************************************************************************/ vAPI.tabs._remove = (function() { - if ( vAPI.fennec ) { + if ( vAPI.fennec || vAPI.thunderbird ) { return function(tab, tabBrowser) { tabBrowser.closeTab(tab); }; @@ -972,6 +972,13 @@ var tabWatcher = (function() { if ( target.browser ) { // target is a tab target = target.browser; } + } else if ( vAPI.thunderbird ) { + if ( target.mode ) { // target is object with tab info + var browserFunc = target.mode.getBrowser || target.mode.tabType.getBrowser; + if (browserFunc) { + return browserFunc.call(target.mode.tabType, target); + } + } } else if ( target.linkedPanel ) { // target is a tab target = target.linkedBrowser; } @@ -1143,7 +1150,9 @@ var tabWatcher = (function() { // To keep in mind: not all windows are tab containers, // sometimes the window IS the tab. var tabs; - if ( tabBrowser.tabs ) { + if ( vAPI.thunderbird ) { + tabs = tabBrowser.tabInfo; + } else if ( tabBrowser.tabs ) { tabs = tabBrowser.tabs; } else if ( tabBrowser.localName === 'browser' ) { tabs = [tabBrowser]; @@ -1152,7 +1161,8 @@ var tabWatcher = (function() { } var browser, URI, tabId; - for ( var tab of tabs ) { + for ( var tabindex = tabs.length - 1; tabindex >= 0; tabindex-- ) { + var tab = tabs[tabindex]; browser = tabWatcher.browserFromTarget(tab); if ( browser === null ) { continue;