Commit 433e7bf9 authored by Jeremy Swinarton's avatar Jeremy Swinarton Committed by jswinarton@mozilla.com
Browse files

Bug 1921835: Move tab to start/end enabled when collapsed group on tab strip...

Bug 1921835: Move tab to start/end enabled when collapsed group on tab strip edge r=dao,tabbrowser-reviewers

Differential Revision: https://phabricator.services.mozilla.com/D249846
parent 5c7c70ed
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -9009,9 +9009,14 @@ var TabContextMenu = {
    let contextMoveTabOptions = document.getElementById(
      "context_moveTabOptions"
    );
    // gBrowser.visibleTabs excludes tabs in collapsed groups,
    // which we want to include in calculations for Move Tab items
    let visibleOrCollapsedTabs = gBrowser.tabs.filter(
      t => t.isOpen && !t.hidden
    );
    let allTabsSelected = visibleOrCollapsedTabs.every(t => t.multiselected);
    contextMoveTabOptions.setAttribute("data-l10n-args", tabCountInfo);
    contextMoveTabOptions.disabled =
      this.contextTab.hidden || gBrowser.allTabsSelected();
    contextMoveTabOptions.disabled = this.contextTab.hidden || allTabsSelected;
    let selectedTabs = gBrowser.selectedTabs;
    let contextMoveTabToEnd = document.getElementById("context_moveToEnd");
    let allSelectedTabsAdjacent = selectedTabs.every(
@@ -9021,8 +9026,8 @@ var TabContextMenu = {
          : true;
      }
    );
    let visibleTabs = gBrowser.visibleTabs;
    let lastVisibleTab = visibleTabs.at(-1);

    let lastVisibleTab = visibleOrCollapsedTabs.at(-1);
    let lastTabToMove = this.contextTabs.at(-1);

    let isLastPinnedTab = false;
@@ -9037,8 +9042,8 @@ var TabContextMenu = {
    let contextMoveTabToStart = document.getElementById("context_moveToStart");
    let isFirstTab =
      !this.contextTabs[0].group &&
      (this.contextTabs[0] == visibleTabs[0] ||
        this.contextTabs[0] == visibleTabs[gBrowser.pinnedTabCount]);
      (this.contextTabs[0] == visibleOrCollapsedTabs[0] ||
        this.contextTabs[0] == visibleOrCollapsedTabs[gBrowser.pinnedTabCount]);
    contextMoveTabToStart.disabled = isFirstTab && allSelectedTabsAdjacent;

    document.getElementById("context_openTabInWindow").disabled =
+37 −0
Original line number Diff line number Diff line
@@ -190,3 +190,40 @@ add_task(async function testMoveEndDisabledFromOnlyPinnedTab() {

  gBrowser.unpinTab(tab);
});

add_task(async function testMoveStartEnabledWithCollapsedGroupAtStart() {
  let tab = gBrowser.selectedTab;

  let menuItemMoveStartTab = document.getElementById("context_moveToStart");

  let tab2 = await addTab();
  let group = gBrowser.addTabGroup([tab2]);
  group.collapsed = true;

  gBrowser.moveTabToEnd(tab);
  is(group.tabs[0]._tPos, 0, "Collapsed group is first element on strip")
  is(tab._tPos, 1, "Selected tab is second element on strip")

  updateTabContextMenu(tab);
  is(menuItemMoveStartTab.disabled, false, "Move Tab to Start is enabled");

  BrowserTestUtils.removeTab(tab2);
});

add_task(async function testMoveStartEnabledWithCollapsedGroupAtEnd() {
  let tab = gBrowser.selectedTab;

  let menuItemMoveEndTab = document.getElementById("context_moveToEnd");

  let tab2 = await addTab();
  let group = gBrowser.addTabGroup([tab2]);
  group.collapsed = true;

  is(tab._tPos, 0, "Selected tab is first element on strip")
  is(group.tabs[0]._tPos, 1, "Collapsed group is second element on strip")

  updateTabContextMenu(tab);
  is(menuItemMoveEndTab.disabled, false, "Move Tab to End is enabled");

  BrowserTestUtils.removeTab(tab2);
});