Skip to content

Commit

Permalink
chore: followup bug 1921857 and bug 1933813
Browse files Browse the repository at this point in the history
 - bug 1921857 - "close tabs to the left/right" changes for tab groups
 - bug 1933813 - "close other tabs" changes for tab groups
  • Loading branch information
onemen committed Dec 26, 2024
1 parent 1e751af commit 63afa46
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 14 deletions.
28 changes: 18 additions & 10 deletions addon/chrome/content/click/click.js
Original file line number Diff line number Diff line change
Expand Up @@ -636,23 +636,31 @@ var TabmixContext = {
let protectedTab = aTab.hasAttribute("protected");
let lockedTab = aTab.hasAttribute("locked");
let tabsCount = Tabmix.visibleTabs.tabs.length;
let unpinnedTabsCount = multiselectionContext ?
gBrowser.visibleTabs.filter(t => !t.multiselected && !t.pinned).length :
gBrowser.visibleTabs.filter(t => t != TabContextMenu.contextTab && !t.pinned)
.length;
let noTabsToClose = !unpinnedTabsCount || unpinnedTabsCount == 1 && !aTab.pinned;
let noTabsToEnd, noTabsToStart, unpinnedTabsToClose;
if (Tabmix.isVersion(1350)) {
noTabsToEnd = !gBrowser._getTabsToTheEndFrom(aTab).length;
noTabsToStart = !gBrowser._getTabsToTheStartFrom(aTab).length;
unpinnedTabsToClose = multiselectionContext ?
gBrowser.visibleTabs.filter(t => !t.multiselected && !t.pinned && !t.hidden).length :
gBrowser.visibleTabs.filter(t => t != TabContextMenu.contextTab && !t.pinned && !t.hidden).length;
} else {
noTabsToEnd = !gBrowser.getTabsToTheEndFrom(aTab).length;
noTabsToStart = !gBrowser.getTabsToTheStartFrom(aTab).length;
unpinnedTabsToClose = multiselectionContext ?
gBrowser.visibleTabs.filter(t => !t.multiselected && !t.pinned).length :
gBrowser.visibleTabs.filter(t => t != TabContextMenu.contextTab && !t.pinned).length;
}
let cIndex = Tabmix.visibleTabs.indexOf(aTab);

// count unprotected tabs for closing
const selectedTabsCount = this.updateSelectedTabsCount("context_closeTab", multiselectionContext);

var keepLastTab = tabsCount == 1 && Tabmix.prefs.getBoolPref("keepLastTab");
Tabmix.setItem("context_closeTab", "disabled", (multiselectionContext ? selectedTabsCount === 0 : protectedTab) || keepLastTab);
Tabmix.setItem("tm-closeAllTabs", "disabled", keepLastTab || !unpinnedTabsCount);
Tabmix.setItem("context_closeOtherTabs", "disabled", noTabsToClose);
Tabmix.setItem("context_closeTabsToTheEnd", "disabled", cIndex == tabsCount - 1 || noTabsToClose);
Tabmix.setItem("context_closeTabsToTheStart", "disabled",
cIndex === 0 || aTab.pinned || Tabmix.visibleTabs.previous(aTab)?.pinned);
Tabmix.setItem("tm-closeAllTabs", "disabled", keepLastTab || !unpinnedTabsToClose);
Tabmix.setItem("context_closeOtherTabs", "disabled", unpinnedTabsToClose < 1);
Tabmix.setItem("context_closeTabsToTheEnd", "disabled", noTabsToEnd);
Tabmix.setItem("context_closeTabsToTheStart", "disabled", noTabsToStart);

var closeTabsEmpty = TMP_ClosedTabs.count < 1;
Tabmix.setItem("context_undoCloseTab", "disabled", closeTabsEmpty);
Expand Down
10 changes: 6 additions & 4 deletions addon/chrome/content/minit/tablib.js
Original file line number Diff line number Diff line change
Expand Up @@ -1589,13 +1589,15 @@ Tabmix.tablib = {
Tabmix.tablib.showClosingTabsPrompt = Tabmix.tablib.showClosingTabsPrompt.bind(gBrowser);

// remove protected tabs from tabs to remove
Tabmix.changeCode(gBrowser, "gBrowser.removeTabsToTheStartFrom")._replace(
'let tabs = this.getTabsToTheStartFrom(aTab)',
const prefix = Tabmix.isVersion(1350) ? "_" : "";

Tabmix.changeCode(gBrowser, `gBrowser.${prefix}getTabsToTheStartFrom`)._replace(
/return tabsToStart/g,
'$&.filter(tab => !tab._isProtected)'
).toCode();

Tabmix.changeCode(gBrowser, "gBrowser.removeTabsToTheEndFrom")._replace(
'let tabs = this.getTabsToTheEndFrom(aTab)',
Tabmix.changeCode(gBrowser, `gBrowser.${prefix}getTabsToTheEndFrom`)._replace(
/return tabsToEnd/g,
'$&.filter(tab => !tab._isProtected)'
).toCode();

Expand Down
5 changes: 5 additions & 0 deletions types/general.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,11 @@ declare namespace MockedGeckoTypes {
getBrowserForTab: (tab: BrowserTab) => ChromeBrowser;
getNotificationBox: (browser?: ChromeBrowser) => NotificationBox;
getTabForBrowser: (browser: ChromeBrowser) => BrowserTab;
_getTabsToTheEndFrom: (tab: BrowserTab) => BrowserTab[];
_getTabsToTheStartFrom: (tab: BrowserTab) => BrowserTab[];
/** @deprecated replaced with _getTabsToTheEndFrom in firefox 135 */
getTabsToTheEndFrom: (tab: BrowserTab) => BrowserTab[];
/** @deprecated replaced with _getTabsToTheStartFrom in firefox 135 */
getTabsToTheStartFrom: (tab: BrowserTab) => BrowserTab[];
getIcon: (tab: BrowserTab) => string;
hideTab: (aTab: BrowserTab, aSource?: string) => void;
Expand Down

0 comments on commit 63afa46

Please sign in to comment.