mirror of
https://github.com/zen-browser/desktop.git
synced 2025-09-05 19:08:18 +00:00
chore: Updated to firefox 142.0, p=#9870
* chore: Updateed to firefox 142.0, b=no-bug, c=l10n, folders * chore: Finish updating to firefox, b=no-bug, c=tabs * chore: Fixed mods builds, b=no-bug, c=mods * feat: Small changes to tabs layout, b=no-bug, c=tabs, compact-mode, folders, workspaces * test: Fixed tests, b=no-bug, c=scripts, tests, folders * test: Fixed tests, b=no-bug, c=tabs, tests, welcome
This commit is contained in:
@@ -30,7 +30,7 @@ Zen is a firefox-based browser with the aim of pushing your productivity to a ne
|
||||
### Firefox Versions
|
||||
|
||||
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `141.0.3`! 🚀
|
||||
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 141.0.3`!
|
||||
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 142.0`!
|
||||
|
||||
### Contributing
|
||||
|
||||
|
@@ -1 +1 @@
|
||||
4a784a2037bf44d4fcacf70fd69c86ff30825ec1
|
||||
aeeb12ebf5e8312e56bf0126778460f7a5fa607a
|
@@ -3,6 +3,11 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
IGNORE_FILES=(
|
||||
"shared.nsh"
|
||||
"ignorePrefs.json"
|
||||
)
|
||||
|
||||
# Recursively find all .patch files in the current directory and its subdirectories
|
||||
find src -type f -name "*.patch" | while read -r patch_file; do
|
||||
# Replace all - with . and remove the .patch extension
|
||||
@@ -17,8 +22,10 @@ find src -type f -name "*.patch" | while read -r patch_file; do
|
||||
new_file="${new_file/-ftl/.ftl}"
|
||||
fi
|
||||
|
||||
# Create the new file with the same content as the original
|
||||
npm run export ${new_file} &
|
||||
new_file_base=$(basename "$new_file")
|
||||
if [[ ! " ${IGNORE_FILES[@]} " =~ " ${new_file_base} " ]]; then
|
||||
npm run export ${new_file}
|
||||
fi
|
||||
done
|
||||
|
||||
for job in $(jobs -p); do
|
||||
|
@@ -4,10 +4,33 @@
|
||||
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
IGNORE_PREFS_FILE_IN = os.path.join(
|
||||
'src', 'zen', 'tests', 'ignorePrefs.json'
|
||||
)
|
||||
IGNORE_PREFS_FILE_OUT = os.path.join(
|
||||
'engine', 'testing', 'mochitest', 'ignorePrefs.json'
|
||||
)
|
||||
|
||||
|
||||
def copy_ignore_prefs():
|
||||
print("Copying ignorePrefs.json from src/zen/tests to engine/testing/mochitest...")
|
||||
# if there are prefs that dont exist on output file, copy them from input file
|
||||
all_prefs = []
|
||||
with open(IGNORE_PREFS_FILE_OUT, 'r') as f:
|
||||
all_prefs = json.load(f)
|
||||
with open(IGNORE_PREFS_FILE_IN, 'r') as f_in:
|
||||
new_prefs = json.load(f_in)
|
||||
all_prefs.extend(p for p in new_prefs if p not in all_prefs)
|
||||
with open(IGNORE_PREFS_FILE_OUT, 'w') as f_out:
|
||||
json.dump(all_prefs, f_out, indent=2)
|
||||
|
||||
|
||||
def main():
|
||||
copy_ignore_prefs()
|
||||
|
||||
project_root = Path(__file__).resolve().parent.parent
|
||||
package_json = project_root / 'package.json'
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/Cargo.lock b/Cargo.lock
|
||||
index f223ba9af3edd60a42730a606aca2c48bbdddc0c..501cf2de684532203bfb2e96f8add919f3d6e739 100644
|
||||
index fe4eff865884fb79983f636861897648c36491b5..a9516246ffacfd50b7e4198967bebb71b2c73eca 100644
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -4049,8 +4049,6 @@ dependencies = [
|
||||
@@ -4067,8 +4067,6 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "mime_guess"
|
||||
version = "2.0.4"
|
||||
|
@@ -1,12 +1,11 @@
|
||||
diff --git a/Cargo.toml b/Cargo.toml
|
||||
index d402d783e2bbc30b87b2c59cf02e38b74d0484c1..b718ee7ed0519cac20d2828fee0350b44fc3f45a 100644
|
||||
index c41cc4f4e68e5b30e1a290e07b2c5061db4400cc..7fa5402b32116922766ee1463b441d3fc86c1eff 100644
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -227,6 +227,9 @@ rure = { path = "third_party/rust/rure" }
|
||||
# Patch `plist` to work with `indexmap` 2.*
|
||||
plist = { path = "third_party/rust/plist" }
|
||||
@@ -218,6 +218,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" }
|
||||
# Workaround for https://github.com/rust-lang/cargo/issues/11232
|
||||
rure = { path = "third_party/rust/rure" }
|
||||
|
||||
+# Patch mime_guess to add missing mime types
|
||||
+mime_guess = { path = "third_party/rust/mime_guess" }
|
||||
+
|
||||
# Patch `unicode-width` 0.1.* to 0.2.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/actors/WebRTCParent.sys.mjs b/browser/actors/WebRTCParent.sys.mjs
|
||||
index 4ed2dd19207fc38b9e5cc22ea2947aba94b2f5ad..ffc88d62dc46683399c68cdfd35f1b1efde70902 100644
|
||||
index 49ba7724801e699c60fac72d67b3b2d11b6c8c93..5a9f209b3e6b625c6346083ab7eace552a81a3b4 100644
|
||||
--- a/browser/actors/WebRTCParent.sys.mjs
|
||||
+++ b/browser/actors/WebRTCParent.sys.mjs
|
||||
@@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
|
||||
index 8e839c497bba9de04948ad8759679b6a6f61a65f..d79bd14443d94b91309f0add133e35ab87d7fbf3 100644
|
||||
index 05f6aec3dac31231e15cb316f6e06d66ee87bea9..3bbbe8553777056798ea9ddce1744a8e48848a37 100644
|
||||
--- a/browser/base/content/browser.js
|
||||
+++ b/browser/base/content/browser.js
|
||||
@@ -29,6 +29,7 @@ ChromeUtils.defineESModuleGetters(this, {
|
||||
@@ -10,7 +10,7 @@ index 8e839c497bba9de04948ad8759679b6a6f61a65f..d79bd14443d94b91309f0add133e35ab
|
||||
DevToolsSocketStatus:
|
||||
"resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs",
|
||||
DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs",
|
||||
@@ -2282,6 +2283,8 @@ var XULBrowserWindow = {
|
||||
@@ -2287,6 +2288,8 @@ var XULBrowserWindow = {
|
||||
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
|
||||
TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
|
||||
|
||||
@@ -19,7 +19,7 @@ index 8e839c497bba9de04948ad8759679b6a6f61a65f..d79bd14443d94b91309f0add133e35ab
|
||||
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
|
||||
|
||||
if (!gMultiProcessBrowser) {
|
||||
@@ -4617,7 +4620,7 @@ function switchToTabHavingURI(
|
||||
@@ -4630,7 +4633,7 @@ function switchToTabHavingURI(
|
||||
ignoreQueryString || replaceQueryString,
|
||||
ignoreFragmentWhenComparing
|
||||
);
|
||||
@@ -28,7 +28,7 @@ index 8e839c497bba9de04948ad8759679b6a6f61a65f..d79bd14443d94b91309f0add133e35ab
|
||||
for (let i = 0; i < browsers.length; i++) {
|
||||
let browser = browsers[i];
|
||||
let browserCompare = cleanURL(
|
||||
@@ -4660,7 +4663,7 @@ function switchToTabHavingURI(
|
||||
@@ -4673,7 +4676,7 @@ function switchToTabHavingURI(
|
||||
}
|
||||
|
||||
if (!doAdopt) {
|
||||
@@ -37,7 +37,7 @@ index 8e839c497bba9de04948ad8759679b6a6f61a65f..d79bd14443d94b91309f0add133e35ab
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -5476,6 +5479,9 @@ var ConfirmationHint = {
|
||||
@@ -5489,6 +5492,9 @@ var ConfirmationHint = {
|
||||
MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl");
|
||||
MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl");
|
||||
document.l10n.setAttributes(this._message, messageId, options.l10nArgs);
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs
|
||||
index e5ae99edff6cef4964ff15a7d32b0f9c80625425..6b7b6e75c76b25319334113bf2f17817f67e1073 100644
|
||||
index b12427b3c23447ab26499120f8395c716dae9e82..934f5c1f1b38d035cd7d3a5253a8d3cecad385f8 100644
|
||||
--- a/browser/base/content/nsContextMenu.sys.mjs
|
||||
+++ b/browser/base/content/nsContextMenu.sys.mjs
|
||||
@@ -1050,6 +1050,8 @@ export class nsContextMenu {
|
||||
@@ -1054,6 +1054,8 @@ export class nsContextMenu {
|
||||
!this.isSecureAboutPage()
|
||||
);
|
||||
|
||||
|
@@ -5,7 +5,10 @@
|
||||
<panel id="zen-folder-tabs-popup" type="arrow" orient="vertical">
|
||||
<hbox class="tabs-list-header">
|
||||
<image class="zen-folder-tabs-list-search-icon" src="chrome://global/skin/icons/search-glass.svg"/>
|
||||
<html:input id="zen-folder-tabs-list-search" data-l10n-id="zen-folders-search-placeholder" type="search"/>
|
||||
<html:input id="zen-folder-tabs-list-search"
|
||||
data-l10n-id="zen-folders-search-placeholder"
|
||||
data-l10n-args="{"folder-name":""}"
|
||||
type="search" />
|
||||
</hbox>
|
||||
<scrollbox class="zen-folder-tabs-list-scrollbox" flex="1">
|
||||
<vbox id="zen-folder-tabs-list"></vbox>
|
||||
|
@@ -45,4 +45,3 @@
|
||||
<menuseparator />
|
||||
<menuitem id="context_zenFolderDelete" data-l10n-id="zen-folders-panel-delete-folder"/>
|
||||
</menupopup>
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/jar.mn b/browser/base/jar.mn
|
||||
index ad10fe2c55c422090ebfc3989ca6858c1d958a10..0ff76c3bd768b2b337683a35f8dbd197f421905c 100644
|
||||
index f5a94b47c95304399bce8159dd9fb5d2911ea60a..f63cb861e8807294d597a341ddb408f236ee2df2 100644
|
||||
--- a/browser/base/jar.mn
|
||||
+++ b/browser/base/jar.mn
|
||||
@@ -105,3 +105,5 @@ browser.jar:
|
||||
@@ -106,3 +106,5 @@ browser.jar:
|
||||
|
||||
# L10n resources and overrides.
|
||||
% override chrome://global/locale/appstrings.properties chrome://browser/locale/appstrings.properties
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs
|
||||
index 415d1d52507e0710a3c1daa5864618527b162100..f420fcb8db2ed6f33eb3b38ec9bd213809aa74c3 100644
|
||||
index 81f72563b93b9ce77191ad4cf200489222e0122e..40bc484301b3d66542c4171921f527c2ac6ed047 100644
|
||||
--- a/browser/components/BrowserContentHandler.sys.mjs
|
||||
+++ b/browser/components/BrowserContentHandler.sys.mjs
|
||||
@@ -1276,6 +1276,7 @@ function maybeRecordToHandleTelemetry(uri, isLaunch) {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs
|
||||
index 05a5063427e4038b3d57f6f5bae31b60428c7880..a01e25b52ffc3a68dddb513cb085b7df726d15b0 100644
|
||||
index f3253d2565cf735bdf33792697f91db9ca9ba5e9..5a6a62e3de3d510a3ae514773e6f8886ef8f9a09 100644
|
||||
--- a/browser/components/BrowserGlue.sys.mjs
|
||||
+++ b/browser/components/BrowserGlue.sys.mjs
|
||||
@@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
|
||||
@@ -10,7 +10,7 @@ index 05a5063427e4038b3d57f6f5bae31b60428c7880..a01e25b52ffc3a68dddb513cb085b7df
|
||||
AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs",
|
||||
AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs",
|
||||
ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs",
|
||||
@@ -1496,7 +1497,7 @@ BrowserGlue.prototype = {
|
||||
@@ -1490,7 +1491,7 @@ BrowserGlue.prototype = {
|
||||
windowcount++;
|
||||
let tabbrowser = win.gBrowser;
|
||||
if (tabbrowser) {
|
||||
@@ -19,7 +19,7 @@ index 05a5063427e4038b3d57f6f5bae31b60428c7880..a01e25b52ffc3a68dddb513cb085b7df
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1659,6 +1660,8 @@ BrowserGlue.prototype = {
|
||||
@@ -1653,6 +1654,8 @@ BrowserGlue.prototype = {
|
||||
} else if (profileDataVersion < APP_DATA_VERSION) {
|
||||
lazy.ProfileDataUpgrader.upgrade(profileDataVersion, APP_DATA_VERSION);
|
||||
}
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/search/SearchOneOffs.sys.mjs b/browser/components/search/SearchOneOffs.sys.mjs
|
||||
index 23808139bc885c5e6457b3e4be0b1727c0f3bbf9..472fdbe863db5725d01af903b69a479b9edc3244 100644
|
||||
index 3930862215a667e223f1bf6959dcf1c08421b37d..68d767b6d8490a374973eb86a032a6386879fd93 100644
|
||||
--- a/browser/components/search/SearchOneOffs.sys.mjs
|
||||
+++ b/browser/components/search/SearchOneOffs.sys.mjs
|
||||
@@ -455,7 +455,7 @@ export class SearchOneOffs {
|
||||
@@ -466,7 +466,7 @@ export class SearchOneOffs {
|
||||
// For the search-bar, always show the one-off buttons where there is an
|
||||
// option to add an engine.
|
||||
let addEngineNeeded = isSearchBar && addEngines.length;
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/search/SearchUIUtils.sys.mjs b/browser/components/search/SearchUIUtils.sys.mjs
|
||||
index 3666beb83bc50e80fa8848f18aaeb6545d5ff8a7..0566fc87e90531456e78bc6c33a0696f0aff6cb3 100644
|
||||
index dfd18da85323751c4be7963cb5ab2357de488d83..e228bf594a0a736396cabd247bac4033091afccc 100644
|
||||
--- a/browser/components/search/SearchUIUtils.sys.mjs
|
||||
+++ b/browser/components/search/SearchUIUtils.sys.mjs
|
||||
@@ -412,7 +412,7 @@ export var SearchUIUtils = {
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
index be029379c101a0105d4837136e064e6007b67c3e..cfa861920b15c2f535f1d9351425e29ee03bbdda 100644
|
||||
index e954a8df26ed84731b08b151f90a758206946582..5b8013c71c6b50579668d16a5f7d5a82b5d43e4d 100644
|
||||
--- a/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
+++ b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
@@ -2120,7 +2120,6 @@ var SessionStoreInternal = {
|
||||
@@ -2135,7 +2135,6 @@ var SessionStoreInternal = {
|
||||
if (closedWindowState) {
|
||||
let newWindowState;
|
||||
if (
|
||||
@@ -10,7 +10,7 @@ index be029379c101a0105d4837136e064e6007b67c3e..cfa861920b15c2f535f1d9351425e29e
|
||||
!lazy.SessionStartup.willRestore()
|
||||
) {
|
||||
// We want to split the window up into pinned tabs and unpinned tabs.
|
||||
@@ -2353,11 +2352,9 @@ var SessionStoreInternal = {
|
||||
@@ -2368,11 +2367,9 @@ var SessionStoreInternal = {
|
||||
tabbrowser.selectedTab.label;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ index be029379c101a0105d4837136e064e6007b67c3e..cfa861920b15c2f535f1d9351425e29e
|
||||
|
||||
// Store the window's close date to figure out when each individual tab
|
||||
// was closed. This timestamp should allow re-arranging data based on how
|
||||
@@ -3303,7 +3300,7 @@ var SessionStoreInternal = {
|
||||
@@ -3357,7 +3354,7 @@ var SessionStoreInternal = {
|
||||
if (!isPrivateWindow && tabState.isPrivate) {
|
||||
return;
|
||||
}
|
||||
@@ -31,7 +31,7 @@ index be029379c101a0105d4837136e064e6007b67c3e..cfa861920b15c2f535f1d9351425e29e
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -4012,6 +4009,11 @@ var SessionStoreInternal = {
|
||||
@@ -4069,6 +4066,11 @@ var SessionStoreInternal = {
|
||||
Math.min(tabState.index, tabState.entries.length)
|
||||
);
|
||||
tabState.pinned = false;
|
||||
@@ -43,7 +43,7 @@ index be029379c101a0105d4837136e064e6007b67c3e..cfa861920b15c2f535f1d9351425e29e
|
||||
|
||||
if (inBackground === false) {
|
||||
aWindow.gBrowser.selectedTab = newTab;
|
||||
@@ -4448,6 +4450,7 @@ var SessionStoreInternal = {
|
||||
@@ -4505,6 +4507,7 @@ var SessionStoreInternal = {
|
||||
// Append the tab if we're opening into a different window,
|
||||
tabIndex: aSource == aTargetWindow ? pos : Infinity,
|
||||
pinned: state.pinned,
|
||||
@@ -51,7 +51,7 @@ index be029379c101a0105d4837136e064e6007b67c3e..cfa861920b15c2f535f1d9351425e29e
|
||||
userContextId: state.userContextId,
|
||||
skipLoad: true,
|
||||
preferredRemoteType,
|
||||
@@ -5303,7 +5306,7 @@ var SessionStoreInternal = {
|
||||
@@ -5360,7 +5363,7 @@ var SessionStoreInternal = {
|
||||
|
||||
for (let i = tabbrowser.pinnedTabCount; i < tabbrowser.tabs.length; i++) {
|
||||
let tab = tabbrowser.tabs[i];
|
||||
@@ -60,7 +60,7 @@ index be029379c101a0105d4837136e064e6007b67c3e..cfa861920b15c2f535f1d9351425e29e
|
||||
removableTabs.push(tab);
|
||||
}
|
||||
}
|
||||
@@ -5363,7 +5366,7 @@ var SessionStoreInternal = {
|
||||
@@ -5420,7 +5423,7 @@ var SessionStoreInternal = {
|
||||
}
|
||||
|
||||
let workspaceID = aWindow.getWorkspaceID();
|
||||
@@ -69,7 +69,7 @@ index be029379c101a0105d4837136e064e6007b67c3e..cfa861920b15c2f535f1d9351425e29e
|
||||
winData.workspaceID = workspaceID;
|
||||
}
|
||||
},
|
||||
@@ -5554,11 +5557,12 @@ var SessionStoreInternal = {
|
||||
@@ -5611,11 +5614,12 @@ var SessionStoreInternal = {
|
||||
}
|
||||
|
||||
let tabbrowser = aWindow.gBrowser;
|
||||
@@ -83,7 +83,7 @@ index be029379c101a0105d4837136e064e6007b67c3e..cfa861920b15c2f535f1d9351425e29e
|
||||
// update the internal state data for this window
|
||||
for (let tab of tabs) {
|
||||
if (tab == aWindow.FirefoxViewHandler.tab) {
|
||||
@@ -5569,6 +5573,7 @@ var SessionStoreInternal = {
|
||||
@@ -5626,6 +5630,7 @@ var SessionStoreInternal = {
|
||||
tabsData.push(tabData);
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ index be029379c101a0105d4837136e064e6007b67c3e..cfa861920b15c2f535f1d9351425e29e
|
||||
// update tab group state for this window
|
||||
winData.groups = [];
|
||||
for (let tabGroup of aWindow.gBrowser.tabGroups) {
|
||||
@@ -5581,7 +5586,7 @@ var SessionStoreInternal = {
|
||||
@@ -5638,7 +5643,7 @@ var SessionStoreInternal = {
|
||||
// a window is closed, point to the first item in the tab strip instead (it will never be the Firefox View tab,
|
||||
// since it's only inserted into the tab strip after it's selected).
|
||||
if (aWindow.FirefoxViewHandler.tab?.selected) {
|
||||
@@ -100,7 +100,7 @@ index be029379c101a0105d4837136e064e6007b67c3e..cfa861920b15c2f535f1d9351425e29e
|
||||
winData.title = tabbrowser.tabs[0].label;
|
||||
}
|
||||
winData.selected = selectedIndex;
|
||||
@@ -5693,8 +5698,8 @@ var SessionStoreInternal = {
|
||||
@@ -5750,8 +5755,8 @@ var SessionStoreInternal = {
|
||||
// selectTab represents.
|
||||
let selectTab = 0;
|
||||
if (overwriteTabs) {
|
||||
@@ -111,7 +111,7 @@ index be029379c101a0105d4837136e064e6007b67c3e..cfa861920b15c2f535f1d9351425e29e
|
||||
selectTab = Math.min(selectTab, winData.tabs.length);
|
||||
}
|
||||
|
||||
@@ -5737,6 +5742,8 @@ var SessionStoreInternal = {
|
||||
@@ -5794,6 +5799,8 @@ var SessionStoreInternal = {
|
||||
winData.tabs,
|
||||
winData.groups ?? []
|
||||
);
|
||||
@@ -120,7 +120,7 @@ index be029379c101a0105d4837136e064e6007b67c3e..cfa861920b15c2f535f1d9351425e29e
|
||||
this._log.debug(
|
||||
`restoreWindow, createTabsForSessionRestore returned ${tabs.length} tabs`
|
||||
);
|
||||
@@ -6286,6 +6293,22 @@ var SessionStoreInternal = {
|
||||
@@ -6351,6 +6358,22 @@ var SessionStoreInternal = {
|
||||
|
||||
// Most of tabData has been restored, now continue with restoring
|
||||
// attributes that may trigger external events.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
|
||||
index e5509953509c4da8756e36a0792f76814e24ba0c..32e21e1295aa508a2b8dc6b8a0ea4d678dd81594 100644
|
||||
index f261f0f2c7945cbdb41e5d1b6067a8db38bef117..32e21e1295aa508a2b8dc6b8a0ea4d678dd81594 100644
|
||||
--- a/browser/components/tabbrowser/content/tab.js
|
||||
+++ b/browser/components/tabbrowser/content/tab.js
|
||||
@@ -21,6 +21,7 @@
|
||||
@@ -42,11 +42,13 @@ index e5509953509c4da8756e36a0792f76814e24ba0c..32e21e1295aa508a2b8dc6b8a0ea4d67
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -224,7 +227,19 @@
|
||||
@@ -224,9 +227,19 @@
|
||||
}
|
||||
|
||||
get visible() {
|
||||
- return this.isOpen && !this.hidden && !this.group?.collapsed;
|
||||
- return (
|
||||
- this.isOpen && !this.hidden && (!this.group?.collapsed || this.selected)
|
||||
- );
|
||||
+ if (!this.isOpen || this.hidden || this.hasAttribute("zen-empty-tab")) {
|
||||
+ return false;
|
||||
+ }
|
||||
@@ -63,7 +65,7 @@ index e5509953509c4da8756e36a0792f76814e24ba0c..32e21e1295aa508a2b8dc6b8a0ea4d67
|
||||
}
|
||||
|
||||
get hidden() {
|
||||
@@ -295,7 +310,7 @@
|
||||
@@ -297,7 +310,7 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -72,7 +74,7 @@ index e5509953509c4da8756e36a0792f76814e24ba0c..32e21e1295aa508a2b8dc6b8a0ea4d67
|
||||
}
|
||||
|
||||
get lastAccessed() {
|
||||
@@ -372,8 +387,11 @@
|
||||
@@ -374,8 +387,11 @@
|
||||
}
|
||||
|
||||
get group() {
|
||||
@@ -86,7 +88,7 @@ index e5509953509c4da8756e36a0792f76814e24ba0c..32e21e1295aa508a2b8dc6b8a0ea4d67
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -467,6 +485,8 @@
|
||||
@@ -469,6 +485,8 @@
|
||||
this.style.MozUserFocus = "ignore";
|
||||
} else if (
|
||||
event.target.classList.contains("tab-close-button") ||
|
||||
@@ -95,7 +97,7 @@ index e5509953509c4da8756e36a0792f76814e24ba0c..32e21e1295aa508a2b8dc6b8a0ea4d67
|
||||
event.target.classList.contains("tab-icon-overlay") ||
|
||||
event.target.classList.contains("tab-audio-button")
|
||||
) {
|
||||
@@ -521,6 +541,10 @@
|
||||
@@ -523,6 +541,10 @@
|
||||
this.style.MozUserFocus = "";
|
||||
}
|
||||
|
||||
@@ -106,7 +108,7 @@ index e5509953509c4da8756e36a0792f76814e24ba0c..32e21e1295aa508a2b8dc6b8a0ea4d67
|
||||
on_click(event) {
|
||||
if (event.button != 0) {
|
||||
return;
|
||||
@@ -569,6 +593,7 @@
|
||||
@@ -571,6 +593,7 @@
|
||||
)
|
||||
);
|
||||
} else {
|
||||
@@ -114,7 +116,7 @@ index e5509953509c4da8756e36a0792f76814e24ba0c..32e21e1295aa508a2b8dc6b8a0ea4d67
|
||||
gBrowser.removeTab(this, {
|
||||
animate: true,
|
||||
triggeringEvent: event,
|
||||
@@ -581,6 +606,14 @@
|
||||
@@ -583,6 +606,14 @@
|
||||
// (see tabbrowser-tabs 'click' handler).
|
||||
gBrowser.tabContainer._blockDblClick = true;
|
||||
}
|
||||
@@ -129,7 +131,7 @@ index e5509953509c4da8756e36a0792f76814e24ba0c..32e21e1295aa508a2b8dc6b8a0ea4d67
|
||||
}
|
||||
|
||||
on_dblclick(event) {
|
||||
@@ -604,6 +637,8 @@
|
||||
@@ -606,6 +637,8 @@
|
||||
animate: true,
|
||||
triggeringEvent: event,
|
||||
});
|
||||
|
@@ -1,14 +1,11 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
index 96fd8acdc0..a8abf1597f 100644
|
||||
index d80a66a01002e78a9c65545d08fe786328ddf124..5c784c911fcd30353744a79caad9bb42b1257c3f 100644
|
||||
--- a/browser/components/tabbrowser/content/tabbrowser.js
|
||||
+++ b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
@@ -422,15 +422,60 @@
|
||||
return this.tabContainer.visibleTabs;
|
||||
}
|
||||
|
||||
- get pinnedTabCount() {
|
||||
- for (var i = 0; i < this.tabs.length; i++) {
|
||||
- if (!this.tabs[i].pinned) {
|
||||
+ get _numVisiblePinTabsWithoutCollapsed() {
|
||||
+ let i = 0;
|
||||
+ for (let item of this.tabContainer.ariaFocusableItems) {
|
||||
@@ -17,15 +14,15 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (!item.pinned && !item.hasAttribute("zen-glance-tab")) {
|
||||
break;
|
||||
}
|
||||
+ break;
|
||||
+ }
|
||||
+ if (item.visible) {
|
||||
+ i += !item.hasAttribute("zen-glance-tab");
|
||||
+ }
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
+ }
|
||||
+ return i;
|
||||
+ }
|
||||
+
|
||||
+ ungroupTabsUntilNoActive(tab) {
|
||||
+ if (!tab || !tab.group) return;
|
||||
+ const activeGroups = tab.group.activeGroups;
|
||||
@@ -48,17 +45,19 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
+ return i;
|
||||
+ }
|
||||
+
|
||||
+ get pinnedTabCount() {
|
||||
get pinnedTabCount() {
|
||||
- for (var i = 0; i < this.tabs.length; i++) {
|
||||
- if (!this.tabs[i].pinned) {
|
||||
+ let i = 0;
|
||||
+ for (let tab of this.tabs) {
|
||||
+ if (!tab.pinned && !tab.hasAttribute("zen-glance-tab")) {
|
||||
+ break;
|
||||
+ }
|
||||
break;
|
||||
}
|
||||
+ i += !tab.hasAttribute("zen-glance-tab");
|
||||
+ }
|
||||
+ return i;
|
||||
+ }
|
||||
+
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
+ get tabsWithoutGlance() {
|
||||
+ return this.tabs.filter(tab => !tab.hasAttribute("zen-glance-tab"));
|
||||
+ }
|
||||
@@ -294,7 +293,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
}
|
||||
|
||||
if (!color) {
|
||||
@@ -3040,9 +3132,14 @@
|
||||
@@ -3040,9 +3132,13 @@
|
||||
label,
|
||||
isAdoptingGroup
|
||||
);
|
||||
@@ -304,14 +303,13 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
+ }
|
||||
+ group.essential = tabs.some(tab => tab.hasAttribute("essential"));
|
||||
+ group.pinned = group.essential || tabs.some(tab => tab.pinned);
|
||||
+ if (forSplitView) insertBefore = insertBefore.group;
|
||||
+ insertBefore.before(
|
||||
group,
|
||||
- insertBefore?.group ?? insertBefore
|
||||
);
|
||||
group.addTabs(tabs);
|
||||
|
||||
@@ -3163,7 +3260,7 @@
|
||||
@@ -3163,7 +3259,7 @@
|
||||
}
|
||||
|
||||
this.#handleTabMove(tab, () =>
|
||||
@@ -320,7 +318,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
);
|
||||
}
|
||||
|
||||
@@ -3357,6 +3454,7 @@
|
||||
@@ -3365,6 +3461,7 @@
|
||||
openWindowInfo,
|
||||
skipLoad,
|
||||
triggeringRemoteType,
|
||||
@@ -328,7 +326,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
}
|
||||
) {
|
||||
// If we don't have a preferred remote type (or it is `NOT_REMOTE`), and
|
||||
@@ -3426,6 +3524,7 @@
|
||||
@@ -3434,6 +3531,7 @@
|
||||
openWindowInfo,
|
||||
name,
|
||||
skipLoad,
|
||||
@@ -336,7 +334,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
});
|
||||
}
|
||||
|
||||
@@ -3613,7 +3712,7 @@
|
||||
@@ -3621,7 +3719,7 @@
|
||||
// Add a new tab if needed.
|
||||
if (!tab) {
|
||||
let createLazyBrowser =
|
||||
@@ -345,7 +343,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
|
||||
let url = "about:blank";
|
||||
if (tabData.entries?.length) {
|
||||
@@ -3650,8 +3749,10 @@
|
||||
@@ -3658,8 +3756,10 @@
|
||||
insertTab: false,
|
||||
skipLoad: true,
|
||||
preferredRemoteType,
|
||||
@@ -357,7 +355,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
if (select) {
|
||||
tabToSelect = tab;
|
||||
}
|
||||
@@ -3663,7 +3764,8 @@
|
||||
@@ -3671,7 +3771,8 @@
|
||||
this.pinTab(tab);
|
||||
// Then ensure all the tab open/pinning information is sent.
|
||||
this._fireTabOpen(tab, {});
|
||||
@@ -367,7 +365,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
let { groupId } = tabData;
|
||||
const tabGroup = tabGroupWorkingData.get(groupId);
|
||||
// if a tab refers to a tab group we don't know, skip any group
|
||||
@@ -3677,7 +3779,10 @@
|
||||
@@ -3685,7 +3786,10 @@
|
||||
tabGroup.stateData.id,
|
||||
tabGroup.stateData.color,
|
||||
tabGroup.stateData.collapsed,
|
||||
@@ -379,7 +377,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
);
|
||||
tabsFragment.appendChild(tabGroup.node);
|
||||
}
|
||||
@@ -3722,9 +3827,23 @@
|
||||
@@ -3730,9 +3834,23 @@
|
||||
// to remove the old selected tab.
|
||||
if (tabToSelect) {
|
||||
let leftoverTab = this.selectedTab;
|
||||
@@ -395,15 +393,15 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
+ gZenWorkspaces._initialTab._shouldRemove = true;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
+ }
|
||||
+ else {
|
||||
+ gZenWorkspaces._tabToRemoveForEmpty = this.selectedTab;
|
||||
+ }
|
||||
}
|
||||
+ this._hasAlreadyInitializedZenSessionStore = true;
|
||||
|
||||
if (tabs.length > 1 || !tabs[0].selected) {
|
||||
this._updateTabsAfterInsert();
|
||||
@@ -3919,7 +4038,7 @@
|
||||
@@ -3927,7 +4045,7 @@
|
||||
// Ensure we have an index if one was not provided.
|
||||
if (typeof elementIndex != "number" && typeof tabIndex != "number") {
|
||||
// Move the new tab after another tab if needed, to the end otherwise.
|
||||
@@ -412,7 +410,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
if (
|
||||
!bulkOrderedOpen &&
|
||||
((openerTab &&
|
||||
@@ -3931,7 +4050,7 @@
|
||||
@@ -3939,7 +4057,7 @@
|
||||
let lastRelatedTab =
|
||||
openerTab && this._lastRelatedTabMap.get(openerTab);
|
||||
let previousTab = lastRelatedTab || openerTab || this.selectedTab;
|
||||
@@ -421,7 +419,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
tabGroup = previousTab.group;
|
||||
}
|
||||
if (
|
||||
@@ -3942,7 +4061,7 @@
|
||||
@@ -3950,7 +4068,7 @@
|
||||
) {
|
||||
elementIndex = Infinity;
|
||||
} else if (previousTab.visible) {
|
||||
@@ -430,7 +428,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
} else if (previousTab == FirefoxViewHandler.tab) {
|
||||
elementIndex = 0;
|
||||
}
|
||||
@@ -3970,14 +4089,14 @@
|
||||
@@ -3978,14 +4096,14 @@
|
||||
}
|
||||
// Ensure index is within bounds.
|
||||
if (tab.pinned) {
|
||||
@@ -447,9 +445,9 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
- let itemAfter = allItems.at(index);
|
||||
+ let itemAfter = gZenGlanceManager.getTabOrGlanceParent(allItems.at(index));
|
||||
|
||||
// Prevent a flash of unstyled content by setting up the tab content
|
||||
// and inherited attributes before appending it (see Bug 1592054):
|
||||
@@ -3985,7 +4104,7 @@
|
||||
if (pinned && !itemAfter?.pinned) {
|
||||
itemAfter = null;
|
||||
@@ -3996,7 +4114,7 @@
|
||||
|
||||
this.tabContainer._invalidateCachedTabs();
|
||||
|
||||
@@ -458,7 +456,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
if (this.isTab(itemAfter) && itemAfter.group == tabGroup) {
|
||||
// Place at the front of, or between tabs in, the same tab group
|
||||
this.tabContainer.insertBefore(tab, itemAfter);
|
||||
@@ -4018,6 +4137,7 @@
|
||||
@@ -4032,6 +4150,7 @@
|
||||
if (pinned) {
|
||||
this._updateTabBarForPinnedTabs();
|
||||
}
|
||||
@@ -466,7 +464,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
|
||||
TabBarVisibility.update();
|
||||
}
|
||||
@@ -4307,6 +4427,9 @@
|
||||
@@ -4321,6 +4440,9 @@
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -476,7 +474,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
this.removeTabs(selectedTabs, { isUserTriggered, telemetrySource });
|
||||
}
|
||||
|
||||
@@ -4568,6 +4691,7 @@
|
||||
@@ -4582,6 +4704,7 @@
|
||||
telemetrySource,
|
||||
} = {}
|
||||
) {
|
||||
@@ -484,7 +482,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs
|
||||
// can be considered equivalent to closing the window.
|
||||
if (
|
||||
@@ -4657,6 +4781,7 @@
|
||||
@@ -4671,6 +4794,7 @@
|
||||
if (lastToClose) {
|
||||
this.removeTab(lastToClose, aParams);
|
||||
}
|
||||
@@ -492,7 +490,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
@@ -4695,6 +4820,12 @@
|
||||
@@ -4709,6 +4833,12 @@
|
||||
aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start();
|
||||
}
|
||||
|
||||
@@ -505,7 +503,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
// Handle requests for synchronously removing an already
|
||||
// asynchronously closing tab.
|
||||
if (!animate && aTab.closing) {
|
||||
@@ -4709,6 +4840,9 @@
|
||||
@@ -4723,6 +4853,9 @@
|
||||
// state).
|
||||
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
|
||||
let isLastTab = this.#isLastTabInWindow(aTab);
|
||||
@@ -515,7 +513,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
if (
|
||||
!this._beginRemoveTab(aTab, {
|
||||
closeWindowFastpath: true,
|
||||
@@ -4891,7 +5025,7 @@
|
||||
@@ -4905,7 +5038,7 @@
|
||||
closeWindowWithLastTab != null
|
||||
? closeWindowWithLastTab
|
||||
: !window.toolbar.visible ||
|
||||
@@ -524,7 +522,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
|
||||
if (closeWindow) {
|
||||
// We've already called beforeunload on all the relevant tabs if we get here,
|
||||
@@ -4915,6 +5049,7 @@
|
||||
@@ -4929,6 +5062,7 @@
|
||||
|
||||
newTab = true;
|
||||
}
|
||||
@@ -532,18 +530,22 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
aTab._endRemoveArgs = [closeWindow, newTab];
|
||||
|
||||
// swapBrowsersAndCloseOther will take care of closing the window without animation.
|
||||
@@ -4955,9 +5090,7 @@
|
||||
@@ -4969,13 +5103,7 @@
|
||||
aTab._mouseleave();
|
||||
|
||||
if (newTab) {
|
||||
- this.addTrustedTab(BROWSER_NEW_TAB_URL, {
|
||||
- skipAnimation: true,
|
||||
- // In the event that insertAfterCurrent is set and the current tab is
|
||||
- // inside a group that is being closed we want to avoid creating the
|
||||
- // new tab inside that group.
|
||||
- tabIndex: 0,
|
||||
- });
|
||||
+ gZenWorkspaces.selectEmptyTab(BROWSER_NEW_TAB_URL);
|
||||
} else {
|
||||
TabBarVisibility.update();
|
||||
}
|
||||
@@ -5090,6 +5223,7 @@
|
||||
@@ -5108,6 +5236,7 @@
|
||||
this.tabs[i]._tPos = i;
|
||||
}
|
||||
|
||||
@@ -551,7 +553,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
if (!this._windowIsClosing) {
|
||||
// update tab close buttons state
|
||||
this.tabContainer._updateCloseButtons();
|
||||
@@ -5302,6 +5436,7 @@
|
||||
@@ -5320,6 +5449,7 @@
|
||||
}
|
||||
|
||||
let excludeTabs = new Set(aExcludeTabs);
|
||||
@@ -559,7 +561,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
|
||||
// If this tab has a successor, it should be selectable, since
|
||||
// hiding or closing a tab removes that tab as a successor.
|
||||
@@ -5314,13 +5449,13 @@
|
||||
@@ -5332,13 +5462,13 @@
|
||||
!excludeTabs.has(aTab.owner) &&
|
||||
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
|
||||
) {
|
||||
@@ -575,7 +577,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
);
|
||||
|
||||
let tab = this.tabContainer.findNextTab(aTab, {
|
||||
@@ -5336,7 +5471,7 @@
|
||||
@@ -5354,7 +5484,7 @@
|
||||
}
|
||||
|
||||
if (tab) {
|
||||
@@ -584,7 +586,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
}
|
||||
|
||||
// If no qualifying visible tab was found, see if there is a tab in
|
||||
@@ -5357,7 +5492,7 @@
|
||||
@@ -5375,7 +5505,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
@@ -593,7 +595,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
}
|
||||
|
||||
_blurTab(aTab) {
|
||||
@@ -5759,10 +5894,10 @@
|
||||
@@ -5777,10 +5907,10 @@
|
||||
SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
|
||||
}
|
||||
|
||||
@@ -606,7 +608,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
aTab.selected ||
|
||||
aTab.closing ||
|
||||
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
|
||||
@@ -5952,7 +6087,7 @@
|
||||
@@ -5972,7 +6102,7 @@
|
||||
* `true` if element is a `<tab-group>`
|
||||
*/
|
||||
isTabGroup(element) {
|
||||
@@ -615,7 +617,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -6029,7 +6164,7 @@
|
||||
@@ -6049,7 +6179,7 @@
|
||||
|
||||
// Don't allow mixing pinned and unpinned tabs.
|
||||
if (this.isTab(element) && element.pinned) {
|
||||
@@ -624,7 +626,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
} else {
|
||||
tabIndex = Math.max(tabIndex, this.pinnedTabCount);
|
||||
}
|
||||
@@ -6055,10 +6190,16 @@
|
||||
@@ -6075,10 +6205,16 @@
|
||||
this.#handleTabMove(
|
||||
element,
|
||||
() => {
|
||||
@@ -643,7 +645,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
if (neighbor && this.isTab(element) && tabIndex > element._tPos) {
|
||||
neighbor.after(element);
|
||||
} else {
|
||||
@@ -6116,22 +6257,26 @@
|
||||
@@ -6136,22 +6272,26 @@
|
||||
#moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) {
|
||||
if (this.isTabGroupLabel(targetElement)) {
|
||||
targetElement = targetElement.group;
|
||||
@@ -676,7 +678,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
moveBefore = false;
|
||||
} else if (!element.pinned && targetElement && targetElement.pinned) {
|
||||
// If the caller asks to move an unpinned element next to a pinned
|
||||
@@ -6145,14 +6290,18 @@
|
||||
@@ -6165,14 +6305,18 @@
|
||||
// move the tab group right before the first unpinned tab.
|
||||
// 4. Moving a tab group and the first unpinned tab is grouped:
|
||||
// move the tab group right before the first unpinned tab's tab group.
|
||||
@@ -696,7 +698,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
element.pinned
|
||||
? this.tabContainer.pinnedTabsContainer
|
||||
: this.tabContainer;
|
||||
@@ -6161,7 +6310,7 @@
|
||||
@@ -6181,7 +6325,7 @@
|
||||
element,
|
||||
() => {
|
||||
if (moveBefore) {
|
||||
@@ -705,7 +707,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
} else if (targetElement) {
|
||||
targetElement.after(element);
|
||||
} else {
|
||||
@@ -6210,7 +6359,7 @@
|
||||
@@ -6230,7 +6374,7 @@
|
||||
if (!this.isTab(aTab)) {
|
||||
throw new Error("Can only move a tab into a tab group");
|
||||
}
|
||||
@@ -714,7 +716,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
return;
|
||||
}
|
||||
if (aTab.group && aTab.group.id === aGroup.id) {
|
||||
@@ -6304,6 +6453,10 @@
|
||||
@@ -6324,6 +6468,10 @@
|
||||
|
||||
moveActionCallback();
|
||||
|
||||
@@ -725,7 +727,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
// Clear tabs cache after moving nodes because the order of tabs may have
|
||||
// changed.
|
||||
this.tabContainer._invalidateCachedTabs();
|
||||
@@ -7198,7 +7351,7 @@
|
||||
@@ -7221,7 +7369,7 @@
|
||||
// preventDefault(). It will still raise the window if appropriate.
|
||||
break;
|
||||
}
|
||||
@@ -734,7 +736,7 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
window.focus();
|
||||
aEvent.preventDefault();
|
||||
break;
|
||||
@@ -8143,6 +8296,7 @@
|
||||
@@ -8166,6 +8314,7 @@
|
||||
aWebProgress.isTopLevel
|
||||
) {
|
||||
this.mTab.setAttribute("busy", "true");
|
||||
@@ -742,16 +744,16 @@ index 96fd8acdc0..a8abf1597f 100644
|
||||
gBrowser._tabAttrModified(this.mTab, ["busy"]);
|
||||
this.mTab._notselectedsinceload = !this.mTab.selected;
|
||||
}
|
||||
@@ -9108,7 +9262,7 @@ var TabContextMenu = {
|
||||
@@ -9157,7 +9306,7 @@ var TabContextMenu = {
|
||||
);
|
||||
contextUnpinSelectedTabs.hidden =
|
||||
!this.contextTab.pinned || !this.multiselected;
|
||||
-
|
||||
+ gZenPinnedTabManager.updatePinnedTabContextMenu(this.contextTab);
|
||||
// Move Tab items
|
||||
let contextMoveTabOptions = document.getElementById(
|
||||
"context_moveTabOptions"
|
||||
@@ -9384,6 +9538,7 @@ var TabContextMenu = {
|
||||
// Build Ask Chat items
|
||||
TabContextMenu.GenAI.buildTabMenu(
|
||||
document.getElementById("context_askChat"),
|
||||
@@ -9476,6 +9625,7 @@ var TabContextMenu = {
|
||||
)
|
||||
);
|
||||
} else {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js
|
||||
index 2ed2fa02b16013e40a32391b3dba0a4301d65262..aea9fb03dbc28a524ec5a26e76510b1fda11a48c 100644
|
||||
index caea196b22b4689f55780a528661d87b52f4e728..43d815218d652055378f50cb577086f3f01b681a 100644
|
||||
--- a/browser/components/tabbrowser/content/tabgroup.js
|
||||
+++ b/browser/components/tabbrowser/content/tabgroup.js
|
||||
@@ -13,10 +13,12 @@
|
||||
@@ -15,10 +15,10 @@ index 2ed2fa02b16013e40a32391b3dba0a4301d65262..aea9fb03dbc28a524ec5a26e76510b1f
|
||||
+ <html:div class="tab-group-container">
|
||||
+ <html:div class="zen-tab-group-start"/>
|
||||
+ </html:div>
|
||||
`;
|
||||
|
||||
/** @type {string} */
|
||||
@@ -45,16 +47,22 @@
|
||||
<vbox class="tab-group-overflow-count-container" pack="center">
|
||||
<label class="tab-group-overflow-count" role="button" />
|
||||
</vbox>
|
||||
@@ -57,20 +59,27 @@
|
||||
}
|
||||
|
||||
connectedCallback() {
|
||||
@@ -38,42 +38,44 @@ index 2ed2fa02b16013e40a32391b3dba0a4301d65262..aea9fb03dbc28a524ec5a26e76510b1f
|
||||
// causes the component to be repositioned in the DOM.
|
||||
- this.#observeTabChanges();
|
||||
|
||||
// Similar to above, always set up TabSelect listener, as this gets
|
||||
// removed in disconnectedCallback
|
||||
this.ownerGlobal.addEventListener("TabSelect", this);
|
||||
|
||||
- if (this._initialized) {
|
||||
- return;
|
||||
- }
|
||||
+ if (!this._initialized) {
|
||||
+
|
||||
|
||||
this._initialized = true;
|
||||
this.saveOnWindowClose = true;
|
||||
@@ -68,12 +76,14 @@
|
||||
@@ -97,11 +106,10 @@
|
||||
this.#labelElement.container = gBrowser.tabContainer;
|
||||
this.#labelElement.group = this;
|
||||
|
||||
- this.#labelElement.addEventListener("click", this);
|
||||
+ this.querySelector(".tab-group-label-container").addEventListener("click", this);
|
||||
+ if (!this.isZenFolder) {
|
||||
this.#labelElement.addEventListener("contextmenu", e => {
|
||||
e.preventDefault();
|
||||
gBrowser.tabGroupMenu.openEditModal(this);
|
||||
return false;
|
||||
});
|
||||
+ }
|
||||
- this.#labelElement.addEventListener("contextmenu", e => {
|
||||
- e.preventDefault();
|
||||
- gBrowser.tabGroupMenu.openEditModal(this);
|
||||
- return false;
|
||||
- });
|
||||
+ this.appendChild = function (child) {
|
||||
+ this.querySelector(".tab-group-container").appendChild(child);
|
||||
+ };
|
||||
+
|
||||
|
||||
this.#updateLabelAriaAttributes();
|
||||
this.#updateCollapsedAriaAttributes();
|
||||
@@ -93,6 +103,11 @@
|
||||
// claim that a tab group was created by adoption the first time it
|
||||
@@ -127,6 +135,8 @@
|
||||
// mounts after getting created by `Tabbrowser.adoptTabGroup`.
|
||||
this.#wasCreatedByAdoption = false;
|
||||
+ this.appendChild = function (child) {
|
||||
+ this.querySelector(".tab-group-container").appendChild(child);
|
||||
+ }
|
||||
+ }
|
||||
+ this.#observeTabChanges();
|
||||
}
|
||||
+ this.#observeTabChanges();
|
||||
+ }
|
||||
|
||||
disconnectedCallback() {
|
||||
@@ -123,7 +138,10 @@
|
||||
resetDefaultGroupName = () => {
|
||||
this.#defaultGroupName = "";
|
||||
@@ -197,7 +207,10 @@
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -85,15 +87,12 @@ index 2ed2fa02b16013e40a32391b3dba0a4301d65262..aea9fb03dbc28a524ec5a26e76510b1f
|
||||
}
|
||||
|
||||
get color() {
|
||||
@@ -172,7 +190,6 @@
|
||||
// always create a text node and get consistent layout.
|
||||
this.setAttribute("label", val || "\u200b");
|
||||
|
||||
- this.dataset.tooltip = val;
|
||||
|
||||
this.#updateLabelAriaAttributes();
|
||||
if (diff) {
|
||||
@@ -244,7 +261,53 @@
|
||||
@@ -338,12 +351,57 @@
|
||||
tabGroupName,
|
||||
})
|
||||
.then(result => {
|
||||
- this.dataset.tooltip = result;
|
||||
});
|
||||
}
|
||||
|
||||
get tabs() {
|
||||
@@ -148,7 +147,7 @@ index 2ed2fa02b16013e40a32391b3dba0a4301d65262..aea9fb03dbc28a524ec5a26e76510b1f
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -270,7 +333,7 @@
|
||||
@@ -373,7 +431,7 @@
|
||||
*/
|
||||
addTabs(tabs, metricsContext) {
|
||||
for (let tab of tabs) {
|
||||
@@ -157,16 +156,16 @@ index 2ed2fa02b16013e40a32391b3dba0a4301d65262..aea9fb03dbc28a524ec5a26e76510b1f
|
||||
tab.ownerGlobal.gBrowser.unpinTab(tab);
|
||||
}
|
||||
let tabToMove =
|
||||
@@ -333,7 +396,7 @@
|
||||
* @param {PointerEvent} event
|
||||
@@ -437,7 +495,7 @@
|
||||
*/
|
||||
on_click(event) {
|
||||
- if (event.target === this.#labelElement && event.button === 0) {
|
||||
+ if (event.target.closest('.tab-group-label-container') && event.button === 0) {
|
||||
let isToggleElement =
|
||||
- event.target === this.#labelElement ||
|
||||
+ event.target.closest(".tab-group-label-container") ||
|
||||
event.target === this.#overflowCountLabel;
|
||||
if (isToggleElement && event.button === 0) {
|
||||
event.preventDefault();
|
||||
this.collapsed = !this.collapsed;
|
||||
gBrowser.tabGroupMenu.close();
|
||||
@@ -364,5 +427,6 @@
|
||||
@@ -470,5 +528,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,16 +1,8 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
|
||||
index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d784cc9da0 100644
|
||||
index e47f735e4e4563c9b7537944628418d1478c068d..e8e52b56ba2eca562186512363d90e38c4d3dffe 100644
|
||||
--- a/browser/components/tabbrowser/content/tabs.js
|
||||
+++ b/browser/components/tabbrowser/content/tabs.js
|
||||
@@ -289,6 +289,7 @@
|
||||
on_TabGroupCollapse(event) {
|
||||
this._invalidateCachedVisibleTabs();
|
||||
this._unlockTabSizing();
|
||||
+ return;
|
||||
|
||||
// If the user's selected tab is in the collapsing group, kick them off
|
||||
// the tab. If no tabs exist outside the group, create a new one and
|
||||
@@ -345,7 +346,7 @@
|
||||
@@ -332,7 +332,7 @@
|
||||
// and we're not hitting the scroll buttons.
|
||||
if (
|
||||
event.button != 0 ||
|
||||
@@ -19,7 +11,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
event.composedTarget.localName == "toolbarbutton"
|
||||
) {
|
||||
return;
|
||||
@@ -695,7 +696,7 @@
|
||||
@@ -686,7 +686,7 @@
|
||||
if (this.#isContainerVerticalPinnedGrid(tab)) {
|
||||
// In expanded vertical mode, the max number of pinned tabs per row is dynamic
|
||||
// Set this before adjusting dragged tab's position
|
||||
@@ -28,14 +20,10 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
let tabsPerRow = 0;
|
||||
let position = RTL_UI
|
||||
? window.windowUtils.getBoundsWithoutFlushing(
|
||||
@@ -777,11 +778,12 @@
|
||||
|
||||
@@ -773,8 +773,9 @@
|
||||
if (tab.multiselected) {
|
||||
this.#moveTogetherSelectedTabs(tab);
|
||||
- } else if (isTabGroupLabel(tab) && !tab.group.collapsed) {
|
||||
+ } else if (isTabGroupLabel(tab)) {
|
||||
this._lockTabSizing();
|
||||
this.#keepTabSizeLocked = true;
|
||||
} else if (isTabGroupLabel(tab) && !tab.group.collapsed) {
|
||||
- tab.group.collapsed = true;
|
||||
- expandGroupOnDrop = true;
|
||||
+ tab.group.collapsed = !tab.group.hasAttribute("split-view-group");
|
||||
@@ -44,7 +32,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
}
|
||||
}
|
||||
|
||||
@@ -879,7 +881,7 @@
|
||||
@@ -872,7 +873,7 @@
|
||||
? event.screenY - window.screenY - tabOffset
|
||||
: event.screenY - window.screenY,
|
||||
scrollPos:
|
||||
@@ -53,18 +41,18 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
? this.pinnedTabsContainer.scrollPosition
|
||||
: this.arrowScrollbox.scrollPosition,
|
||||
screenX: event.screenX,
|
||||
@@ -933,6 +935,10 @@
|
||||
@@ -933,6 +934,10 @@
|
||||
}
|
||||
|
||||
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
|
||||
+ if (draggedTab && effects === "move") {
|
||||
+ if (draggedTab && dropEffect === "move") {
|
||||
+ gZenPinnedTabManager.applyDragoverClass(event, draggedTab);
|
||||
+ gZenViewSplitter.onBrowserDragEndToSplit(event);
|
||||
+ }
|
||||
if (
|
||||
(effects == "move" || effects == "copy") &&
|
||||
(dropEffect == "move" || dropEffect == "copy") &&
|
||||
document == draggedTab.ownerDocument &&
|
||||
@@ -1060,7 +1066,9 @@
|
||||
@@ -1060,7 +1065,9 @@
|
||||
isTabGroupLabel(draggedTab) &&
|
||||
draggedTab._dragData?.expandGroupOnDrop
|
||||
) {
|
||||
@@ -72,10 +60,10 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
+ const isActive = draggedTab.group.hasAttribute("has-active");
|
||||
+ draggedTab.group.collapsed = isActive;
|
||||
+ if (isActive) gZenFolders.expandVisibleTab(draggedTab.group);
|
||||
this.#keepTabSizeLocked = false;
|
||||
this._unlockTabSizing();
|
||||
}
|
||||
@@ -1089,6 +1097,18 @@
|
||||
}
|
||||
|
||||
@@ -1096,6 +1103,18 @@
|
||||
|
||||
this._tabDropIndicator.hidden = true;
|
||||
event.stopPropagation();
|
||||
@@ -94,15 +82,21 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
if (draggedTab && dropEffect == "copy") {
|
||||
let duplicatedDraggedTab;
|
||||
let duplicatedTabs = [];
|
||||
@@ -1127,11 +1147,12 @@
|
||||
newTranslateY -= tabHeight;
|
||||
@@ -1120,8 +1139,9 @@
|
||||
let translateOffsetY = oldTranslateY % tabHeight;
|
||||
let newTranslateX = oldTranslateX - translateOffsetX;
|
||||
let newTranslateY = oldTranslateY - translateOffsetY;
|
||||
- let isPinned = draggedTab.pinned;
|
||||
- let numPinned = gBrowser.pinnedTabCount;
|
||||
+ let isPinned = draggedTab?.group ? draggedTab.group.pinned : draggedTab.pinned;
|
||||
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
|
||||
+ let essential = draggedTab.hasAttribute("zen-essential");
|
||||
|
||||
if (this.#isContainerVerticalPinnedGrid(draggedTab)) {
|
||||
// Update both translate axis for pinned vertical expanded tabs
|
||||
@@ -1137,8 +1157,8 @@
|
||||
}
|
||||
} else {
|
||||
- let isPinned = draggedTab.pinned;
|
||||
- let numPinned = gBrowser.pinnedTabCount;
|
||||
+ let isPinned = draggedTab?.group ? draggedTab.group.pinned : draggedTab.pinned;
|
||||
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
|
||||
+ let essential = draggedTab.hasAttribute("zen-essential");
|
||||
let tabs = this.ariaFocusableItems.slice(
|
||||
- isPinned ? 0 : numPinned,
|
||||
- isPinned ? numPinned : undefined
|
||||
@@ -111,15 +105,29 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
);
|
||||
let size = this.verticalMode ? "height" : "width";
|
||||
let screenAxis = this.verticalMode ? "screenY" : "screenX";
|
||||
@@ -1181,6 +1202,7 @@
|
||||
@@ -1179,11 +1199,9 @@
|
||||
}
|
||||
|
||||
let shouldPin =
|
||||
- numPinned &&
|
||||
- this.pinnedTabsContainer.contains(event.target) &&
|
||||
- !draggedTab.pinned;
|
||||
+ false;
|
||||
let shouldUnpin =
|
||||
- this.arrowScrollbox.contains(event.target) && draggedTab.pinned;
|
||||
+ false;
|
||||
let shouldTranslate =
|
||||
!gReduceMotion &&
|
||||
!shouldCreateGroupOnDrop &&
|
||||
@@ -1196,6 +1214,7 @@
|
||||
(oldTranslateY && oldTranslateY != newTranslateY);
|
||||
} else if (this.verticalMode) {
|
||||
shouldTranslate &&= oldTranslateY && oldTranslateY != newTranslateY;
|
||||
+ shouldTranslate = false; // TODO: Find a way to animate vertical tab moves.
|
||||
+ shouldTranslate = false;
|
||||
} else {
|
||||
shouldTranslate &&= oldTranslateX && oldTranslateX != newTranslateX;
|
||||
}
|
||||
@@ -1349,6 +1371,7 @@
|
||||
@@ -1379,6 +1398,7 @@
|
||||
|
||||
let nextItem = this.ariaFocusableItems[newIndex];
|
||||
let tabGroup = isTab(nextItem) && nextItem.group;
|
||||
@@ -127,7 +135,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
gBrowser.loadTabs(urls, {
|
||||
inBackground,
|
||||
replace,
|
||||
@@ -1381,6 +1404,17 @@
|
||||
@@ -1411,6 +1431,17 @@
|
||||
|
||||
this.finishMoveTogetherSelectedTabs(draggedTab);
|
||||
this.finishAnimateTabMove();
|
||||
@@ -142,10 +150,10 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
+ if (gZenViewSplitter._lastOpenedTab) gZenViewSplitter._lastOpenedTab._visuallySelected = false;
|
||||
+ }
|
||||
+
|
||||
this.#keepTabSizeLocked = false;
|
||||
this._unlockTabSizing();
|
||||
this.#expandGroupOnDrop(draggedTab);
|
||||
|
||||
if (
|
||||
@@ -1607,7 +1641,7 @@
|
||||
@@ -1640,7 +1671,7 @@
|
||||
}
|
||||
|
||||
get newTabButton() {
|
||||
@@ -154,7 +162,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
}
|
||||
|
||||
get verticalMode() {
|
||||
@@ -1623,6 +1657,7 @@
|
||||
@@ -1656,6 +1687,7 @@
|
||||
}
|
||||
|
||||
get overflowing() {
|
||||
@@ -162,7 +170,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
return this.hasAttribute("overflow");
|
||||
}
|
||||
|
||||
@@ -1631,26 +1666,54 @@
|
||||
@@ -1664,26 +1696,54 @@
|
||||
if (this.#allTabs) {
|
||||
return this.#allTabs;
|
||||
}
|
||||
@@ -224,7 +232,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1717,33 +1780,27 @@
|
||||
@@ -1750,32 +1810,27 @@
|
||||
|
||||
let elementIndex = 0;
|
||||
|
||||
@@ -243,17 +251,18 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
} else if (isTabGroup(child)) {
|
||||
child.labelElement.elementIndex = elementIndex++;
|
||||
focusableItems.push(child.labelElement);
|
||||
- if (!child.collapsed) {
|
||||
- let visibleTabsInGroup = child.tabs.filter(tab => tab.visible);
|
||||
- visibleTabsInGroup.forEach(tab => {
|
||||
-
|
||||
- let visibleTabsInGroup = child.tabs.filter(tab => tab.visible);
|
||||
- visibleTabsInGroup.forEach(tab => {
|
||||
- tab.elementIndex = elementIndex++;
|
||||
- });
|
||||
+ if (!child.hasAttribute("split-view-group")) {
|
||||
+ let visibleTabsAndGroupsInGroup = child.childGroupsAndTabs.filter(tab => tab.visible);
|
||||
+ visibleTabsAndGroupsInGroup.forEach(tab => {
|
||||
tab.elementIndex = elementIndex++;
|
||||
});
|
||||
- focusableItems.push(...visibleTabsInGroup);
|
||||
+ focusableItems.push(...visibleTabsAndGroupsInGroup);
|
||||
}
|
||||
+ let visibleTabsInGroup = child.childGroupsAndTabs.filter(tab => tab.visible);
|
||||
+ visibleTabsInGroup.forEach(tab => {
|
||||
+ tab.elementIndex = elementIndex++;
|
||||
+ });
|
||||
focusableItems.push(...visibleTabsInGroup);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -265,7 +274,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
|
||||
return this.#focusableItems;
|
||||
}
|
||||
@@ -1751,6 +1808,7 @@
|
||||
@@ -1783,6 +1838,7 @@
|
||||
_invalidateCachedTabs() {
|
||||
this.#allTabs = null;
|
||||
this._invalidateCachedVisibleTabs();
|
||||
@@ -273,7 +282,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
}
|
||||
|
||||
_invalidateCachedVisibleTabs() {
|
||||
@@ -1766,8 +1824,8 @@
|
||||
@@ -1798,8 +1854,8 @@
|
||||
#isContainerVerticalPinnedGrid(tab) {
|
||||
return (
|
||||
this.verticalMode &&
|
||||
@@ -284,7 +293,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
!this.expandOnHover
|
||||
);
|
||||
}
|
||||
@@ -1783,7 +1841,7 @@
|
||||
@@ -1815,7 +1871,7 @@
|
||||
|
||||
if (node == null) {
|
||||
// We have a container for non-tab elements at the end of the scrollbox.
|
||||
@@ -293,7 +302,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
}
|
||||
|
||||
node.before(tab);
|
||||
@@ -1878,7 +1936,7 @@
|
||||
@@ -1910,7 +1966,7 @@
|
||||
// There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and
|
||||
// for when the tab strip is overflowed (which is shared by vertical and horizontal tabs);
|
||||
// Attach the long click popup to all of them.
|
||||
@@ -302,7 +311,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
const newTab2 = this.newTabButton;
|
||||
const newTabVertical = document.getElementById(
|
||||
"vertical-tabs-newtab-button"
|
||||
@@ -1973,10 +2031,12 @@
|
||||
@@ -2005,10 +2061,12 @@
|
||||
|
||||
_handleTabSelect(aInstant) {
|
||||
let selectedTab = this.selectedItem;
|
||||
@@ -315,7 +324,15 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
selectedTab._notselectedsinceload = false;
|
||||
}
|
||||
|
||||
@@ -2130,7 +2190,7 @@
|
||||
@@ -2152,6 +2210,7 @@
|
||||
when the tab is first selected to be dragged.
|
||||
*/
|
||||
#updateTabStylesOnDrag(tab) {
|
||||
+ return;
|
||||
let isPinned = tab.pinned;
|
||||
let numPinned = gBrowser.pinnedTabCount;
|
||||
let allTabs = this.ariaFocusableItems;
|
||||
@@ -2385,7 +2444,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -324,7 +341,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
|
||||
let directionX = screenX > dragData.animLastScreenX;
|
||||
let directionY = screenY > dragData.animLastScreenY;
|
||||
@@ -2139,6 +2199,8 @@
|
||||
@@ -2394,6 +2453,8 @@
|
||||
|
||||
let { width: tabWidth, height: tabHeight } =
|
||||
draggedTab.getBoundingClientRect();
|
||||
@@ -333,16 +350,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
let shiftSizeX = tabWidth * movingTabs.length;
|
||||
let shiftSizeY = tabHeight;
|
||||
dragData.tabWidth = tabWidth;
|
||||
@@ -2168,7 +2230,7 @@
|
||||
let translateX = screenX - dragData.screenX;
|
||||
let translateY = screenY - dragData.screenY;
|
||||
translateY +=
|
||||
- this.pinnedTabsContainer.scrollPosition - dragData.scrollPos;
|
||||
+ dragData.scrollPos;
|
||||
let firstBoundX = firstTabInRow.screenX - firstMovingTabScreenX;
|
||||
let firstBoundY = firstTabInRow.screenY - firstMovingTabScreenY;
|
||||
let lastBoundX =
|
||||
@@ -2294,7 +2356,7 @@
|
||||
@@ -2547,7 +2608,7 @@
|
||||
}
|
||||
|
||||
dragData.animDropElementIndex = newIndex;
|
||||
@@ -351,7 +359,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
dragData.dropBefore = newIndex < tabs.length;
|
||||
|
||||
// Shift background tabs to leave a gap where the dragged tab
|
||||
@@ -2327,12 +2389,17 @@
|
||||
@@ -2580,13 +2641,18 @@
|
||||
|
||||
this.#clearDragOverCreateGroupTimer();
|
||||
|
||||
@@ -361,7 +369,8 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
|
||||
+ let essential = draggedTab.hasAttribute("zen-essential");
|
||||
+ const isDraggingFolder = isTabGroupLabel(draggedTab) && draggedTab.group?.isZenFolder;
|
||||
let tabs = this.ariaFocusableItems.slice(
|
||||
let allTabs = this.ariaFocusableItems;
|
||||
let tabs = allTabs.slice(
|
||||
- isPinned ? 0 : numPinned,
|
||||
- isPinned ? numPinned : undefined
|
||||
+ (isPinned && essential) ? 0 : gBrowser._numZenEssentials,
|
||||
@@ -373,17 +382,17 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
|
||||
if (this.#rtlMode) {
|
||||
tabs.reverse();
|
||||
@@ -2346,7 +2413,7 @@
|
||||
@@ -2597,7 +2663,7 @@
|
||||
let screenAxis = this.verticalMode ? "screenY" : "screenX";
|
||||
let size = this.verticalMode ? "height" : "width";
|
||||
let translateAxis = this.verticalMode ? "translateY" : "translateX";
|
||||
let scrollDirection = this.verticalMode ? "scrollTop" : "scrollLeft";
|
||||
- let { width: tabWidth, height: tabHeight } = bounds(draggedTab);
|
||||
+ let { width: tabWidth, height: tabHeight } = bounds(draggedTab.group?.hasAttribute("split-view-group") ? draggedTab.group : draggedTab);
|
||||
let translateX = event.screenX - dragData.screenX;
|
||||
let translateY = event.screenY - dragData.screenY;
|
||||
|
||||
@@ -2360,12 +2427,18 @@
|
||||
let lastTab = tabs.at(-1);
|
||||
@@ -2611,6 +2677,12 @@
|
||||
let lastTab = allTabs.at(this.#rtlMode ? 0 : -1);
|
||||
let lastMovingTab = movingTabs.at(-1);
|
||||
let firstMovingTab = movingTabs[0];
|
||||
+ if (lastMovingTab.group?.hasAttribute("split-view-group")) {
|
||||
@@ -395,22 +404,15 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
let endEdge = ele => ele[screenAxis] + bounds(ele)[size];
|
||||
let lastMovingTabScreen = endEdge(lastMovingTab);
|
||||
let firstMovingTabScreen = firstMovingTab[screenAxis];
|
||||
let shiftSize = lastMovingTabScreen - firstMovingTabScreen;
|
||||
let translate = screen - dragData[screenAxis];
|
||||
- if (!isPinned) {
|
||||
+ if (true) {
|
||||
translate +=
|
||||
this.arrowScrollbox.scrollbox[scrollDirection] - dragData.scrollPos;
|
||||
} else if (isPinned && this.verticalMode) {
|
||||
@@ -2377,6 +2450,7 @@
|
||||
// - for unpinned tabs, between the first and last unpinned tab
|
||||
@@ -2619,6 +2691,7 @@
|
||||
// Constrain the range over which the moving tabs can move between the first and last tab
|
||||
let firstBound = firstTab[screenAxis] - firstMovingTabScreen;
|
||||
let lastBound = endEdge(lastTab) - lastMovingTabScreen;
|
||||
+ lastBound = gZenPinnedTabManager.getLastTabBound(lastBound, lastTab, isDraggingFolder);
|
||||
translate = Math.min(Math.max(translate, firstBound), lastBound);
|
||||
|
||||
for (let item of movingTabs) {
|
||||
@@ -2384,6 +2458,9 @@
|
||||
// Center the tab under the cursor if the tab is not under the cursor while dragging
|
||||
if (
|
||||
@@ -2636,6 +2709,9 @@
|
||||
// Shift the `.tab-group-label-container` to shift the label element.
|
||||
item = item.parentElement;
|
||||
}
|
||||
@@ -420,7 +422,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
item.style.transform = `${translateAxis}(${translate}px)`;
|
||||
}
|
||||
|
||||
@@ -2521,6 +2598,9 @@
|
||||
@@ -2773,6 +2849,9 @@
|
||||
break;
|
||||
}
|
||||
let element = tabs[mid];
|
||||
@@ -430,7 +432,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
let elementForSize = isTabGroupLabel(element)
|
||||
? element.parentElement
|
||||
: element;
|
||||
@@ -2540,6 +2620,8 @@
|
||||
@@ -2792,6 +2871,8 @@
|
||||
};
|
||||
|
||||
let dropElement = getOverlappedElement();
|
||||
@@ -439,7 +441,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
|
||||
let newDropElementIndex;
|
||||
if (dropElement) {
|
||||
@@ -2604,7 +2686,7 @@
|
||||
@@ -2856,7 +2937,7 @@
|
||||
let shouldCreateGroupOnDrop;
|
||||
let dropBefore;
|
||||
if (dropElement) {
|
||||
@@ -448,7 +450,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
? dropElement.parentElement
|
||||
: dropElement;
|
||||
|
||||
@@ -2624,7 +2706,7 @@
|
||||
@@ -2876,7 +2957,7 @@
|
||||
? Services.prefs.getIntPref(
|
||||
"browser.tabs.dragDrop.moveOverThresholdPercent"
|
||||
) / 100
|
||||
@@ -457,7 +459,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
moveOverThreshold = Math.min(1, Math.max(0, moveOverThreshold));
|
||||
let shouldMoveOver = overlapPercent > moveOverThreshold;
|
||||
if (logicalForward && shouldMoveOver) {
|
||||
@@ -2656,44 +2738,21 @@
|
||||
@@ -2908,44 +2989,21 @@
|
||||
|
||||
// If dragging a group over another group, don't make it look like it is
|
||||
// possible to drop the dragged group inside the other group.
|
||||
@@ -507,7 +509,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
// When dragging tab(s) over an ungrouped tab, signal to the user
|
||||
// that dropping the tab(s) will create a new tab group.
|
||||
shouldCreateGroupOnDrop =
|
||||
@@ -2703,12 +2762,6 @@
|
||||
@@ -2955,12 +3013,6 @@
|
||||
overlapPercent > dragOverGroupingThreshold;
|
||||
|
||||
if (shouldCreateGroupOnDrop) {
|
||||
@@ -520,7 +522,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
} else {
|
||||
this.removeAttribute("movingtab-createGroup");
|
||||
document
|
||||
@@ -2735,19 +2788,14 @@
|
||||
@@ -2987,19 +3039,14 @@
|
||||
dropElement = dropElementGroup;
|
||||
colorCode = undefined;
|
||||
} else if (isTabGroupLabel(dropElement)) {
|
||||
@@ -548,7 +550,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
}
|
||||
this.#setDragOverGroupColor(colorCode);
|
||||
this.toggleAttribute("movingtab-ungroup", !colorCode);
|
||||
@@ -2765,19 +2813,28 @@
|
||||
@@ -3017,19 +3064,28 @@
|
||||
dragData.dropElement = dropElement;
|
||||
dragData.dropBefore = dropBefore;
|
||||
dragData.animDropElementIndex = newDropElementIndex;
|
||||
@@ -579,7 +581,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
}
|
||||
item.style.transform = transform;
|
||||
}
|
||||
@@ -2830,12 +2887,14 @@
|
||||
@@ -3082,12 +3138,14 @@
|
||||
);
|
||||
}
|
||||
|
||||
@@ -596,7 +598,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
|
||||
for (let item of this.ariaFocusableItems) {
|
||||
if (isTabGroupLabel(item)) {
|
||||
@@ -2843,6 +2902,18 @@
|
||||
@@ -3095,6 +3153,18 @@
|
||||
item = item.parentElement;
|
||||
}
|
||||
item.style.transform = "";
|
||||
@@ -615,7 +617,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
item.removeAttribute("dragover-createGroup");
|
||||
}
|
||||
this.removeAttribute("movingtab-createGroup");
|
||||
@@ -2889,7 +2960,7 @@
|
||||
@@ -3198,7 +3268,7 @@
|
||||
let postTransitionCleanup = () => {
|
||||
movingTab._moveTogetherSelectedTabsData.animate = false;
|
||||
};
|
||||
@@ -624,7 +626,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
postTransitionCleanup();
|
||||
} else {
|
||||
let onTransitionEnd = transitionendEvent => {
|
||||
@@ -3062,7 +3133,7 @@
|
||||
@@ -3371,7 +3441,7 @@
|
||||
}
|
||||
|
||||
_notifyBackgroundTab(aTab) {
|
||||
@@ -633,7 +635,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3171,7 +3242,10 @@
|
||||
@@ -3480,7 +3550,10 @@
|
||||
#getDragTarget(event, { ignoreSides = false } = {}) {
|
||||
let { target } = event;
|
||||
while (target) {
|
||||
@@ -645,7 +647,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..1cd2e9f24b3be1717493b4e663bc41d7
|
||||
break;
|
||||
}
|
||||
target = target.parentNode;
|
||||
@@ -3188,6 +3262,9 @@
|
||||
@@ -3497,6 +3570,9 @@
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs
|
||||
index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c0268965bbc92b9 100644
|
||||
index db1a780f36d16c1b63ad50af76887b16e88ca8fe..dee34ba81aae1fd961e7c01f10e485458c01977c 100644
|
||||
--- a/browser/components/urlbar/UrlbarInput.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarInput.sys.mjs
|
||||
@@ -68,6 +68,13 @@ XPCOMUtils.defineLazyPreferenceGetter(
|
||||
@@ -16,7 +16,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
const DEFAULT_FORM_HISTORY_NAME = "searchbar-history";
|
||||
const SEARCH_BUTTON_CLASS = "urlbar-search-button";
|
||||
|
||||
@@ -378,7 +385,16 @@ export class UrlbarInput {
|
||||
@@ -380,7 +387,16 @@ export class UrlbarInput {
|
||||
// See _on_select(). HTMLInputElement.select() dispatches a "select"
|
||||
// event but does not set the primary selection.
|
||||
this._suppressPrimaryAdjustment = true;
|
||||
@@ -33,7 +33,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
this._suppressPrimaryAdjustment = false;
|
||||
}
|
||||
|
||||
@@ -454,6 +470,10 @@ export class UrlbarInput {
|
||||
@@ -456,6 +472,10 @@ export class UrlbarInput {
|
||||
hideSearchTerms = false,
|
||||
isSameDocument = false
|
||||
) {
|
||||
@@ -44,7 +44,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
// We only need to update the searchModeUI on tab switch conditionally
|
||||
// as we only persist searchMode with ScotchBonnet enabled.
|
||||
if (
|
||||
@@ -717,8 +737,16 @@ export class UrlbarInput {
|
||||
@@ -728,8 +748,16 @@ export class UrlbarInput {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -62,7 +62,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1124,7 +1152,11 @@ export class UrlbarInput {
|
||||
@@ -1143,7 +1171,11 @@ export class UrlbarInput {
|
||||
}
|
||||
|
||||
if (!this.#providesSearchMode(result)) {
|
||||
@@ -75,7 +75,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
}
|
||||
|
||||
if (isCanonized) {
|
||||
@@ -2177,6 +2209,10 @@ export class UrlbarInput {
|
||||
@@ -2208,6 +2240,10 @@ export class UrlbarInput {
|
||||
await this.#updateLayoutBreakoutDimensions();
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
startLayoutExtend() {
|
||||
if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) {
|
||||
// Do not expand if the Urlbar does not support being expanded or it is
|
||||
@@ -2191,6 +2227,12 @@ export class UrlbarInput {
|
||||
@@ -2222,6 +2258,12 @@ export class UrlbarInput {
|
||||
|
||||
this.setAttribute("breakout-extend", "true");
|
||||
|
||||
@@ -99,7 +99,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
// Enable the animation only after the first extend call to ensure it
|
||||
// doesn't run when opening a new window.
|
||||
if (!this.hasAttribute("breakout-extend-animate")) {
|
||||
@@ -2210,6 +2252,24 @@ export class UrlbarInput {
|
||||
@@ -2241,6 +2283,24 @@ export class UrlbarInput {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -124,7 +124,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
this.removeAttribute("breakout-extend");
|
||||
this.#updateTextboxPosition();
|
||||
}
|
||||
@@ -2539,7 +2599,7 @@ export class UrlbarInput {
|
||||
@@ -2570,7 +2630,7 @@ export class UrlbarInput {
|
||||
|
||||
this.textbox.parentNode.style.setProperty(
|
||||
"--urlbar-container-height",
|
||||
@@ -133,7 +133,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
);
|
||||
this.textbox.style.setProperty(
|
||||
"--urlbar-height",
|
||||
@@ -2954,6 +3014,7 @@ export class UrlbarInput {
|
||||
@@ -2985,6 +3045,7 @@ export class UrlbarInput {
|
||||
}
|
||||
|
||||
_toggleActionOverride(event) {
|
||||
@@ -141,7 +141,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
if (
|
||||
event.keyCode == KeyEvent.DOM_VK_SHIFT ||
|
||||
event.keyCode == KeyEvent.DOM_VK_ALT ||
|
||||
@@ -3055,7 +3116,7 @@ export class UrlbarInput {
|
||||
@@ -3086,7 +3147,7 @@ export class UrlbarInput {
|
||||
*/
|
||||
_trimValue(val) {
|
||||
let trimmedValue = lazy.UrlbarPrefs.get("trimURLs")
|
||||
@@ -150,7 +150,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
: val;
|
||||
// Only trim value if the directionality doesn't change to RTL and we're not
|
||||
// showing a strikeout https protocol.
|
||||
@@ -3425,6 +3486,10 @@ export class UrlbarInput {
|
||||
@@ -3459,6 +3520,10 @@ export class UrlbarInput {
|
||||
}
|
||||
reuseEmpty = true;
|
||||
}
|
||||
@@ -161,7 +161,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
if (
|
||||
where == "tab" &&
|
||||
reuseEmpty &&
|
||||
@@ -3432,6 +3497,9 @@ export class UrlbarInput {
|
||||
@@ -3466,6 +3531,9 @@ export class UrlbarInput {
|
||||
) {
|
||||
where = "current";
|
||||
}
|
||||
@@ -171,7 +171,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
return where;
|
||||
}
|
||||
|
||||
@@ -3689,6 +3757,7 @@ export class UrlbarInput {
|
||||
@@ -3723,6 +3791,7 @@ export class UrlbarInput {
|
||||
this.setResultForCurrentValue(null);
|
||||
this.handleCommand();
|
||||
this.controller.clearLastQueryContextCache();
|
||||
@@ -179,7 +179,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
|
||||
this._suppressStartQuery = false;
|
||||
});
|
||||
@@ -3696,7 +3765,6 @@ export class UrlbarInput {
|
||||
@@ -3730,7 +3799,6 @@ export class UrlbarInput {
|
||||
contextMenu.addEventListener("popupshowing", () => {
|
||||
// Close the results pane when the input field contextual menu is open,
|
||||
// because paste and go doesn't want a result selection.
|
||||
@@ -187,7 +187,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
|
||||
let controller =
|
||||
this.document.commandDispatcher.getControllerForCommand("cmd_paste");
|
||||
@@ -4098,6 +4166,7 @@ export class UrlbarInput {
|
||||
@@ -4138,6 +4206,7 @@ export class UrlbarInput {
|
||||
|
||||
this.document.l10n.setAttributes(
|
||||
this.inputField,
|
||||
@@ -195,7 +195,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
l10nId,
|
||||
l10nId == "urlbar-placeholder-with-name" ? { name } : undefined
|
||||
);
|
||||
@@ -4209,6 +4278,11 @@ export class UrlbarInput {
|
||||
@@ -4249,6 +4318,11 @@ export class UrlbarInput {
|
||||
}
|
||||
|
||||
_on_click(event) {
|
||||
@@ -207,7 +207,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
if (
|
||||
event.target == this.inputField ||
|
||||
event.target == this._inputContainer ||
|
||||
@@ -4280,7 +4354,7 @@ export class UrlbarInput {
|
||||
@@ -4320,7 +4394,7 @@ export class UrlbarInput {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -216,7 +216,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
this.view.autoOpen({ event });
|
||||
} else {
|
||||
if (this._untrimOnFocusAfterKeydown) {
|
||||
@@ -4320,9 +4394,16 @@ export class UrlbarInput {
|
||||
@@ -4360,9 +4434,16 @@ export class UrlbarInput {
|
||||
}
|
||||
|
||||
_on_mousedown(event) {
|
||||
@@ -234,7 +234,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
|
||||
if (
|
||||
event.target != this.inputField &&
|
||||
@@ -4334,6 +4415,10 @@ export class UrlbarInput {
|
||||
@@ -4374,6 +4455,10 @@ export class UrlbarInput {
|
||||
|
||||
this.focusedViaMousedown = !this.focused;
|
||||
this._preventClickSelectsAll = this.focused;
|
||||
@@ -245,7 +245,7 @@ index 50e9d3931789551869ff37a4fc89d5dfe2c09ad1..0cbce1ce41345075c999f3ff9c026896
|
||||
|
||||
// Keep the focus status, since the attribute may be changed
|
||||
// upon calling this.focus().
|
||||
@@ -4374,7 +4459,7 @@ export class UrlbarInput {
|
||||
@@ -4414,7 +4499,7 @@ export class UrlbarInput {
|
||||
}
|
||||
// Don't close the view when clicking on a tab; we may want to keep the
|
||||
// view open on tab switch, and the TabSelect event arrived earlier.
|
||||
|
@@ -0,0 +1,12 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
|
||||
index 57463d2c4e39e67eeec7e2c752fe5236a662c7d2..4ca28540a71594e935847679a4b676ae48eb10d8 100644
|
||||
--- a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
|
||||
@@ -845,6 +845,7 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
|
||||
}
|
||||
|
||||
if (result.providerName == lazy.UrlbarProviderTabToSearch.name) {
|
||||
+ return false;
|
||||
// Discard the result if a tab-to-search result was added already.
|
||||
if (!state.canAddTabToSearch) {
|
||||
return false;
|
@@ -1,12 +0,0 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs b/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs
|
||||
index c0d2b04ff869c4ad193d71aa19949d0e1fefe5ea..e5d054bf583a10fd96a94096cfe3752beb97d2ab 100644
|
||||
--- a/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs
|
||||
@@ -845,6 +845,7 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
|
||||
}
|
||||
|
||||
if (result.providerName == lazy.UrlbarProviderTabToSearch.name) {
|
||||
+ return false;
|
||||
// Discard the result if a tab-to-search result was added already.
|
||||
if (!state.canAddTabToSearch) {
|
||||
return false;
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs b/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs
|
||||
index 815734d9a5a589174ac33cb15ff9988d13e78b8c..adbd1e99987a92c9b79af8bcde204543e46e181f 100644
|
||||
index ad971f090bdaba2865cf1fac2840b1f553d2630c..a9e676e43d35b617eebd5a67c8653397b7c0c6bf 100644
|
||||
--- a/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs
|
||||
@@ -40,11 +40,13 @@ function defaultQuery(conditions = "") {
|
||||
@@ -26,7 +26,7 @@ index 815734d9a5a589174ac33cb15ff9988d13e78b8c..adbd1e99987a92c9b79af8bcde204543
|
||||
h.visit_count, h.typed,
|
||||
0, t.open_count,
|
||||
:matchBehavior, :searchBehavior, NULL)
|
||||
@@ -1114,11 +1116,13 @@ Search.prototype = {
|
||||
@@ -1116,11 +1118,13 @@ Search.prototype = {
|
||||
? lazy.PlacesUtils.toDate(lastVisitPRTime).getTime()
|
||||
: undefined;
|
||||
let tabGroup = row.getResultByName("groupId");
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs
|
||||
index ec5575d8990ee431729d044953924d3a8b79d665..376d68f3a30bc75ca19bba5efc97fe923ab0e49e 100644
|
||||
index b3608bb8b851979b893da9c83e86d08b54288047..021ce0b80015256767b88132e99c67fa8ddfd2c4 100644
|
||||
--- a/browser/components/urlbar/UrlbarView.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarView.sys.mjs
|
||||
@@ -609,7 +609,7 @@ export class UrlbarView {
|
||||
@@ -11,7 +11,7 @@ index ec5575d8990ee431729d044953924d3a8b79d665..376d68f3a30bc75ca19bba5efc97fe92
|
||||
// Try to reuse the cached top-sites context. If it's not cached, then
|
||||
// there will be a gap of time between when the input is focused and
|
||||
// when the view opens that can be perceived as flicker.
|
||||
@@ -1325,7 +1325,7 @@ export class UrlbarView {
|
||||
@@ -1333,7 +1333,7 @@ export class UrlbarView {
|
||||
includeHiddenExposures: true,
|
||||
});
|
||||
let canBeVisible =
|
||||
@@ -20,7 +20,7 @@ index ec5575d8990ee431729d044953924d3a8b79d665..376d68f3a30bc75ca19bba5efc97fe92
|
||||
if (result.isHiddenExposure) {
|
||||
if (canBeVisible) {
|
||||
this.controller.engagementEvent.addExposure(
|
||||
@@ -3015,7 +3015,7 @@ export class UrlbarView {
|
||||
@@ -3061,7 +3061,7 @@ export class UrlbarView {
|
||||
}
|
||||
|
||||
#enableOrDisableRowWrap() {
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
|
||||
index fc416c1977f9bc20ad86ecb7758056489cbc94cf..939f5ea34a914e919ebe568f8e795d7421c0abbc 100644
|
||||
index f4eca54a9638072a03b4c0e406fe14388b85db61..7f0c5f724558bdb004114f2a6bea266c94facdf9 100644
|
||||
--- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs
|
||||
+++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
|
||||
@@ -258,7 +258,7 @@ export const PREFS_CONFIG = new Map([
|
||||
@@ -260,7 +260,7 @@ export const PREFS_CONFIG = new Map([
|
||||
"showSponsoredTopSites",
|
||||
{
|
||||
title: "Show sponsored top sites",
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/modules/BrowserDOMWindow.sys.mjs b/browser/modules/BrowserDOMWindow.sys.mjs
|
||||
index 2bc4918c15b5ea80e486db66d20bb9668b9e29c0..3800a3807f11c5f65ce0d602a775f95037f5dcf8 100644
|
||||
index 534d23b3e66176ea77f3ef577bf9630626948b9d..752e229bbe725ae394b7648adb949635f2bd70e4 100644
|
||||
--- a/browser/modules/BrowserDOMWindow.sys.mjs
|
||||
+++ b/browser/modules/BrowserDOMWindow.sys.mjs
|
||||
@@ -362,7 +362,7 @@ export class BrowserDOMWindow {
|
||||
@@ -374,7 +374,7 @@ export class BrowserDOMWindow {
|
||||
// Passing a null-URI to only create the content window,
|
||||
// and pass true for aSkipLoad to prevent loading of
|
||||
// about:blank
|
||||
@@ -11,7 +11,7 @@ index 2bc4918c15b5ea80e486db66d20bb9668b9e29c0..3800a3807f11c5f65ce0d602a775f950
|
||||
null,
|
||||
aParams,
|
||||
aWhere,
|
||||
@@ -370,6 +370,10 @@ export class BrowserDOMWindow {
|
||||
@@ -382,6 +382,10 @@ export class BrowserDOMWindow {
|
||||
aName,
|
||||
true
|
||||
);
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/modules/ExtensionsUI.sys.mjs b/browser/modules/ExtensionsUI.sys.mjs
|
||||
index a31179ef7986e1290aef8af58d1f82e23e55fcbe..4adaa921ce5fce8155cd98aa0e7a2b0b6d44ac1b 100644
|
||||
index 3302b1e9a66c8495e1a627b33488b952e8ef72b1..1de6ee8b59595da4acbb91bc625cd380be32845a 100644
|
||||
--- a/browser/modules/ExtensionsUI.sys.mjs
|
||||
+++ b/browser/modules/ExtensionsUI.sys.mjs
|
||||
@@ -466,7 +466,7 @@ export var ExtensionsUI = {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/modules/URILoadingHelper.sys.mjs b/browser/modules/URILoadingHelper.sys.mjs
|
||||
index 14bf18132eaee8a0c8fe6e108ac423de91a7d3e2..fa616654fdf8a29d59889227780a98f0f9dc9a20 100644
|
||||
index ce594b69f55f9b9245a56fe8c962cf8a83cfe9a1..f3b99524f49f5a624c2fc213257a911862cd70c2 100644
|
||||
--- a/browser/modules/URILoadingHelper.sys.mjs
|
||||
+++ b/browser/modules/URILoadingHelper.sys.mjs
|
||||
@@ -516,7 +516,7 @@ export const URILoadingHelper = {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/BuiltInThemeConfig.sys.mjs b/browser/themes/BuiltInThemeConfig.sys.mjs
|
||||
index a5361f1f0ec57f575f8d76e118ff762dc7547501..db5c5eb2059b4ceef3911fd807bf985408859d1a 100644
|
||||
index 28b254d5757caf35c4ba755ef4cfed44bab5af00..660f517e0e3342970c6e30837fcf4d0adf360777 100644
|
||||
--- a/browser/themes/BuiltInThemeConfig.sys.mjs
|
||||
+++ b/browser/themes/BuiltInThemeConfig.sys.mjs
|
||||
@@ -33,11 +33,4 @@ export const BuiltInThemeConfig = new Map([
|
||||
|
@@ -1,31 +1,31 @@
|
||||
diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css
|
||||
index 714e465f6d5bb28fc0c9517013ce7f9961bd0ace..8d739cb6e0cee93d994b17f7e3451fb3fcf11ed7 100644
|
||||
index dadb198cbf968dc622d2d0ee6c754f3541c052a2..5b7d17d8705c7cfddaee04c90d342bd705338a18 100644
|
||||
--- a/browser/themes/linux/browser.css
|
||||
+++ b/browser/themes/linux/browser.css
|
||||
@@ -42,7 +42,8 @@
|
||||
-moz-default-appearance: -moz-window-decorations;
|
||||
appearance: auto;
|
||||
@@ -43,7 +43,8 @@
|
||||
-moz-default-appearance: -moz-window-decorations;
|
||||
appearance: auto;
|
||||
|
||||
- #navigator-toolbox,
|
||||
- #navigator-toolbox,
|
||||
+ #zen-main-app-wrapper,
|
||||
+ #zen-browser-background,
|
||||
dialog::backdrop {
|
||||
border-top-left-radius: env(-moz-gtk-csd-titlebar-radius);
|
||||
border-top-right-radius: env(-moz-gtk-csd-titlebar-radius);
|
||||
@@ -50,13 +51,14 @@
|
||||
dialog::backdrop {
|
||||
border-top-left-radius: env(-moz-gtk-csd-titlebar-radius);
|
||||
border-top-right-radius: env(-moz-gtk-csd-titlebar-radius);
|
||||
@@ -51,13 +52,14 @@
|
||||
|
||||
/* stylelint-disable-next-line media-query-no-invalid */
|
||||
@media -moz-pref("widget.gtk.rounded-bottom-corners.enabled") {
|
||||
- #navigator-toolbox {
|
||||
/* stylelint-disable-next-line media-query-no-invalid */
|
||||
@media -moz-pref("widget.gtk.rounded-bottom-corners.enabled") {
|
||||
- #navigator-toolbox {
|
||||
+ #zen-main-app-wrapper {
|
||||
/* The body clip below covers this. */
|
||||
border-radius: 0;
|
||||
}
|
||||
/* The body clip below covers this. */
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
body,
|
||||
- dialog::backdrop {
|
||||
body,
|
||||
- dialog::backdrop {
|
||||
+ dialog::backdrop,
|
||||
+ #zen-browser-background {
|
||||
/* Use an uniform clip to allow WebRender to optimize it better */
|
||||
border-radius: env(-moz-gtk-csd-titlebar-radius);
|
||||
}
|
||||
/* Use an uniform clip to allow WebRender to optimize it better */
|
||||
border-radius: env(-moz-gtk-csd-titlebar-radius);
|
||||
}
|
||||
|
@@ -1,18 +0,0 @@
|
||||
diff --git a/browser/themes/shared/controlcenter/panel.css b/browser/themes/shared/controlcenter/panel.css
|
||||
index d0bc0e89142ef8d6090f1b270a0193ac8899c41f..cb16ab639c675433b2bfbcee11def5428c41afb3 100644
|
||||
--- a/browser/themes/shared/controlcenter/panel.css
|
||||
+++ b/browser/themes/shared/controlcenter/panel.css
|
||||
@@ -10,11 +10,11 @@
|
||||
#identity-popup,
|
||||
#permission-popup,
|
||||
#protections-popup {
|
||||
- --popup-width: 30.81em;
|
||||
+ --popup-width: 28.81em;
|
||||
/* Set default fill for icons in the identity popup.
|
||||
Individual icons can override this. */
|
||||
fill: currentColor;
|
||||
- --horizontal-padding: calc(var(--arrowpanel-menuitem-padding-inline) * 2);
|
||||
+ --horizontal-padding: 0;
|
||||
--vertical-section-padding: 0.9em;
|
||||
--height-offset: 0px;
|
||||
font: menu;
|
@@ -1,10 +0,0 @@
|
||||
diff --git a/browser/themes/shared/light-dark-overrides.css b/browser/themes/shared/light-dark-overrides.css
|
||||
index 8b10da7c3ccbbfca30f77e2b7602794dccbf306d..f9188accee0e02d3ef6944b155da613fa6bd335d 100644
|
||||
--- a/browser/themes/shared/light-dark-overrides.css
|
||||
+++ b/browser/themes/shared/light-dark-overrides.css
|
||||
@@ -5,5 +5,4 @@
|
||||
#urlbar {
|
||||
--urlbar-box-bgcolor: var(--toolbar-field-focus-background-color);
|
||||
--urlbar-box-focus-bgcolor: var(--button-background-color);
|
||||
- --urlbar-box-hover-bgcolor: var(--button-background-color-hover);
|
||||
}
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css
|
||||
index 79a95268e5..3a9fe04d6a 100644
|
||||
index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a1e768135 100644
|
||||
--- a/browser/themes/shared/tabbrowser/tabs.css
|
||||
+++ b/browser/themes/shared/tabbrowser/tabs.css
|
||||
@@ -19,7 +19,7 @@
|
||||
@@ -23,7 +23,7 @@ index 79a95268e5..3a9fe04d6a 100644
|
||||
--tab-selected-bgcolor: var(--toolbar-bgcolor);
|
||||
--tab-selected-color-scheme: var(--toolbar-color-scheme);
|
||||
&[lwt-tab-selected="light"] {
|
||||
@@ -251,7 +251,6 @@
|
||||
@@ -255,7 +255,6 @@
|
||||
}
|
||||
|
||||
:root:not([uidensity="compact"], [sidebar-expand-on-hover]) &[pinned] {
|
||||
@@ -31,7 +31,7 @@ index 79a95268e5..3a9fe04d6a 100644
|
||||
}
|
||||
|
||||
&:is([selected], [multiselected]) {
|
||||
@@ -265,6 +264,7 @@
|
||||
@@ -269,6 +268,7 @@
|
||||
border-radius: inherit;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
@@ -39,7 +39,7 @@ index 79a95268e5..3a9fe04d6a 100644
|
||||
|
||||
&::before {
|
||||
position: absolute;
|
||||
@@ -464,14 +464,11 @@
|
||||
@@ -468,14 +468,11 @@
|
||||
.tab-icon-image {
|
||||
-moz-context-properties: fill, stroke;
|
||||
fill: currentColor;
|
||||
@@ -55,7 +55,7 @@ index 79a95268e5..3a9fe04d6a 100644
|
||||
opacity: 0.5;
|
||||
/* Fade the favicon out */
|
||||
transition-property: filter, opacity;
|
||||
@@ -488,10 +485,6 @@
|
||||
@@ -492,10 +489,6 @@
|
||||
/* stylelint-disable-next-line media-query-no-invalid */
|
||||
@media -moz-pref("browser.tabs.fadeOutExplicitlyUnloadedTabs") {
|
||||
&[pending][discarded] {
|
||||
@@ -66,7 +66,7 @@ index 79a95268e5..3a9fe04d6a 100644
|
||||
opacity: 0.5;
|
||||
/* Fade the favicon out */
|
||||
transition-property: filter, opacity;
|
||||
@@ -564,7 +557,7 @@
|
||||
@@ -568,7 +561,7 @@
|
||||
z-index: 1; /* Overlay tab title */
|
||||
|
||||
#tabbrowser-tabs[orient="vertical"] & {
|
||||
@@ -75,7 +75,7 @@ index 79a95268e5..3a9fe04d6a 100644
|
||||
}
|
||||
|
||||
&[crashed] {
|
||||
@@ -572,7 +565,7 @@
|
||||
@@ -576,7 +569,7 @@
|
||||
}
|
||||
|
||||
#tabbrowser-tabs[orient="vertical"]:not([expanded]) &:not([crashed]),
|
||||
@@ -84,7 +84,7 @@ index 79a95268e5..3a9fe04d6a 100644
|
||||
&[soundplaying] {
|
||||
list-style-image: url("chrome://browser/skin/tabbrowser/tab-audio-playing-small.svg");
|
||||
}
|
||||
@@ -629,7 +622,7 @@
|
||||
@@ -633,7 +626,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ index 79a95268e5..3a9fe04d6a 100644
|
||||
&[crashed] {
|
||||
display: revert;
|
||||
}
|
||||
@@ -730,7 +723,7 @@
|
||||
@@ -734,7 +727,7 @@
|
||||
has not been added to root. There are certain scenarios when that attribute is temporarily
|
||||
removed from root such as when toggling the sidebar to expand with the toolbar button. */
|
||||
#tabbrowser-tabs[orient="horizontal"] &:not([pinned]):not([crashed]),
|
||||
@@ -102,22 +102,7 @@ index 79a95268e5..3a9fe04d6a 100644
|
||||
&:is([soundplaying], [muted], [activemedia-blocked]) {
|
||||
display: flex;
|
||||
}
|
||||
@@ -1004,20 +997,20 @@ tab-group {
|
||||
*/
|
||||
display: contents;
|
||||
|
||||
- #tabbrowser-tabs[orient="horizontal"] &[collapsed] > .tabbrowser-tab {
|
||||
+ #tabbrowser-tabs[orient="horizontal"] &[collapsed] .tab-group-container > .tabbrowser-tab {
|
||||
min-width: 0 !important;
|
||||
max-width: 0 !important;
|
||||
padding: 0;
|
||||
overflow-clip-margin: 0;
|
||||
}
|
||||
|
||||
- #tabbrowser-tabs[orient="vertical"] &[collapsed] > .tabbrowser-tab {
|
||||
+ #tabbrowser-tabs[orient="vertical"] &[collapsed] .tab-group-container > .tabbrowser-tab {
|
||||
display: none;
|
||||
}
|
||||
@@ -1039,7 +1032,7 @@ tab-group {
|
||||
}
|
||||
|
||||
#tabbrowser-tabs[orient="vertical"][expanded] {
|
||||
@@ -126,7 +111,7 @@ index 79a95268e5..3a9fe04d6a 100644
|
||||
&[movingtab][movingtab-addToGroup]:not([movingtab-createGroup], [movingtab-ungroup]) .tabbrowser-tab:is(:active, [multiselected]) {
|
||||
margin-inline-start: var(--space-medium);
|
||||
}
|
||||
@@ -1370,7 +1363,7 @@ tab-group {
|
||||
@@ -1457,7 +1450,7 @@ tab-group {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,7 +120,7 @@ index 79a95268e5..3a9fe04d6a 100644
|
||||
#vertical-tabs-newtab-button {
|
||||
appearance: none;
|
||||
min-height: var(--tab-min-height);
|
||||
@@ -1381,7 +1374,7 @@ tab-group {
|
||||
@@ -1468,7 +1461,7 @@ tab-group {
|
||||
margin-inline: var(--tab-inner-inline-margin);
|
||||
|
||||
#tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text {
|
||||
@@ -144,7 +129,7 @@ index 79a95268e5..3a9fe04d6a 100644
|
||||
}
|
||||
|
||||
&:hover {
|
||||
@@ -1405,7 +1398,7 @@ tab-group {
|
||||
@@ -1492,7 +1485,7 @@ tab-group {
|
||||
* flex container. #tabs-newtab-button is a child of the arrowscrollbox where
|
||||
* we don't want a gap (between tabs), so we have to add some margin.
|
||||
*/
|
||||
@@ -153,7 +138,7 @@ index 79a95268e5..3a9fe04d6a 100644
|
||||
margin-block: var(--tab-block-margin);
|
||||
}
|
||||
|
||||
@@ -1600,7 +1593,6 @@ tab-group {
|
||||
@@ -1687,7 +1680,6 @@ tab-group {
|
||||
|
||||
&:not([expanded]) {
|
||||
.tabbrowser-tab[pinned] {
|
||||
@@ -161,7 +146,7 @@ index 79a95268e5..3a9fe04d6a 100644
|
||||
}
|
||||
|
||||
.tab-background {
|
||||
@@ -1760,7 +1752,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
|
||||
@@ -1847,7 +1839,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
|
||||
list-style-image: url(chrome://global/skin/icons/plus.svg);
|
||||
}
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/themes/shared/toolbarbuttons.css b/browser/themes/shared/toolbarbuttons.css
|
||||
index a8df2d5cd8b3009daa033a9bf06908be78adeb3b..8c47fd0056599c539eb309eb90b465921400aae4 100644
|
||||
index 1f91bda717979f3e81d2f6b243336078d97c5cb9..4232ec4761cb15ff96e9b18810b05f548a6f5fd9 100644
|
||||
--- a/browser/themes/shared/toolbarbuttons.css
|
||||
+++ b/browser/themes/shared/toolbarbuttons.css
|
||||
@@ -254,7 +254,7 @@ toolbar .toolbaritem-combined-buttons > separator {
|
||||
@@ -256,7 +256,7 @@ toolbar .toolbaritem-combined-buttons > separator {
|
||||
#nav-bar-overflow-button {
|
||||
list-style-image: url("chrome://global/skin/icons/chevron.svg");
|
||||
|
||||
@@ -11,7 +11,7 @@ index a8df2d5cd8b3009daa033a9bf06908be78adeb3b..8c47fd0056599c539eb309eb90b46592
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -464,7 +464,7 @@ toolbarbutton.bookmark-item:not(.subviewbutton) {
|
||||
@@ -466,7 +466,7 @@ toolbarbutton.bookmark-item:not(.subviewbutton) {
|
||||
*/
|
||||
align-items: stretch;
|
||||
> .toolbarbutton-icon {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/shared/urlbarView.css b/browser/themes/shared/urlbarView.css
|
||||
index 28608327793ff564d19536e1086660b040c462d4..6714457b1de5928fff19f679eb0388f40e343186 100644
|
||||
index 428ce749239be2a54c86e0feff123772d1a1d697..9f33c10add207c7971c07743147a458e19b469bb 100644
|
||||
--- a/browser/themes/shared/urlbarView.css
|
||||
+++ b/browser/themes/shared/urlbarView.css
|
||||
@@ -20,7 +20,7 @@
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css
|
||||
index 587e189d9c403c01463c4167de8c21d3533351cb..5edbc05b905692b29c9e292533616c9bc03cb5fe 100644
|
||||
index 4f960ae35aa69a1d1ce4ad368f5bae365229bbdf..3a17985b3376eb8a966cd85324d86d00d891bf0f 100644
|
||||
--- a/browser/themes/windows/browser.css
|
||||
+++ b/browser/themes/windows/browser.css
|
||||
@@ -31,7 +31,6 @@
|
||||
@@ -10,7 +10,7 @@ index 587e189d9c403c01463c4167de8c21d3533351cb..5edbc05b905692b29c9e292533616c9b
|
||||
}
|
||||
|
||||
/* Using a semitransparent background preserves the tinting from the backdrop.
|
||||
@@ -63,7 +62,7 @@
|
||||
@@ -61,7 +60,7 @@
|
||||
|
||||
/* This is needed for Windows 10, see bug 1961257 */
|
||||
@media (-moz-windows-accent-color-in-titlebar) {
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/build/pgo/profileserver.py b/build/pgo/profileserver.py
|
||||
index 6017810c873f6be5a5d133dc9386f7cd8879e81b..6d399e0c8135d2c27157c81d75515de04c39f1d7 100755
|
||||
index faf15719a0537d7c5fc0a62afb93fa4a61605bf7..68d114fd6651b7c210aa1a58e6fcf4fa749f53b1 100755
|
||||
--- a/build/pgo/profileserver.py
|
||||
+++ b/build/pgo/profileserver.py
|
||||
@@ -18,7 +18,13 @@ from mozprofile import FirefoxProfile, Preferences
|
||||
@@ -17,7 +17,13 @@ from mozprofile import FirefoxProfile, Preferences
|
||||
from mozprofile.permissions import ServerLocations
|
||||
from mozrunner import CLI, FirefoxRunner
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp
|
||||
index 36f9681a989bf4007fa837e7c9ef332ee14e55bd..8c407b5297570aee5322515d47b0895b833e3a10 100644
|
||||
index 40da41ae4ac7d8d61c664e25bec8a74091d8b3e0..59773e80c6220115d0c51e268bb1eff0fe208010 100644
|
||||
--- a/dom/base/Document.cpp
|
||||
+++ b/dom/base/Document.cpp
|
||||
@@ -10,6 +10,7 @@
|
||||
@@ -10,7 +10,7 @@ index 36f9681a989bf4007fa837e7c9ef332ee14e55bd..8c407b5297570aee5322515d47b0895b
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <stdlib.h>
|
||||
@@ -3300,6 +3301,11 @@ void Document::FillStyleSetUserAndUASheets() {
|
||||
@@ -3306,6 +3307,11 @@ void Document::FillStyleSetUserAndUASheets() {
|
||||
styleSet.AppendStyleSheet(*sheet);
|
||||
}
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/dom/base/use_counter_metrics.yaml b/dom/base/use_counter_metrics.yaml
|
||||
index c3830ede7637a047ffa285c0e8e281befd933f18..ddc8be98dc969c54774682361bc1f191754a4609 100644
|
||||
index c8dd3cca62e788eed5e5df5294fa7c9f3a2e9492..91e6281f4eb1c4c6aa1dddd8a0f06aa0c15a71ab 100644
|
||||
--- a/dom/base/use_counter_metrics.yaml
|
||||
+++ b/dom/base/use_counter_metrics.yaml
|
||||
@@ -21765,6 +21765,22 @@ use.counter.css.page:
|
||||
@@ -21460,6 +21460,22 @@ use.counter.css.page:
|
||||
send_in_pings:
|
||||
- use-counters
|
||||
|
||||
@@ -25,7 +25,7 @@ index c3830ede7637a047ffa285c0e8e281befd933f18..ddc8be98dc969c54774682361bc1f191
|
||||
css_transform_origin:
|
||||
type: counter
|
||||
description: >
|
||||
@@ -33752,6 +33768,22 @@ use.counter.css.doc:
|
||||
@@ -33447,6 +33463,22 @@ use.counter.css.doc:
|
||||
send_in_pings:
|
||||
- use-counters
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/dom/html/HTMLMediaElement.cpp b/dom/html/HTMLMediaElement.cpp
|
||||
index ee151115e3db05b4e92c3f68d724bd785f4e4669..b8cfdd0862af690ebaff833049bdd5b48068f34d 100644
|
||||
index 2becc049b5a0ee8544819b08d65f1df0a4c23658..6e7a05f135c6ab2c4955a679c1a4ac0e9aae7592 100644
|
||||
--- a/dom/html/HTMLMediaElement.cpp
|
||||
+++ b/dom/html/HTMLMediaElement.cpp
|
||||
@@ -453,6 +453,7 @@ class HTMLMediaElement::MediaControlKeyListener final
|
||||
@@ -10,7 +10,7 @@ index ee151115e3db05b4e92c3f68d724bd785f4e4669..b8cfdd0862af690ebaff833049bdd5b4
|
||||
NotifyAudibleStateChanged(mIsOwnerAudible
|
||||
? MediaAudibleState::eAudible
|
||||
: MediaAudibleState::eInaudible);
|
||||
@@ -7007,6 +7008,9 @@ void HTMLMediaElement::FireTimeUpdate(TimeupdateType aType) {
|
||||
@@ -7034,6 +7035,9 @@ void HTMLMediaElement::FireTimeUpdate(TimeupdateType aType) {
|
||||
QueueTask(std::move(runner));
|
||||
mQueueTimeUpdateRunnerTime = TimeStamp::Now();
|
||||
mLastCurrentTime = CurrentTime();
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/gfx/wr/webrender/src/picture.rs b/gfx/wr/webrender/src/picture.rs
|
||||
index 2e74dbbc23ed56b469000913ae24addc1a519e60..ff94049a68c75ab61e4792ec37720a340776acef 100644
|
||||
index e860f36ef2b42a7377047c64dd4f9405f26b3249..8057172482aa042e9951fc7367891a66eed75f5e 100644
|
||||
--- a/gfx/wr/webrender/src/picture.rs
|
||||
+++ b/gfx/wr/webrender/src/picture.rs
|
||||
@@ -8045,7 +8045,12 @@ fn get_relative_scale_offset(
|
||||
@@ -8112,7 +8112,12 @@ fn get_relative_scale_offset(
|
||||
CoordinateSpaceMapping::Local => ScaleOffset::identity(),
|
||||
CoordinateSpaceMapping::ScaleOffset(scale_offset) => scale_offset,
|
||||
CoordinateSpaceMapping::Transform(m) => {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/layout/base/nsStyleSheetService.h b/layout/base/nsStyleSheetService.h
|
||||
index 8c49b338bf8e6830874ace9a08e8c0713167ee58..115bf09314970fd2fe79793e9cf8e0c40eb0459b 100644
|
||||
index 83fc829aad19f8b80692e67bddb781778fbc4f8d..04806a1f51686a82c1dc2555dae86a4397b181fb 100644
|
||||
--- a/layout/base/nsStyleSheetService.h
|
||||
+++ b/layout/base/nsStyleSheetService.h
|
||||
@@ -50,6 +50,8 @@ class nsStyleSheetService final : public nsIStyleSheetService,
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/layout/generic/nsIFrame.cpp b/layout/generic/nsIFrame.cpp
|
||||
index bd4a77009b8f1a791063c6039dabc8b7527a2504..214f10d59ebdd27e04e43e9dc96e55afbfe0a902 100644
|
||||
index e13628eccc51f0e81fc1404b061840d816502757..85cca51cf37db83f6e79c6e6af080646d2c49670 100644
|
||||
--- a/layout/generic/nsIFrame.cpp
|
||||
+++ b/layout/generic/nsIFrame.cpp
|
||||
@@ -11897,6 +11897,11 @@ gfx::Matrix nsIFrame::ComputeWidgetTransform() const {
|
||||
@@ -11901,6 +11901,11 @@ gfx::Matrix nsIFrame::ComputeWidgetTransform() const {
|
||||
gfx::Matrix4x4 matrix = nsStyleTransformMatrix::ReadTransforms(
|
||||
uiReset->mMozWindowTransform, refBox, float(appUnitsPerDevPixel));
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/layout/style/nsStyleStruct.cpp b/layout/style/nsStyleStruct.cpp
|
||||
index c4f9fd72246a42efcb6b30219bd2af9b0b6f9c99..6ff1d3acbf24f8fdc2ae9545dc52f0f826557022 100644
|
||||
index 4b979fc1f9d0986f5382cab0c39bf99ed34ef39e..90f67c73c13fbfdcfff86125c6d7258850ca62b0 100644
|
||||
--- a/layout/style/nsStyleStruct.cpp
|
||||
+++ b/layout/style/nsStyleStruct.cpp
|
||||
@@ -3234,6 +3234,9 @@ nsStyleUIReset::nsStyleUIReset()
|
||||
@@ -3237,6 +3237,9 @@ nsStyleUIReset::nsStyleUIReset()
|
||||
mWindowShadow(StyleWindowShadow::Auto),
|
||||
mWindowOpacity(1.0),
|
||||
mMozWindowInputRegionMargin(StyleLength::Zero()),
|
||||
@@ -12,7 +12,7 @@ index c4f9fd72246a42efcb6b30219bd2af9b0b6f9c99..6ff1d3acbf24f8fdc2ae9545dc52f0f8
|
||||
mTransitions(
|
||||
nsStyleAutoArray<StyleTransition>::WITH_SINGLE_INITIAL_ELEMENT),
|
||||
mTransitionTimingFunctionCount(1),
|
||||
@@ -3277,6 +3280,7 @@ nsStyleUIReset::nsStyleUIReset(const nsStyleUIReset& aSource)
|
||||
@@ -3281,6 +3284,7 @@ nsStyleUIReset::nsStyleUIReset(const nsStyleUIReset& aSource)
|
||||
mWindowOpacity(aSource.mWindowOpacity),
|
||||
mMozWindowInputRegionMargin(aSource.mMozWindowInputRegionMargin),
|
||||
mMozWindowTransform(aSource.mMozWindowTransform),
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/layout/style/nsStyleStruct.h b/layout/style/nsStyleStruct.h
|
||||
index 4811ceab129cd2dcbc65de52c2978bc5735aa486..8ed6eb405cf8843811d8d9721532ab646dc2d759 100644
|
||||
index 3236244280edaae2bbe4440e76da3455015ab722..3474d4bcfab2944aae9635250350b674a8ed1c42 100644
|
||||
--- a/layout/style/nsStyleStruct.h
|
||||
+++ b/layout/style/nsStyleStruct.h
|
||||
@@ -2026,6 +2026,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleUIReset {
|
||||
@@ -2033,6 +2033,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleUIReset {
|
||||
// The margin of the window region that should be transparent to events.
|
||||
mozilla::StyleLength mMozWindowInputRegionMargin;
|
||||
mozilla::StyleTransform mMozWindowTransform;
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/layout/style/test/ListCSSProperties.cpp b/layout/style/test/ListCSSProperties.cpp
|
||||
index b6a881b037a3720991f8097903e859dfc72012c1..8917a8cc23b97e37b4accaaf0d6c2876b36594af 100644
|
||||
index df06ffac358c1b245c84432aa6f143f9c5806029..0bca4b9b40b3b030c54fc36c659966dd3a8894f7 100644
|
||||
--- a/layout/style/test/ListCSSProperties.cpp
|
||||
+++ b/layout/style/test/ListCSSProperties.cpp
|
||||
@@ -108,6 +108,7 @@ const char* gInaccessibleProperties[] = {
|
||||
@@ -109,6 +109,7 @@ const char* gInaccessibleProperties[] = {
|
||||
"-moz-window-opacity", // chrome-only internal properties
|
||||
"-moz-window-transform", // chrome-only internal properties
|
||||
"-moz-window-shadow", // chrome-only internal properties
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml
|
||||
index f689389fbc0382f10b7d146273efffdd1db4fd41..955f8e6edda62832ce5aeafd16ed58f5c94e312b 100644
|
||||
index 30a19900c13cd0720008980202077af1df705856..136e3a13b810215be7a102786dce54651b38829d 100644
|
||||
--- a/modules/libpref/init/StaticPrefList.yaml
|
||||
+++ b/modules/libpref/init/StaticPrefList.yaml
|
||||
@@ -19099,6 +19099,7 @@
|
||||
@@ -19119,6 +19119,7 @@
|
||||
mirror: always
|
||||
#endif
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
|
||||
index bff4fa68bbb4f7937632395351a0f8800815f862..d823accd1227635b555af2ca710645244d53aa12 100644
|
||||
index 68a0bd6b50b804745b052e1921f4f6120354443e..23e7d03a6796af39dc2d39733b16548e73f8b10f 100644
|
||||
--- a/modules/libpref/moz.build
|
||||
+++ b/modules/libpref/moz.build
|
||||
@@ -93,6 +93,7 @@ pref_groups = [
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/netwerk/protocol/http/moz.build b/netwerk/protocol/http/moz.build
|
||||
index af31c6f5255f0bffd2938bc9ac2d86315f3428ff..8ca3a799302d1ae5d515c0a1616151ab29a5657b 100644
|
||||
index 906a2fcdcc2684ff4326aeb7f22f3441add7e56c..37e16b62d012498c66bc3a38f4ce48972298b6be 100644
|
||||
--- a/netwerk/protocol/http/moz.build
|
||||
+++ b/netwerk/protocol/http/moz.build
|
||||
@@ -224,7 +224,7 @@ LOCAL_INCLUDES += [
|
||||
@@ -225,7 +225,7 @@ LOCAL_INCLUDES += [
|
||||
"/netwerk/url-classifier",
|
||||
]
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/toolkit/actors/PictureInPictureChild.sys.mjs b/toolkit/actors/PictureInPictureChild.sys.mjs
|
||||
index 7c383a8112d221d029b64fbb7432abc8ac720d28..e853f1a16149b6010377191b9da560a95a017acb 100644
|
||||
index 21b6295bf46336a70ed0a3797cf3210c8c0cb545..5a7018f1f923e977f63fae296ffdff1730ad1218 100644
|
||||
--- a/toolkit/actors/PictureInPictureChild.sys.mjs
|
||||
+++ b/toolkit/actors/PictureInPictureChild.sys.mjs
|
||||
@@ -292,6 +292,7 @@ export class PictureInPictureLauncherChild extends JSWindowActorChild {
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/toolkit/content/widgets/infobar.css b/toolkit/content/widgets/infobar.css
|
||||
index 4547df3f3573e95e616c803bc37c7da61bbe6b58..b0540c058d7d31ce929319e5ad9381889b9b6c60 100644
|
||||
index e2272e913ad0215fa733c5fa01d180ccfa919abc..f6da9321fcdc70ab4a81f01787c3d2a55057fda9 100644
|
||||
--- a/toolkit/content/widgets/infobar.css
|
||||
+++ b/toolkit/content/widgets/infobar.css
|
||||
@@ -97,3 +97,18 @@ strong {
|
||||
@@ -102,3 +102,18 @@ strong {
|
||||
:host([type="system"]) .content {
|
||||
margin-inline-start: 0;
|
||||
}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/toolkit/modules/AppConstants.sys.mjs b/toolkit/modules/AppConstants.sys.mjs
|
||||
index a794e82288d30c979f2d2798bded49fb4dd3118b..cd1875dc048607447e25d30341052a6930d1c08f 100644
|
||||
index 5465ed3fb01e4214029b44f338d5e1e1580c3aab..a4d6b42916014d5e0f643b35a7b4feb281f59023 100644
|
||||
--- a/toolkit/modules/AppConstants.sys.mjs
|
||||
+++ b/toolkit/modules/AppConstants.sys.mjs
|
||||
@@ -172,6 +172,8 @@ export var AppConstants = Object.freeze({
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/toolkit/modules/LightweightThemeConsumer.sys.mjs b/toolkit/modules/LightweightThemeConsumer.sys.mjs
|
||||
index c42269ca92e21d1058046d7247e19dc5fde4c1c0..b12d38aa8999d4c2c4c7218b299cd9ed1566fc7d 100644
|
||||
index 1d16b3f191a53b6877122086de9bba1fbcaa71f4..64df5577aac095ddd3d9a381bf118496bf279276 100644
|
||||
--- a/toolkit/modules/LightweightThemeConsumer.sys.mjs
|
||||
+++ b/toolkit/modules/LightweightThemeConsumer.sys.mjs
|
||||
@@ -31,7 +31,7 @@ const toolkitVariableMap = [
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/toolkit/modules/moz.build b/toolkit/modules/moz.build
|
||||
index 4c45be797e2cca88d302f98e765545b13da3f0dc..31f2694a8cfb73c4f31b819e4362b46bdb22faef 100644
|
||||
index 8c020ddc23afd11b2592bfd98b3131613b084202..045be1fa401d24932d0fe4197a9dc0d7a63bcd20 100644
|
||||
--- a/toolkit/modules/moz.build
|
||||
+++ b/toolkit/modules/moz.build
|
||||
@@ -280,6 +280,7 @@ for var in (
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/toolkit/moz.configure b/toolkit/moz.configure
|
||||
index 77069eaacf383214e705f04733cd4f5db1fca1e8..9abbd6a9ba58759a33f9e9a0bea934a5fe022893 100644
|
||||
index 87abe60e93bc7dfb84052c9735ddddc75b74c229..f4649e9d48a2a2892c48ce536da105dcfa72d73b 100644
|
||||
--- a/toolkit/moz.configure
|
||||
+++ b/toolkit/moz.configure
|
||||
@@ -22,6 +22,7 @@ def check_moz_app_id(moz_app_id, build_project):
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/toolkit/mozapps/extensions/AddonManager.sys.mjs b/toolkit/mozapps/extensions/AddonManager.sys.mjs
|
||||
index e09ea87de86b06d1b505e59d4f0c4a090533ca71..9e8291ee5a83a686f3a129c3c6872bb7c84fdcd9 100644
|
||||
index 14b57fcca58409671361ac5a5d753d8b71235ea5..e75a8939c4b1c574213ed3e2db6377de99218a1f 100644
|
||||
--- a/toolkit/mozapps/extensions/AddonManager.sys.mjs
|
||||
+++ b/toolkit/mozapps/extensions/AddonManager.sys.mjs
|
||||
@@ -1221,12 +1221,12 @@ var AddonManagerInternal = {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/toolkit/mozapps/extensions/content/aboutaddons.css b/toolkit/mozapps/extensions/content/aboutaddons.css
|
||||
index d8f84dcbf83d4768b9b8174ccf07706702d690a5..afce2630bf64a262b0f6a9e752db5c745167bf6a 100644
|
||||
index d8ccfe4b25f8139127c5ef48e739d79d960a7c91..93c6f3b6ec84be3e2f0081d5f7257488f47c7c26 100644
|
||||
--- a/toolkit/mozapps/extensions/content/aboutaddons.css
|
||||
+++ b/toolkit/mozapps/extensions/content/aboutaddons.css
|
||||
@@ -105,6 +105,13 @@ h2 {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/toolkit/themes/shared/tree/tree.css b/toolkit/themes/shared/tree/tree.css
|
||||
index bd743c2b05729644637c172d973ad057387bc5ce..58589094ff68d1972a32fe4f4087af2c0211ee97 100644
|
||||
index c50cab31785eecece2bf061b9770ba90c6ed0181..dfbd227ddab802d927b6897454a86fcd7252e96f 100644
|
||||
--- a/toolkit/themes/shared/tree/tree.css
|
||||
+++ b/toolkit/themes/shared/tree/tree.css
|
||||
@@ -12,6 +12,7 @@
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/widget/cocoa/nsCocoaWindow.mm b/widget/cocoa/nsCocoaWindow.mm
|
||||
index 225815aca04da2298605a732b25a3ebe17c109bf..3dcf1dfc5cf6c76380c41c37b778bc4160720960 100644
|
||||
index f753a7a8bf132044060bdcd7bf14b134ca785f4a..ec1f2b26ea2bc178c66c386dc078d6a8f2ec3423 100644
|
||||
--- a/widget/cocoa/nsCocoaWindow.mm
|
||||
+++ b/widget/cocoa/nsCocoaWindow.mm
|
||||
@@ -7380,7 +7380,7 @@ static NSMutableSet* gSwizzledFrameViewClasses = nil;
|
||||
@@ -7398,7 +7398,7 @@ static NSMutableSet* gSwizzledFrameViewClasses = nil;
|
||||
|
||||
// Returns an autoreleased NSImage.
|
||||
static NSImage* GetMenuMaskImage() {
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/xpfe/appshell/AppWindow.cpp b/xpfe/appshell/AppWindow.cpp
|
||||
index 3efb67402877b3af707e67a9e431415c20d77a58..5dd20250aacde2d082f09deae0ad846fed90a8d6 100644
|
||||
index ddd7fb3ff3008b4761ddc63b32c7c265ada024df..d18cddc6e00bc68789435f47fd505e04a4789383 100644
|
||||
--- a/xpfe/appshell/AppWindow.cpp
|
||||
+++ b/xpfe/appshell/AppWindow.cpp
|
||||
@@ -1867,7 +1867,7 @@ nsresult AppWindow::MaybeSaveEarlyWindowPersistentValues(
|
||||
@@ -1880,7 +1880,7 @@ nsresult AppWindow::MaybeSaveEarlyWindowPersistentValues(
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -604,10 +604,10 @@ var gZenCompactModeManager = {
|
||||
}, this.HOVER_HACK_DELAY);
|
||||
};
|
||||
|
||||
target.addEventListener('mouseenter', onEnter);
|
||||
target.addEventListener('mouseover', onEnter);
|
||||
target.addEventListener('dragover', onEnter);
|
||||
|
||||
target.addEventListener('mouseleave', onLeave);
|
||||
target.addEventListener('mouseout', onLeave);
|
||||
target.addEventListener('dragleave', onLeave);
|
||||
}
|
||||
|
||||
|
@@ -13,6 +13,9 @@
|
||||
<html:div class="tab-group-container">
|
||||
<html:div class="zen-tab-group-start" />
|
||||
</html:div>
|
||||
<vbox class="tab-group-overflow-count-container" pack="center">
|
||||
<label class="tab-group-overflow-count" role="button" />
|
||||
</vbox>
|
||||
`;
|
||||
|
||||
static rawIcon = new DOMParser().parseFromString(
|
||||
@@ -133,11 +136,6 @@
|
||||
return activeGroups;
|
||||
}
|
||||
|
||||
// Dont expand the folder when the user selects a tab in it
|
||||
on_TabSelect() {
|
||||
this.collapsed = this.hasAttribute('has-active');
|
||||
}
|
||||
|
||||
rename() {
|
||||
gZenVerticalTabsManager.renameTabStart({
|
||||
target: this.labelElement,
|
||||
|
@@ -31,7 +31,7 @@
|
||||
|
||||
const ZEN_MAX_SUBFOLDERS = Services.prefs.getIntPref('zen.folders.max-subfolders');
|
||||
|
||||
class nsZenFolders extends nsZenPreloadedFeature {
|
||||
class nsZenFolders extends nsZenDOMOperatedFeature {
|
||||
#popup = null;
|
||||
#popupTimer = null;
|
||||
#mouseTimer = null;
|
||||
@@ -143,11 +143,11 @@
|
||||
}
|
||||
});
|
||||
|
||||
this.#popup.addEventListener('mouseenter', () => {
|
||||
this.#popup.addEventListener('mouseover', () => {
|
||||
clearTimeout(this.#popupTimer);
|
||||
});
|
||||
|
||||
this.#popup.addEventListener('mouseleave', () => {
|
||||
this.#popup.addEventListener('mouseout', () => {
|
||||
this.#popupTimer = setTimeout(() => {
|
||||
if (this.#popup.matches(':hover')) return;
|
||||
this.#popup.hidePopup();
|
||||
|
@@ -192,6 +192,8 @@ zen-folder {
|
||||
-moz-window-dragging: no-drag;
|
||||
transition: margin-inline-start 0.15s ease-in-out;
|
||||
|
||||
margin-inline-start: var(--zen-folder-indent) !important;
|
||||
|
||||
&[selected] > .tab-group-label-container::before {
|
||||
background-color: color-mix(in srgb, var(--zen-colors-border) 60%, transparent);
|
||||
}
|
||||
@@ -272,7 +274,7 @@ zen-folder {
|
||||
}
|
||||
|
||||
& svg[state='open'] {
|
||||
scale: 0.9;
|
||||
scale: 0.92;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -443,3 +445,7 @@ zen-folder {
|
||||
border-bottom-right-radius: max(calc(var(--panel-border-radius) - 4px), 4px);
|
||||
}
|
||||
}
|
||||
|
||||
.tab-group-overflow-count-container {
|
||||
display: none !important;
|
||||
}
|
||||
|
@@ -7,6 +7,7 @@
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIFile.h"
|
||||
#include "nsNetUtil.h"
|
||||
|
||||
#include "nsStyleSheetService.h"
|
||||
|
||||
|
@@ -707,7 +707,7 @@
|
||||
}
|
||||
|
||||
async savePin(pin, notifyObservers = true) {
|
||||
if (!this.#hasInitializedPins) {
|
||||
if (!this.#hasInitializedPins && !gZenUIManager.testingEnabled) {
|
||||
return;
|
||||
}
|
||||
const existingPin = this._pinsCache.find((p) => p.uuid === pin.uuid);
|
||||
@@ -1196,10 +1196,11 @@
|
||||
if (!isPinned) {
|
||||
topToNormalTabs += draggedTab.getBoundingClientRect().height;
|
||||
}
|
||||
const isGoingToPinnedTabs = translate < topToNormalTabs;
|
||||
const isGoingToPinnedTabs =
|
||||
translate < topToNormalTabs && gBrowser.pinnedTabCount - gBrowser._numZenEssentials > 0;
|
||||
const multiplier = isGoingToPinnedTabs !== isPinned ? (isGoingToPinnedTabs ? 1 : -1) : 0;
|
||||
this._isGoingToPinnedTabs = isGoingToPinnedTabs;
|
||||
if (!dropElement && gBrowser.pinnedTabCount - gBrowser._numZenEssentials > 0) {
|
||||
if (!dropElement) {
|
||||
itemsToCheck.forEach((item) => {
|
||||
item.style.transform = `translateY(${draggingTabHeight * multiplier}px)`;
|
||||
});
|
||||
|
6
src/zen/tests/ignorePrefs.json
Normal file
6
src/zen/tests/ignorePrefs.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
"zen.mods.updated-value-observer",
|
||||
"zen.mods.last-update",
|
||||
"zen.view.compact.should-enable-at-startup",
|
||||
"browser.newtabpage.activity-stream.trendingSearch.defaultSearchEngine"
|
||||
]
|
@@ -41,3 +41,12 @@ add_task(async function test_Basic_Split_Groups_Pinning() {
|
||||
ok(!group.pinned, 'The split group should be unpinned after unpinning a tab');
|
||||
});
|
||||
});
|
||||
|
||||
add_task(async function test_Basic_Unsplit_Group_Removed() {
|
||||
let group;
|
||||
await basicSplitNTabs(async (tabs) => {
|
||||
group = tabs[0].group;
|
||||
});
|
||||
ok(group, 'The split group should exist');
|
||||
ok(!group.parentNode, 'The split group should be removed from the DOM after unsplitting');
|
||||
});
|
||||
|
@@ -154,6 +154,7 @@ add_task(async function test_Welcome_Steps() {
|
||||
'The first tab group should be labeled "Zen Basics" after the welcome process'
|
||||
);
|
||||
for (const tab of gBrowser.tabs) {
|
||||
if (tab.hasAttribute('zen-empty-tab')) continue;
|
||||
if (tab.pinned) {
|
||||
if (!tab.hasAttribute('zen-essential')) {
|
||||
ok(
|
||||
|
@@ -68,6 +68,8 @@
|
||||
this.indicator.querySelector('.zen-current-workspace-indicator-name').onRenameFinished =
|
||||
this.onIndicatorRenameFinished.bind(this);
|
||||
|
||||
this.pinnedTabsContainer.scrollbox = this.scrollbox;
|
||||
|
||||
this.indicator
|
||||
.querySelector('.zen-workspaces-actions')
|
||||
.addEventListener('click', this.onActionsCommand.bind(this));
|
||||
|
@@ -6,7 +6,7 @@
|
||||
"version": {
|
||||
"product": "firefox",
|
||||
"version": "141.0.3",
|
||||
"candidate": "141.0.3"
|
||||
"candidate": "142.0"
|
||||
},
|
||||
"buildOptions": {
|
||||
"generateBranding": true
|
||||
|
Reference in New Issue
Block a user