From d7a2b43b07b0e039fecbebdd396e9f738ba82c69 Mon Sep 17 00:00:00 2001 From: Eric Lathrop Date: Fri, 22 Dec 2017 11:45:52 -0500 Subject: [PATCH] Fix #1053. Create the new window with the default tab rather than an existing tab, then pin the default tab. This allows any pinned tabs to be moved to the new window because they're not allowed to be moved after a un-pinned tab. The default tab is automatically closed later in `moveTabsToWindow` because it's not a part of the container. --- src/js/background/backgroundLogic.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/js/background/backgroundLogic.js b/src/js/background/backgroundLogic.js index 36bcb47..04906d8 100644 --- a/src/js/background/backgroundLogic.js +++ b/src/js/background/backgroundLogic.js @@ -131,9 +131,13 @@ const backgroundLogic = { let newWindowObj; let hiddenDefaultTabToClose; if (list.length) { - newWindowObj = await browser.windows.create({ - tabId: list.shift().id - }); + newWindowObj = await browser.windows.create(); + + // Pin the default tab in the new window so existing pinned tabs can be moved after it. + // From the docs (https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs/move): + // Note that you can't move pinned tabs to a position after any unpinned tabs in a window, or move any unpinned tabs to a position before any pinned tabs. + await browser.tabs.update(newWindowObj.tabs[0].id, { pinned: true }); + browser.tabs.move(list.map((tab) => tab.id), { windowId: newWindowObj.id, index: -1