mirror of
https://github.com/zen-browser/desktop.git
synced 2026-08-30 10:21:31 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e89bd7796e | ||
|
|
66c5931a29 |
@@ -35,7 +35,7 @@ Zen is a firefox-based browser with the aim of pushing your productivity to a ne
|
|||||||
### Firefox Versions
|
### Firefox Versions
|
||||||
|
|
||||||
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `154.0.1`!
|
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `154.0.1`!
|
||||||
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 154.0.1`!
|
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 155.0`!
|
||||||
|
|
||||||
### Contributing
|
### Contributing
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
bf4b57fd7fe94054457be7018e8e7beaf754c520
|
6b4abe0093721c1be89eb41b3fb060dd6336923d
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/.stylelintrc.js b/.stylelintrc.js
|
diff --git a/.stylelintrc.js b/.stylelintrc.js
|
||||||
index b484bf6600a7e1b8ad2aed8c8b7fe5e84cc3d023..f89712e2c13dfa0bcb48e55cd3872c67f5c98dad 100644
|
index b5f8245fa04ffb8fc82240261d63f893f4629f19..1b6ead24adbe69fcb5aeb95cfd3e7fa9662d89d8 100644
|
||||||
--- a/.stylelintrc.js
|
--- a/.stylelintrc.js
|
||||||
+++ b/.stylelintrc.js
|
+++ b/.stylelintrc.js
|
||||||
@@ -67,7 +67,7 @@ module.exports = {
|
@@ -67,7 +67,7 @@ module.exports = {
|
||||||
@@ -11,10 +11,10 @@ index b484bf6600a7e1b8ad2aed8c8b7fe5e84cc3d023..f89712e2c13dfa0bcb48e55cd3872c67
|
|||||||
{
|
{
|
||||||
ignore: ["blockless-at-rules"],
|
ignore: ["blockless-at-rules"],
|
||||||
},
|
},
|
||||||
@@ -280,7 +280,7 @@ module.exports = {
|
@@ -281,7 +281,7 @@ module.exports = {
|
||||||
"media-query-no-invalid": null,
|
|
||||||
"stylelint-plugin-mozilla/media-query-no-invalid": true,
|
"stylelint-plugin-mozilla/media-query-no-invalid": true,
|
||||||
"stylelint-plugin-mozilla/no-base-design-tokens": true,
|
"stylelint-plugin-mozilla/no-base-design-tokens": true,
|
||||||
|
"stylelint-plugin-mozilla/no-has-selector": true,
|
||||||
- "stylelint-plugin-mozilla/use-design-tokens": true,
|
- "stylelint-plugin-mozilla/use-design-tokens": true,
|
||||||
+ "stylelint-plugin-mozilla/use-design-tokens": false,
|
+ "stylelint-plugin-mozilla/use-design-tokens": false,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
|
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||||
index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2681652e5 100644
|
index 6d1885a54815d10b3a4e79f7e5acd61ab3abb159..97e07d85c69ec97baeab05aedd57bd8869254d59 100644
|
||||||
--- a/browser/components/customizableui/CustomizableUI.sys.mjs
|
--- a/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||||
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
|
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||||
@@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
@@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||||
@@ -10,7 +10,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
HomePage: "resource:///modules/HomePage.sys.mjs",
|
HomePage: "resource:///modules/HomePage.sys.mjs",
|
||||||
PanelMultiView:
|
PanelMultiView:
|
||||||
"moz-src:///browser/components/customizableui/PanelMultiView.sys.mjs",
|
"moz-src:///browser/components/customizableui/PanelMultiView.sys.mjs",
|
||||||
@@ -348,7 +349,7 @@ var CustomizableUIInternal = {
|
@@ -352,7 +353,7 @@ var CustomizableUIInternal = {
|
||||||
{
|
{
|
||||||
type: CustomizableUI.TYPE_PANEL,
|
type: CustomizableUI.TYPE_PANEL,
|
||||||
defaultPlacements: [],
|
defaultPlacements: [],
|
||||||
@@ -19,7 +19,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
},
|
},
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
@@ -358,27 +359,23 @@ var CustomizableUIInternal = {
|
@@ -362,27 +363,23 @@ var CustomizableUIInternal = {
|
||||||
"back-button",
|
"back-button",
|
||||||
"forward-button",
|
"forward-button",
|
||||||
"stop-reload-button",
|
"stop-reload-button",
|
||||||
@@ -50,17 +50,18 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
defaultCollapsed: false,
|
defaultCollapsed: false,
|
||||||
},
|
},
|
||||||
true
|
true
|
||||||
@@ -402,9 +399,6 @@ var CustomizableUIInternal = {
|
@@ -406,10 +403,6 @@ var CustomizableUIInternal = {
|
||||||
type: CustomizableUI.TYPE_TOOLBAR,
|
type: CustomizableUI.TYPE_TOOLBAR,
|
||||||
defaultPlacements: [
|
defaultPlacements: [
|
||||||
"tabbrowser-tabs",
|
"tabbrowser-tabs",
|
||||||
- "new-tab-button",
|
- "new-tab-button",
|
||||||
|
- "spring",
|
||||||
- "alltabs-button",
|
- "alltabs-button",
|
||||||
- "ai-window-toggle",
|
- "ai-window-toggle",
|
||||||
],
|
],
|
||||||
verticalTabsDefaultPlacements: [],
|
verticalTabsDefaultPlacements: [],
|
||||||
defaultCollapsed: null,
|
defaultCollapsed: null,
|
||||||
@@ -484,6 +478,7 @@ var CustomizableUIInternal = {
|
@@ -502,6 +495,7 @@ var CustomizableUIInternal = {
|
||||||
CustomizableUI.AREA_NAVBAR,
|
CustomizableUI.AREA_NAVBAR,
|
||||||
CustomizableUI.AREA_BOOKMARKS,
|
CustomizableUI.AREA_BOOKMARKS,
|
||||||
CustomizableUI.AREA_TABSTRIP,
|
CustomizableUI.AREA_TABSTRIP,
|
||||||
@@ -68,7 +69,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
]);
|
]);
|
||||||
if (AppConstants.platform != "macosx") {
|
if (AppConstants.platform != "macosx") {
|
||||||
toolbars.add(CustomizableUI.AREA_MENUBAR);
|
toolbars.add(CustomizableUI.AREA_MENUBAR);
|
||||||
@@ -1285,6 +1280,9 @@ var CustomizableUIInternal = {
|
@@ -1334,6 +1328,9 @@ var CustomizableUIInternal = {
|
||||||
placements = gPlacements.get(area);
|
placements = gPlacements.get(area);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,7 +79,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
// For toolbars that need it, mark as dirty.
|
// For toolbars that need it, mark as dirty.
|
||||||
let defaultPlacements = areaProperties.get("defaultPlacements");
|
let defaultPlacements = areaProperties.get("defaultPlacements");
|
||||||
if (
|
if (
|
||||||
@@ -1793,7 +1791,6 @@ var CustomizableUIInternal = {
|
@@ -1842,7 +1839,6 @@ var CustomizableUIInternal = {
|
||||||
lazy.log.info(
|
lazy.log.info(
|
||||||
"Widget " + aWidgetId + " not found, unable to remove from " + aArea
|
"Widget " + aWidgetId + " not found, unable to remove from " + aArea
|
||||||
);
|
);
|
||||||
@@ -86,7 +87,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.notifyDOMChange(widgetNode, null, container, true, () => {
|
this.notifyDOMChange(widgetNode, null, container, true, () => {
|
||||||
@@ -1803,7 +1800,7 @@ var CustomizableUIInternal = {
|
@@ -1852,7 +1848,7 @@ var CustomizableUIInternal = {
|
||||||
// We also need to remove the panel context menu if it's there:
|
// We also need to remove the panel context menu if it's there:
|
||||||
this.ensureButtonContextMenu(widgetNode);
|
this.ensureButtonContextMenu(widgetNode);
|
||||||
if (gPalette.has(aWidgetId) || this.isSpecialWidget(aWidgetId)) {
|
if (gPalette.has(aWidgetId) || this.isSpecialWidget(aWidgetId)) {
|
||||||
@@ -95,7 +96,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
} else {
|
} else {
|
||||||
window.gNavToolbox.palette.appendChild(widgetNode);
|
window.gNavToolbox.palette.appendChild(widgetNode);
|
||||||
}
|
}
|
||||||
@@ -1971,16 +1968,16 @@ var CustomizableUIInternal = {
|
@@ -2020,16 +2016,16 @@ var CustomizableUIInternal = {
|
||||||
elem.setAttribute("skipintoolbarset", "true");
|
elem.setAttribute("skipintoolbarset", "true");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -115,7 +116,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
// Handle initial state of vertical tabs.
|
// Handle initial state of vertical tabs.
|
||||||
if (isVerticalTabs) {
|
if (isVerticalTabs) {
|
||||||
// Show the vertical tabs toolbar
|
// Show the vertical tabs toolbar
|
||||||
@@ -2222,6 +2219,10 @@ var CustomizableUIInternal = {
|
@@ -2271,6 +2267,10 @@ var CustomizableUIInternal = {
|
||||||
* The identifier string of the area that aNode is being inserted into.
|
* The identifier string of the area that aNode is being inserted into.
|
||||||
*/
|
*/
|
||||||
insertWidgetBefore(aNode, aNextNode, aContainer, aAreaId) {
|
insertWidgetBefore(aNode, aNextNode, aContainer, aAreaId) {
|
||||||
@@ -126,7 +127,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
this.notifyDOMChange(aNode, aNextNode, aContainer, false, () => {
|
this.notifyDOMChange(aNode, aNextNode, aContainer, false, () => {
|
||||||
this.setLocationAttributes(aNode, aAreaId);
|
this.setLocationAttributes(aNode, aAreaId);
|
||||||
aContainer.insertBefore(aNode, aNextNode);
|
aContainer.insertBefore(aNode, aNextNode);
|
||||||
@@ -4592,7 +4593,7 @@ var CustomizableUIInternal = {
|
@@ -4647,7 +4647,7 @@ var CustomizableUIInternal = {
|
||||||
* For all registered areas, builds those areas to reflect the current
|
* For all registered areas, builds those areas to reflect the current
|
||||||
* placement state of all widgets.
|
* placement state of all widgets.
|
||||||
*/
|
*/
|
||||||
@@ -135,7 +136,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
for (let [areaId, areaNodes] of gBuildAreas) {
|
for (let [areaId, areaNodes] of gBuildAreas) {
|
||||||
let placements = gPlacements.get(areaId);
|
let placements = gPlacements.get(areaId);
|
||||||
let isFirstChangedToolbar = true;
|
let isFirstChangedToolbar = true;
|
||||||
@@ -4603,7 +4604,7 @@ var CustomizableUIInternal = {
|
@@ -4658,7 +4658,7 @@ var CustomizableUIInternal = {
|
||||||
if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) {
|
if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) {
|
||||||
let defaultCollapsed = area.get("defaultCollapsed");
|
let defaultCollapsed = area.get("defaultCollapsed");
|
||||||
let win = areaNode.documentGlobal;
|
let win = areaNode.documentGlobal;
|
||||||
@@ -144,7 +145,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
win.setToolbarVisibility(
|
win.setToolbarVisibility(
|
||||||
areaNode,
|
areaNode,
|
||||||
typeof defaultCollapsed == "string"
|
typeof defaultCollapsed == "string"
|
||||||
@@ -5899,6 +5900,7 @@ export var CustomizableUI = {
|
@@ -5971,6 +5971,7 @@ export var CustomizableUI = {
|
||||||
unregisterArea(aName, aDestroyPlacements) {
|
unregisterArea(aName, aDestroyPlacements) {
|
||||||
CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements);
|
CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements);
|
||||||
},
|
},
|
||||||
@@ -152,7 +153,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
/**
|
/**
|
||||||
* Add a widget to an area.
|
* Add a widget to an area.
|
||||||
* If the area to which you try to add is not known to CustomizableUI,
|
* If the area to which you try to add is not known to CustomizableUI,
|
||||||
@@ -7869,7 +7871,9 @@ class OverflowableToolbar {
|
@@ -7946,7 +7947,9 @@ class OverflowableToolbar {
|
||||||
);
|
);
|
||||||
|
|
||||||
if (webExtList && CustomizableUI.isWebExtensionWidget(child.id)) {
|
if (webExtList && CustomizableUI.isWebExtensionWidget(child.id)) {
|
||||||
@@ -162,7 +163,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
webExtList.insertBefore(child, webExtList.firstElementChild);
|
webExtList.insertBefore(child, webExtList.firstElementChild);
|
||||||
} else {
|
} else {
|
||||||
child.setAttribute("cui-anchorid", this.#defaultListButton.id);
|
child.setAttribute("cui-anchorid", this.#defaultListButton.id);
|
||||||
@@ -7929,7 +7933,7 @@ class OverflowableToolbar {
|
@@ -8006,7 +8009,7 @@ class OverflowableToolbar {
|
||||||
) {
|
) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -171,7 +172,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
if (child != aExceptChild) {
|
if (child != aExceptChild) {
|
||||||
sum += getInlineSize(child);
|
sum += getInlineSize(child);
|
||||||
}
|
}
|
||||||
@@ -7953,11 +7957,11 @@ class OverflowableToolbar {
|
@@ -8030,11 +8033,11 @@ class OverflowableToolbar {
|
||||||
parseFloat(style.paddingLeft) -
|
parseFloat(style.paddingLeft) -
|
||||||
parseFloat(style.paddingRight) -
|
parseFloat(style.paddingRight) -
|
||||||
toolbarChildrenWidth;
|
toolbarChildrenWidth;
|
||||||
@@ -185,7 +186,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
});
|
});
|
||||||
|
|
||||||
lazy.log.debug(
|
lazy.log.debug(
|
||||||
@@ -7972,7 +7976,39 @@ class OverflowableToolbar {
|
@@ -8049,7 +8052,39 @@ class OverflowableToolbar {
|
||||||
Math.max(targetWidth, targetChildrenWidth)
|
Math.max(targetWidth, targetChildrenWidth)
|
||||||
);
|
);
|
||||||
totalAvailWidth = Math.ceil(totalAvailWidth);
|
totalAvailWidth = Math.ceil(totalAvailWidth);
|
||||||
@@ -226,7 +227,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
return { isOverflowing, targetContentWidth, totalAvailWidth };
|
return { isOverflowing, targetContentWidth, totalAvailWidth };
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -8033,7 +8069,11 @@ class OverflowableToolbar {
|
@@ -8110,7 +8145,11 @@ class OverflowableToolbar {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -239,7 +240,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
lazy.log.debug(
|
lazy.log.debug(
|
||||||
`Need ${minSize} but width is ${totalAvailWidth} so bailing`
|
`Need ${minSize} but width is ${totalAvailWidth} so bailing`
|
||||||
);
|
);
|
||||||
@@ -8066,7 +8106,7 @@ class OverflowableToolbar {
|
@@ -8143,7 +8182,7 @@ class OverflowableToolbar {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!inserted) {
|
if (!inserted) {
|
||||||
@@ -248,7 +249,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
}
|
}
|
||||||
child.removeAttribute("cui-anchorid");
|
child.removeAttribute("cui-anchorid");
|
||||||
child.removeAttribute("overflowedItem");
|
child.removeAttribute("overflowedItem");
|
||||||
@@ -8192,6 +8232,9 @@ class OverflowableToolbar {
|
@@ -8269,6 +8308,9 @@ class OverflowableToolbar {
|
||||||
* if no such list exists.
|
* if no such list exists.
|
||||||
*/
|
*/
|
||||||
get #webExtList() {
|
get #webExtList() {
|
||||||
@@ -258,7 +259,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
if (!this.#webExtListRef) {
|
if (!this.#webExtListRef) {
|
||||||
let targetID = this.#toolbar.getAttribute("addon-webext-overflowtarget");
|
let targetID = this.#toolbar.getAttribute("addon-webext-overflowtarget");
|
||||||
if (!targetID) {
|
if (!targetID) {
|
||||||
@@ -8203,6 +8246,9 @@ class OverflowableToolbar {
|
@@ -8280,6 +8322,9 @@ class OverflowableToolbar {
|
||||||
let win = this.#toolbar.documentGlobal;
|
let win = this.#toolbar.documentGlobal;
|
||||||
let { panel } = win.gUnifiedExtensions;
|
let { panel } = win.gUnifiedExtensions;
|
||||||
this.#webExtListRef = panel.querySelector(`#${targetID}`);
|
this.#webExtListRef = panel.querySelector(`#${targetID}`);
|
||||||
@@ -268,7 +269,7 @@ index 491161e48044f75167a8e8a0348779cfa22fc40e..867d51b8a6b74f841afc6d84dcdfd8f2
|
|||||||
}
|
}
|
||||||
return this.#webExtListRef;
|
return this.#webExtListRef;
|
||||||
}
|
}
|
||||||
@@ -8411,7 +8457,7 @@ class OverflowableToolbar {
|
@@ -8488,7 +8533,7 @@ class OverflowableToolbar {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "mousedown": {
|
case "mousedown": {
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ index 1b8c38159314b6edee9e6f455beb2b63db1ad3f0..1308345db640dba6b2848b49ef7c1181
|
|||||||
+ </html:moz-page-nav-button>
|
+ </html:moz-page-nav-button>
|
||||||
+ <html:moz-page-nav-button id="category-zen-CKS"
|
+ <html:moz-page-nav-button id="category-zen-CKS"
|
||||||
+ view="paneZenCKS"
|
+ view="paneZenCKS"
|
||||||
+ iconsrc="chrome://browser/skin/quickactions.svg"
|
+ iconsrc="chrome://browser/skin/preferences/category-accessibility.svg"
|
||||||
+ data-l10n-id="pane-zen-CKS-title">
|
+ data-l10n-id="pane-zen-CKS-title">
|
||||||
+ </html:moz-page-nav-button>
|
+ </html:moz-page-nav-button>
|
||||||
+ <html:moz-page-nav-button id="category-zen-marketplace"
|
+ <html:moz-page-nav-button id="category-zen-marketplace"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/browser/components/tabbrowser/content/drag-and-drop.js b/browser/components/tabbrowser/content/drag-and-drop.js
|
diff --git a/browser/components/tabbrowser/content/drag-and-drop.js b/browser/components/tabbrowser/content/drag-and-drop.js
|
||||||
index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b15a030046 100644
|
index 70b37f93c4e8ff4ad9a2452681e468d23914c1b5..dbf2d9c83dafbe0e0b4e6caf3835edc8edf9bcf4 100644
|
||||||
--- a/browser/components/tabbrowser/content/drag-and-drop.js
|
--- a/browser/components/tabbrowser/content/drag-and-drop.js
|
||||||
+++ b/browser/components/tabbrowser/content/drag-and-drop.js
|
+++ b/browser/components/tabbrowser/content/drag-and-drop.js
|
||||||
@@ -35,6 +35,9 @@
|
@@ -35,6 +35,9 @@
|
||||||
@@ -12,7 +12,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
if (isTab(element) || isSplitViewWrapper(element)) {
|
if (isTab(element) || isSplitViewWrapper(element)) {
|
||||||
return element;
|
return element;
|
||||||
}
|
}
|
||||||
@@ -118,6 +121,9 @@
|
@@ -128,6 +131,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
|
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
|
||||||
@@ -22,7 +22,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
if (
|
if (
|
||||||
(dropEffect == "move" || dropEffect == "copy") &&
|
(dropEffect == "move" || dropEffect == "copy") &&
|
||||||
document == draggedTab.ownerDocument &&
|
document == draggedTab.ownerDocument &&
|
||||||
@@ -138,6 +144,7 @@
|
@@ -148,6 +154,7 @@
|
||||||
!draggedTab.group.collapsed
|
!draggedTab.group.collapsed
|
||||||
) {
|
) {
|
||||||
draggedTab.group.collapsed = true;
|
draggedTab.group.collapsed = true;
|
||||||
@@ -30,7 +30,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (dropEffect == "move") {
|
if (dropEffect == "move") {
|
||||||
@@ -145,10 +152,6 @@
|
@@ -155,10 +162,6 @@
|
||||||
|
|
||||||
// Pinned tabs in expanded vertical mode are on a grid format and require
|
// Pinned tabs in expanded vertical mode are on a grid format and require
|
||||||
// different logic to drag and drop.
|
// different logic to drag and drop.
|
||||||
@@ -41,7 +41,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
this._animateTabMove(event);
|
this._animateTabMove(event);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -287,6 +290,10 @@
|
@@ -297,6 +300,10 @@
|
||||||
|
|
||||||
this._tabDropIndicator.hidden = true;
|
this._tabDropIndicator.hidden = true;
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
@@ -52,7 +52,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
if (draggedTab && dropEffect == "copy") {
|
if (draggedTab && dropEffect == "copy") {
|
||||||
let duplicatedDraggedTab;
|
let duplicatedDraggedTab;
|
||||||
let duplicatedTabs = [];
|
let duplicatedTabs = [];
|
||||||
@@ -312,12 +319,16 @@
|
@@ -324,12 +331,16 @@
|
||||||
let translateOffsetY = oldTranslateY % tabHeight;
|
let translateOffsetY = oldTranslateY % tabHeight;
|
||||||
let newTranslateX = oldTranslateX - translateOffsetX;
|
let newTranslateX = oldTranslateX - translateOffsetX;
|
||||||
let newTranslateY = oldTranslateY - translateOffsetY;
|
let newTranslateY = oldTranslateY - translateOffsetY;
|
||||||
@@ -73,7 +73,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
|
|
||||||
if (this._tabbrowserTabs.isContainerVerticalPinnedGrid(draggedTab)) {
|
if (this._tabbrowserTabs.isContainerVerticalPinnedGrid(draggedTab)) {
|
||||||
// Update both translate axis for pinned vertical expanded tabs
|
// Update both translate axis for pinned vertical expanded tabs
|
||||||
@@ -392,11 +403,13 @@
|
@@ -404,11 +415,13 @@
|
||||||
this._dragToPinPromoCard,
|
this._dragToPinPromoCard,
|
||||||
];
|
];
|
||||||
let shouldPin =
|
let shouldPin =
|
||||||
@@ -87,15 +87,15 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
isTab(draggedTab) &&
|
isTab(draggedTab) &&
|
||||||
draggedTab.pinned &&
|
draggedTab.pinned &&
|
||||||
this._tabbrowserTabs.arrowScrollbox.contains(event.target);
|
this._tabbrowserTabs.arrowScrollbox.contains(event.target);
|
||||||
@@ -466,6 +479,7 @@
|
@@ -484,6 +497,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
+ shouldTranslate = false;
|
+ shouldTranslate = false;
|
||||||
if (shouldTranslate) {
|
if (shouldTranslate) {
|
||||||
|
this.#dropAnimationEndTime = Date.now() + DROP_ANIMATION_GRACE_MS;
|
||||||
let translationPromises = [];
|
let translationPromises = [];
|
||||||
for (let item of movingTabs) {
|
@@ -496,7 +510,7 @@
|
||||||
@@ -477,7 +491,7 @@
|
|
||||||
item.removeAttribute("tabdrop-samewindow");
|
item.removeAttribute("tabdrop-samewindow");
|
||||||
resolve();
|
resolve();
|
||||||
};
|
};
|
||||||
@@ -104,7 +104,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
postTransitionCleanup();
|
postTransitionCleanup();
|
||||||
} else {
|
} else {
|
||||||
let onTransitionEnd = transitionendEvent => {
|
let onTransitionEnd = transitionendEvent => {
|
||||||
@@ -552,7 +566,7 @@
|
@@ -580,7 +594,7 @@
|
||||||
if (tab.selected) {
|
if (tab.selected) {
|
||||||
selectedTab = tab;
|
selectedTab = tab;
|
||||||
indexForSelectedTab = newIndex;
|
indexForSelectedTab = newIndex;
|
||||||
@@ -113,7 +113,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
const droppedIntoPinnedArea = dropIndex < gBrowser.pinnedTabCount;
|
const droppedIntoPinnedArea = dropIndex < gBrowser.pinnedTabCount;
|
||||||
const newSplitView = gBrowser.adoptSplitView(tab, {
|
const newSplitView = gBrowser.adoptSplitView(tab, {
|
||||||
elementIndex: droppedIntoPinnedArea
|
elementIndex: droppedIntoPinnedArea
|
||||||
@@ -577,7 +591,7 @@
|
@@ -605,7 +619,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -122,7 +122,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
const newTab = gBrowser.adoptTab(selectedTab, {
|
const newTab = gBrowser.adoptTab(selectedTab, {
|
||||||
elementIndex: indexForSelectedTab,
|
elementIndex: indexForSelectedTab,
|
||||||
selectTab: selectedTab == draggedTab,
|
selectTab: selectedTab == draggedTab,
|
||||||
@@ -611,10 +625,6 @@
|
@@ -639,10 +653,6 @@
|
||||||
this._tabbrowserTabs.dragAndDropElements[
|
this._tabbrowserTabs.dragAndDropElements[
|
||||||
gBrowser.pinnedTabCount + unpinnedSplitViews.length - 1
|
gBrowser.pinnedTabCount + unpinnedSplitViews.length - 1
|
||||||
];
|
];
|
||||||
@@ -133,7 +133,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -664,6 +674,7 @@
|
@@ -703,6 +713,7 @@
|
||||||
|
|
||||||
let nextItem = this._tabbrowserTabs.dragAndDropElements[newIndex];
|
let nextItem = this._tabbrowserTabs.dragAndDropElements[newIndex];
|
||||||
let tabGroup = isTab(nextItem) && nextItem.group;
|
let tabGroup = isTab(nextItem) && nextItem.group;
|
||||||
@@ -141,12 +141,15 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
gBrowser.loadTabs(urls, {
|
gBrowser.loadTabs(urls, {
|
||||||
inBackground,
|
inBackground,
|
||||||
replace,
|
replace,
|
||||||
@@ -705,7 +716,16 @@
|
@@ -744,6 +755,22 @@
|
||||||
this._expandGroupOnDrop(draggedTab);
|
this._expandGroupOnDrop(draggedTab);
|
||||||
}
|
}
|
||||||
this._resetTabsAfterDrop(draggedTab.ownerDocument);
|
this._resetTabsAfterDrop(draggedTab);
|
||||||
-
|
+ if (
|
||||||
+ if (!dt.mozUserCancelled && dt.dropEffect == "none" && !this._isCustomizing) {
|
+ !dt.mozUserCancelled &&
|
||||||
|
+ dt.dropEffect == "none" &&
|
||||||
|
+ !this._tabbrowserTabs._isCustomizing
|
||||||
|
+ ) {
|
||||||
+ const moved = gZenViewSplitter.moveTabToSplitView(event, draggedTab);
|
+ const moved = gZenViewSplitter.moveTabToSplitView(event, draggedTab);
|
||||||
+ if (moved) {
|
+ if (moved) {
|
||||||
+ delete draggedTab._dragData;
|
+ delete draggedTab._dragData;
|
||||||
@@ -154,12 +157,14 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
+ }
|
+ }
|
||||||
+ } else if (dt.mozUserCancelled) {
|
+ } else if (dt.mozUserCancelled) {
|
||||||
+ gZenViewSplitter.onBrowserDragEndToSplit(event, true);
|
+ gZenViewSplitter.onBrowserDragEndToSplit(event, true);
|
||||||
+ if (gZenViewSplitter._lastOpenedTab) gZenViewSplitter._lastOpenedTab._visuallySelected = false;
|
+ if (gZenViewSplitter._lastOpenedTab) {
|
||||||
|
+ gZenViewSplitter._lastOpenedTab._visuallySelected = false;
|
||||||
|
+ }
|
||||||
+ }
|
+ }
|
||||||
|
|
||||||
if (
|
if (
|
||||||
dt.mozUserCancelled ||
|
dt.mozUserCancelled ||
|
||||||
dt.dropEffect != "none" ||
|
@@ -1074,11 +1101,10 @@
|
||||||
@@ -927,11 +947,10 @@
|
|
||||||
return this.#getHorizontalScrollboxDragTarget(event, ignoreSides);
|
return this.#getHorizontalScrollboxDragTarget(event, ignoreSides);
|
||||||
}
|
}
|
||||||
while (target) {
|
while (target) {
|
||||||
@@ -175,7 +180,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
target = target.parentNode;
|
target = target.parentNode;
|
||||||
@@ -961,6 +980,9 @@
|
@@ -1108,6 +1134,9 @@
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -185,17 +190,36 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1014,7 +1036,8 @@
|
@@ -1170,14 +1199,20 @@
|
||||||
isTabGroupLabel(draggedTab) &&
|
let releaseReservedSpace = () =>
|
||||||
draggedTab._dragData?.expandGroupOnDrop
|
this.#releaseSpaceInScrolledContent(periphery);
|
||||||
) {
|
if (group.collapsed) {
|
||||||
- draggedTab.group.collapsed = false;
|
- // The group's tabs animate back to their full size, so hold on to the
|
||||||
+ draggedTab.group.collapsed = draggedTab.group.hasAttribute("has-active");
|
- // space reserved for them until they get there.
|
||||||
+ gZenFolders.animateGroupMove(draggedTab.group, true);
|
- group.addEventListener(
|
||||||
|
- "TabGroupAnimationComplete",
|
||||||
|
- releaseReservedSpace,
|
||||||
|
- { once: true }
|
||||||
|
- );
|
||||||
|
- group.collapsed = false;
|
||||||
|
+ const expand = !group.hasAttribute("has-active");
|
||||||
|
+ if (expand) {
|
||||||
|
+ // The group's tabs animate back to their full size, so hold on to the
|
||||||
|
+ // space reserved for them until they get there.
|
||||||
|
+ group.addEventListener(
|
||||||
|
+ "TabGroupAnimationComplete",
|
||||||
|
+ releaseReservedSpace,
|
||||||
|
+ { once: true }
|
||||||
|
+ );
|
||||||
|
+ } else {
|
||||||
|
+ releaseReservedSpace();
|
||||||
|
+ }
|
||||||
|
+ group.collapsed = !expand;
|
||||||
|
+ gZenFolders.animateGroupMove(group, true);
|
||||||
|
} else {
|
||||||
|
releaseReservedSpace();
|
||||||
}
|
}
|
||||||
}
|
@@ -1362,7 +1397,6 @@
|
||||||
|
|
||||||
@@ -1206,7 +1229,6 @@
|
|
||||||
// using updateDragImage. On Linux, we can use a panel.
|
// using updateDragImage. On Linux, we can use a panel.
|
||||||
if (platform == "win" || platform == "macosx") {
|
if (platform == "win" || platform == "macosx") {
|
||||||
captureListener = function () {
|
captureListener = function () {
|
||||||
@@ -203,7 +227,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
// Create a panel to use it in setDragImage
|
// Create a panel to use it in setDragImage
|
||||||
@@ -1244,7 +1266,6 @@
|
@@ -1400,7 +1434,6 @@
|
||||||
);
|
);
|
||||||
dragImageOffset = dragImageOffset * scale;
|
dragImageOffset = dragImageOffset * scale;
|
||||||
}
|
}
|
||||||
@@ -211,7 +235,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
|
|
||||||
// _dragData.offsetX/Y give the coordinates that the mouse should be
|
// _dragData.offsetX/Y give the coordinates that the mouse should be
|
||||||
// positioned relative to the corner of the new window created upon
|
// positioned relative to the corner of the new window created upon
|
||||||
@@ -1263,7 +1284,7 @@
|
@@ -1419,7 +1452,7 @@
|
||||||
let dropEffect = this.getDropEffectForTabDrag(event);
|
let dropEffect = this.getDropEffectForTabDrag(event);
|
||||||
let isMovingInTabStrip = !fromTabList && dropEffect == "move";
|
let isMovingInTabStrip = !fromTabList && dropEffect == "move";
|
||||||
let collapseTabGroupDuringDrag =
|
let collapseTabGroupDuringDrag =
|
||||||
@@ -220,7 +244,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
|
|
||||||
tab._dragData = {
|
tab._dragData = {
|
||||||
offsetX: this._tabbrowserTabs.verticalMode
|
offsetX: this._tabbrowserTabs.verticalMode
|
||||||
@@ -1273,7 +1294,7 @@
|
@@ -1429,7 +1462,7 @@
|
||||||
? event.screenY - window.screenY - tabOffset
|
? event.screenY - window.screenY - tabOffset
|
||||||
: event.screenY - window.screenY,
|
: event.screenY - window.screenY,
|
||||||
scrollPos:
|
scrollPos:
|
||||||
@@ -229,7 +253,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
? this._tabbrowserTabs.pinnedTabsContainer.scrollPosition
|
? this._tabbrowserTabs.pinnedTabsContainer.scrollPosition
|
||||||
: this._tabbrowserTabs.arrowScrollbox.scrollPosition,
|
: this._tabbrowserTabs.arrowScrollbox.scrollPosition,
|
||||||
screenX: event.screenX,
|
screenX: event.screenX,
|
||||||
@@ -1320,6 +1341,7 @@
|
@@ -1522,6 +1555,7 @@
|
||||||
if (tabStripItemElement.hasAttribute("dragtarget")) {
|
if (tabStripItemElement.hasAttribute("dragtarget")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -237,7 +261,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
let isPinned = tab.pinned;
|
let isPinned = tab.pinned;
|
||||||
let dragAndDropElements = this._tabbrowserTabs.dragAndDropElements;
|
let dragAndDropElements = this._tabbrowserTabs.dragAndDropElements;
|
||||||
let isGrid = this._tabbrowserTabs.isContainerVerticalPinnedGrid(tab);
|
let isGrid = this._tabbrowserTabs.isContainerVerticalPinnedGrid(tab);
|
||||||
@@ -1686,23 +1708,6 @@
|
@@ -1895,23 +1929,6 @@
|
||||||
|
|
||||||
// Slide the relevant tabs to their new position.
|
// Slide the relevant tabs to their new position.
|
||||||
// non-moving tabs adjust for RTL
|
// non-moving tabs adjust for RTL
|
||||||
@@ -261,7 +285,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
// moving tabs don't adjust for RTL
|
// moving tabs don't adjust for RTL
|
||||||
for (let item of selectedElements) {
|
for (let item of selectedElements) {
|
||||||
if (
|
if (
|
||||||
@@ -1751,7 +1756,6 @@
|
@@ -1960,7 +1977,6 @@
|
||||||
for (let item of this._tabbrowserTabs.dragAndDropElements) {
|
for (let item of this._tabbrowserTabs.dragAndDropElements) {
|
||||||
delete item._moveTogetherSelectedTabsData;
|
delete item._moveTogetherSelectedTabsData;
|
||||||
item = elementToMove(item);
|
item = elementToMove(item);
|
||||||
@@ -269,7 +293,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
item.removeAttribute("multiselected-move-together");
|
item.removeAttribute("multiselected-move-together");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2598,7 +2602,6 @@
|
@@ -2812,7 +2828,6 @@
|
||||||
tab.style.top = "";
|
tab.style.top = "";
|
||||||
tab.style.maxWidth = "";
|
tab.style.maxWidth = "";
|
||||||
tab.style.pointerEvents = "";
|
tab.style.pointerEvents = "";
|
||||||
@@ -277,7 +301,7 @@ index 8bb1219962a1368f50b53c61041f135c68e35f31..8e72441d26883cbef7a352b00c0fe2b1
|
|||||||
tab.removeAttribute("small-stack");
|
tab.removeAttribute("small-stack");
|
||||||
tab.removeAttribute("big-stack");
|
tab.removeAttribute("big-stack");
|
||||||
}
|
}
|
||||||
@@ -2607,11 +2610,9 @@
|
@@ -2821,11 +2836,9 @@
|
||||||
)) {
|
)) {
|
||||||
label.style.width = "";
|
label.style.width = "";
|
||||||
label.style.maxWidth = "";
|
label.style.maxWidth = "";
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
|
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
|
||||||
index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da5504f9d8 100644
|
index 43180487a2fac15b7a65fac94f233eeed9094990..ae1288974cae29da929f27b78ff8db542566eba2 100644
|
||||||
--- a/browser/components/tabbrowser/content/tabbrowser.js
|
--- a/browser/components/tabbrowser/content/tabbrowser.js
|
||||||
+++ b/browser/components/tabbrowser/content/tabbrowser.js
|
+++ b/browser/components/tabbrowser/content/tabbrowser.js
|
||||||
@@ -513,6 +513,7 @@
|
@@ -514,6 +514,7 @@
|
||||||
* @type {MozBrowser[]}
|
* @type {MozBrowser[]}
|
||||||
*/
|
*/
|
||||||
get splitViewBrowsers() {
|
get splitViewBrowsers() {
|
||||||
@@ -10,7 +10,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
const browsers = [];
|
const browsers = [];
|
||||||
if (this.#activeSplitView) {
|
if (this.#activeSplitView) {
|
||||||
for (const tab of this.#activeSplitView.tabs) {
|
for (const tab of this.#activeSplitView.tabs) {
|
||||||
@@ -611,15 +612,66 @@
|
@@ -612,15 +613,66 @@
|
||||||
return this.tabContainer.visibleTabs;
|
return this.tabContainer.visibleTabs;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
setSelectedTab(val, metricsContext = null) {
|
setSelectedTab(val, metricsContext = null) {
|
||||||
if (this.selectedTab === val) {
|
if (this.selectedTab === val) {
|
||||||
return;
|
return;
|
||||||
@@ -632,6 +684,9 @@
|
@@ -633,6 +685,9 @@
|
||||||
) {
|
) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -89,7 +89,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
// Update the tab
|
// Update the tab
|
||||||
this.tabbox.selectedTab = val;
|
this.tabbox.selectedTab = val;
|
||||||
|
|
||||||
@@ -708,6 +763,10 @@
|
@@ -709,6 +764,10 @@
|
||||||
userContextId = parseInt(tabArgument.getAttribute("usercontextid"), 10);
|
userContextId = parseInt(tabArgument.getAttribute("usercontextid"), 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
if (openWindowInfo) {
|
if (openWindowInfo) {
|
||||||
userContextId = openWindowInfo.originAttributes.userContextId;
|
userContextId = openWindowInfo.originAttributes.userContextId;
|
||||||
}
|
}
|
||||||
@@ -809,6 +868,8 @@
|
@@ -810,6 +869,8 @@
|
||||||
this.tabpanels.appendChild(panel);
|
this.tabpanels.appendChild(panel);
|
||||||
|
|
||||||
let tab = this.tabs[0];
|
let tab = this.tabs[0];
|
||||||
@@ -109,7 +109,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
tab.linkedPanel = uniqueId;
|
tab.linkedPanel = uniqueId;
|
||||||
this._selectedTab = tab;
|
this._selectedTab = tab;
|
||||||
this._selectedBrowser = browser;
|
this._selectedBrowser = browser;
|
||||||
@@ -1178,18 +1239,24 @@
|
@@ -1179,18 +1240,24 @@
|
||||||
* The context for the operation for telemetry purposes, defaults to an unknown context.
|
* The context for the operation for telemetry purposes, defaults to an unknown context.
|
||||||
*/
|
*/
|
||||||
pinTab(aTab, { metricsContext = this.TabMetrics.UNKNOWN_CONTEXT } = {}) {
|
pinTab(aTab, { metricsContext = this.TabMetrics.UNKNOWN_CONTEXT } = {}) {
|
||||||
@@ -135,7 +135,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
|
|
||||||
aTab.setAttribute("pinned", "true");
|
aTab.setAttribute("pinned", "true");
|
||||||
this._updateTabBarForPinnedTabs();
|
this._updateTabBarForPinnedTabs();
|
||||||
@@ -1206,16 +1273,25 @@
|
@@ -1207,16 +1274,25 @@
|
||||||
* The context for the operation for telemetry purposes, defaults to an unknown context.
|
* The context for the operation for telemetry purposes, defaults to an unknown context.
|
||||||
*/
|
*/
|
||||||
unpinTab(aTab, { metricsContext = this.TabMetrics.UNKNOWN_CONTEXT } = {}) {
|
unpinTab(aTab, { metricsContext = this.TabMetrics.UNKNOWN_CONTEXT } = {}) {
|
||||||
@@ -162,7 +162,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
});
|
});
|
||||||
|
|
||||||
aTab.style.marginInlineStart = "";
|
aTab.style.marginInlineStart = "";
|
||||||
@@ -1430,6 +1506,9 @@
|
@@ -1432,6 +1508,9 @@
|
||||||
|
|
||||||
let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"];
|
let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"];
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
if (
|
if (
|
||||||
aIconURL &&
|
aIconURL &&
|
||||||
!LOCAL_PROTOCOLS.some(protocol => aIconURL.startsWith(protocol))
|
!LOCAL_PROTOCOLS.some(protocol => aIconURL.startsWith(protocol))
|
||||||
@@ -1439,6 +1518,9 @@
|
@@ -1441,6 +1520,9 @@
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -182,7 +182,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
|
|
||||||
let browser = this.getBrowserForTab(aTab);
|
let browser = this.getBrowserForTab(aTab);
|
||||||
browser.mIconURL = aIconURL;
|
browser.mIconURL = aIconURL;
|
||||||
@@ -1761,7 +1843,6 @@
|
@@ -1763,7 +1845,6 @@
|
||||||
|
|
||||||
// Preview mode should not reset the owner
|
// Preview mode should not reset the owner
|
||||||
if (!this.#previewMode && !oldTab.selected) {
|
if (!this.#previewMode && !oldTab.selected) {
|
||||||
@@ -190,7 +190,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
}
|
}
|
||||||
|
|
||||||
let lastRelatedTab = this.#lastRelatedTabMap.get(oldTab);
|
let lastRelatedTab = this.#lastRelatedTabMap.get(oldTab);
|
||||||
@@ -1852,6 +1933,7 @@
|
@@ -1854,6 +1935,7 @@
|
||||||
if (!this.#previewMode) {
|
if (!this.#previewMode) {
|
||||||
newTab.recordTimeFromUnloadToReload();
|
newTab.recordTimeFromUnloadToReload();
|
||||||
newTab.updateLastAccessed();
|
newTab.updateLastAccessed();
|
||||||
@@ -198,7 +198,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
oldTab.updateLastAccessed();
|
oldTab.updateLastAccessed();
|
||||||
// if this is the foreground window, update the last-seen timestamps.
|
// if this is the foreground window, update the last-seen timestamps.
|
||||||
if (this.documentGlobal == BrowserWindowTracker.getTopWindow()) {
|
if (this.documentGlobal == BrowserWindowTracker.getTopWindow()) {
|
||||||
@@ -2066,6 +2148,9 @@
|
@@ -2068,6 +2150,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
let activeEl = document.activeElement;
|
let activeEl = document.activeElement;
|
||||||
@@ -208,7 +208,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
// If focus is on the old tab, move it to the new tab.
|
// If focus is on the old tab, move it to the new tab.
|
||||||
if (activeEl == oldTab) {
|
if (activeEl == oldTab) {
|
||||||
newTab.focus();
|
newTab.focus();
|
||||||
@@ -2104,7 +2189,7 @@
|
@@ -2106,7 +2191,7 @@
|
||||||
// Focus the location bar if it was previously focused for that tab.
|
// Focus the location bar if it was previously focused for that tab.
|
||||||
// In full screen mode, only bother making the location bar visible
|
// In full screen mode, only bother making the location bar visible
|
||||||
// if the tab is a blank one.
|
// if the tab is a blank one.
|
||||||
@@ -217,7 +217,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
let selectURL = () => {
|
let selectURL = () => {
|
||||||
if (this._asyncTabSwitching) {
|
if (this._asyncTabSwitching) {
|
||||||
// Set _awaitingSetURI flag to suppress popup notification
|
// Set _awaitingSetURI flag to suppress popup notification
|
||||||
@@ -2392,7 +2477,12 @@
|
@@ -2394,7 +2479,12 @@
|
||||||
return this._setTabLabel(aTab, aLabel);
|
return this._setTabLabel(aTab, aLabel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,7 +231,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
if (!aLabel || (isURL && /^about:reader\?url=/.test(aLabel))) {
|
if (!aLabel || (isURL && /^about:reader\?url=/.test(aLabel))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2518,7 +2608,7 @@
|
@@ -2520,7 +2610,7 @@
|
||||||
newIndex = this.selectedTab._tPos + 1;
|
newIndex = this.selectedTab._tPos + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,7 +240,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
if (this.isTabGroupLabel(targetTab)) {
|
if (this.isTabGroupLabel(targetTab)) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
"Replacing a tab group label with a tab is not supported"
|
"Replacing a tab group label with a tab is not supported"
|
||||||
@@ -2793,6 +2883,7 @@
|
@@ -2795,6 +2885,7 @@
|
||||||
uriIsAboutBlank,
|
uriIsAboutBlank,
|
||||||
userContextId,
|
userContextId,
|
||||||
skipLoad,
|
skipLoad,
|
||||||
@@ -248,7 +248,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
} = {}) {
|
} = {}) {
|
||||||
let b = document.createXULElement("browser");
|
let b = document.createXULElement("browser");
|
||||||
// Use the JSM global to create the permanentKey, so that if the
|
// Use the JSM global to create the permanentKey, so that if the
|
||||||
@@ -2866,8 +2957,7 @@
|
@@ -2868,8 +2959,7 @@
|
||||||
// we use a different attribute name for this?
|
// we use a different attribute name for this?
|
||||||
b.setAttribute("name", name);
|
b.setAttribute("name", name);
|
||||||
}
|
}
|
||||||
@@ -258,7 +258,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
b.setAttribute("transparent", "true");
|
b.setAttribute("transparent", "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3022,7 +3112,7 @@
|
@@ -3024,7 +3114,7 @@
|
||||||
|
|
||||||
let panel = this.getPanel(browser);
|
let panel = this.getPanel(browser);
|
||||||
let uniqueId = this._generateUniquePanelID();
|
let uniqueId = this._generateUniquePanelID();
|
||||||
@@ -267,7 +267,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
aTab.linkedPanel = uniqueId;
|
aTab.linkedPanel = uniqueId;
|
||||||
|
|
||||||
// Inject the <browser> into the DOM if necessary.
|
// Inject the <browser> into the DOM if necessary.
|
||||||
@@ -3082,8 +3172,8 @@
|
@@ -3084,8 +3174,8 @@
|
||||||
// If we transitioned from one browser to two browsers, we need to set
|
// If we transitioned from one browser to two browsers, we need to set
|
||||||
// hasSiblings=false on both the existing browser and the new browser.
|
// hasSiblings=false on both the existing browser and the new browser.
|
||||||
if (this.tabs.length == 2) {
|
if (this.tabs.length == 2) {
|
||||||
@@ -278,7 +278,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
} else {
|
} else {
|
||||||
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
|
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
|
||||||
}
|
}
|
||||||
@@ -3268,7 +3358,6 @@
|
@@ -3270,7 +3360,6 @@
|
||||||
this.selectedTab = this.addTrustedTab(BROWSER_NEW_TAB_URL, {
|
this.selectedTab = this.addTrustedTab(BROWSER_NEW_TAB_URL, {
|
||||||
tabIndex: tab._tPos + 1,
|
tabIndex: tab._tPos + 1,
|
||||||
userContextId: tab.userContextId,
|
userContextId: tab.userContextId,
|
||||||
@@ -286,7 +286,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
focusUrlBar: true,
|
focusUrlBar: true,
|
||||||
});
|
});
|
||||||
resolve(this.selectedBrowser);
|
resolve(this.selectedBrowser);
|
||||||
@@ -3378,6 +3467,10 @@
|
@@ -3380,6 +3469,10 @@
|
||||||
schemelessInput,
|
schemelessInput,
|
||||||
hasValidUserGestureActivation = false,
|
hasValidUserGestureActivation = false,
|
||||||
textDirectiveUserActivation = false,
|
textDirectiveUserActivation = false,
|
||||||
@@ -297,7 +297,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
} = {}
|
} = {}
|
||||||
) {
|
) {
|
||||||
// all callers of addTab that pass a params object need to pass
|
// all callers of addTab that pass a params object need to pass
|
||||||
@@ -3388,10 +3481,25 @@
|
@@ -3390,10 +3483,25 @@
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -323,7 +323,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
// If we're opening a foreground tab, set the owner by default.
|
// If we're opening a foreground tab, set the owner by default.
|
||||||
ownerTab ??= inBackground ? null : this.selectedTab;
|
ownerTab ??= inBackground ? null : this.selectedTab;
|
||||||
|
|
||||||
@@ -3399,6 +3507,7 @@
|
@@ -3401,6 +3509,7 @@
|
||||||
if (this.selectedTab.owner) {
|
if (this.selectedTab.owner) {
|
||||||
this.selectedTab.owner = null;
|
this.selectedTab.owner = null;
|
||||||
}
|
}
|
||||||
@@ -331,7 +331,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
|
|
||||||
// Find the tab that opened this one, if any. This is used for
|
// Find the tab that opened this one, if any. This is used for
|
||||||
// determining positioning, and inherited attributes such as the
|
// determining positioning, and inherited attributes such as the
|
||||||
@@ -3451,6 +3560,22 @@
|
@@ -3453,6 +3562,22 @@
|
||||||
noInitialLabel,
|
noInitialLabel,
|
||||||
skipBackgroundNotify,
|
skipBackgroundNotify,
|
||||||
});
|
});
|
||||||
@@ -354,7 +354,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
if (insertTab) {
|
if (insertTab) {
|
||||||
// Insert the tab into the tab container in the correct position.
|
// Insert the tab into the tab container in the correct position.
|
||||||
this.#insertTabAtIndex(t, {
|
this.#insertTabAtIndex(t, {
|
||||||
@@ -3459,6 +3584,7 @@
|
@@ -3461,6 +3586,7 @@
|
||||||
ownerTab,
|
ownerTab,
|
||||||
openerTab,
|
openerTab,
|
||||||
pinned,
|
pinned,
|
||||||
@@ -362,7 +362,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
bulkOrderedOpen,
|
bulkOrderedOpen,
|
||||||
tabGroup: tabGroup ?? openerTab?.group,
|
tabGroup: tabGroup ?? openerTab?.group,
|
||||||
});
|
});
|
||||||
@@ -3477,6 +3603,7 @@
|
@@ -3479,6 +3605,7 @@
|
||||||
openWindowInfo,
|
openWindowInfo,
|
||||||
skipLoad,
|
skipLoad,
|
||||||
triggeringRemoteType,
|
triggeringRemoteType,
|
||||||
@@ -370,7 +370,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
if (focusUrlBar) {
|
if (focusUrlBar) {
|
||||||
@@ -3601,6 +3728,12 @@
|
@@ -3603,6 +3730,12 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -383,7 +383,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
// Additionally send pinned tab events
|
// Additionally send pinned tab events
|
||||||
if (pinned) {
|
if (pinned) {
|
||||||
this.#notifyPinnedStatus(t);
|
this.#notifyPinnedStatus(t);
|
||||||
@@ -3611,6 +3744,15 @@
|
@@ -3613,6 +3746,15 @@
|
||||||
if (!inBackground) {
|
if (!inBackground) {
|
||||||
this.selectedTab = t;
|
this.selectedTab = t;
|
||||||
}
|
}
|
||||||
@@ -399,7 +399,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3834,6 +3976,7 @@
|
@@ -3836,6 +3978,7 @@
|
||||||
insertBefore = null,
|
insertBefore = null,
|
||||||
isAdoptingGroup = false,
|
isAdoptingGroup = false,
|
||||||
metricsContext = this.TabMetrics.UNKNOWN_CONTEXT,
|
metricsContext = this.TabMetrics.UNKNOWN_CONTEXT,
|
||||||
@@ -407,7 +407,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
} = {}
|
} = {}
|
||||||
) {
|
) {
|
||||||
if (
|
if (
|
||||||
@@ -3844,9 +3987,6 @@
|
@@ -3846,9 +3989,6 @@
|
||||||
!this.isSplitViewWrapper(tabOrSplitView)
|
!this.isSplitViewWrapper(tabOrSplitView)
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
@@ -417,7 +417,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!color) {
|
if (!color) {
|
||||||
@@ -3867,9 +4007,14 @@
|
@@ -3869,9 +4009,14 @@
|
||||||
label,
|
label,
|
||||||
isAdoptingGroup
|
isAdoptingGroup
|
||||||
);
|
);
|
||||||
@@ -434,7 +434,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
);
|
);
|
||||||
group.addTabs(tabsAndSplitViews, metricsContext);
|
group.addTabs(tabsAndSplitViews, metricsContext);
|
||||||
|
|
||||||
@@ -3973,7 +4118,7 @@
|
@@ -3975,7 +4120,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
this.#handleTabMove(tab, () =>
|
this.#handleTabMove(tab, () =>
|
||||||
@@ -443,7 +443,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4059,6 +4204,7 @@
|
@@ -4061,6 +4206,7 @@
|
||||||
color: group.color,
|
color: group.color,
|
||||||
insertBefore: newTabs[0],
|
insertBefore: newTabs[0],
|
||||||
isAdoptingGroup: true,
|
isAdoptingGroup: true,
|
||||||
@@ -451,7 +451,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4269,6 +4415,7 @@
|
@@ -4271,6 +4417,7 @@
|
||||||
openWindowInfo,
|
openWindowInfo,
|
||||||
skipLoad,
|
skipLoad,
|
||||||
triggeringRemoteType,
|
triggeringRemoteType,
|
||||||
@@ -459,7 +459,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
// If we don't have a preferred remote type (or it is `NOT_REMOTE`), and
|
// If we don't have a preferred remote type (or it is `NOT_REMOTE`), and
|
||||||
@@ -4329,6 +4476,7 @@
|
@@ -4331,6 +4478,7 @@
|
||||||
openWindowInfo,
|
openWindowInfo,
|
||||||
name,
|
name,
|
||||||
skipLoad,
|
skipLoad,
|
||||||
@@ -467,7 +467,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4542,9 +4690,9 @@
|
@@ -4544,9 +4692,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a new tab if needed.
|
// Add a new tab if needed.
|
||||||
@@ -479,7 +479,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
|
|
||||||
let url = "about:blank";
|
let url = "about:blank";
|
||||||
if (tabData.entries?.length) {
|
if (tabData.entries?.length) {
|
||||||
@@ -4577,8 +4725,10 @@
|
@@ -4579,8 +4727,10 @@
|
||||||
insertTab: false,
|
insertTab: false,
|
||||||
skipLoad: true,
|
skipLoad: true,
|
||||||
preferredRemoteType,
|
preferredRemoteType,
|
||||||
@@ -491,7 +491,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
if (select) {
|
if (select) {
|
||||||
tabToSelect = tab;
|
tabToSelect = tab;
|
||||||
}
|
}
|
||||||
@@ -4600,7 +4750,8 @@
|
@@ -4602,7 +4752,8 @@
|
||||||
this.pinTab(tab);
|
this.pinTab(tab);
|
||||||
// Then ensure all the tab open/pinning information is sent.
|
// Then ensure all the tab open/pinning information is sent.
|
||||||
this._fireTabOpen(tab, {});
|
this._fireTabOpen(tab, {});
|
||||||
@@ -501,7 +501,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
let { groupId } = tabData;
|
let { groupId } = tabData;
|
||||||
const tabGroup = tabGroupWorkingData.get(groupId);
|
const tabGroup = tabGroupWorkingData.get(groupId);
|
||||||
// if a tab refers to a tab group we don't know, skip any group
|
// if a tab refers to a tab group we don't know, skip any group
|
||||||
@@ -4620,7 +4771,10 @@
|
@@ -4622,7 +4773,10 @@
|
||||||
tabGroup.stateData.id,
|
tabGroup.stateData.id,
|
||||||
tabGroup.stateData.color,
|
tabGroup.stateData.color,
|
||||||
tabGroup.stateData.collapsed,
|
tabGroup.stateData.collapsed,
|
||||||
@@ -513,7 +513,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
);
|
);
|
||||||
tabsFragment.appendChild(tabGroup.node);
|
tabsFragment.appendChild(tabGroup.node);
|
||||||
}
|
}
|
||||||
@@ -4675,9 +4829,21 @@
|
@@ -4677,9 +4831,21 @@
|
||||||
// to remove the old selected tab.
|
// to remove the old selected tab.
|
||||||
if (tabToSelect) {
|
if (tabToSelect) {
|
||||||
let leftoverTab = this.selectedTab;
|
let leftoverTab = this.selectedTab;
|
||||||
@@ -535,7 +535,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
|
|
||||||
if (tabs.length > 1 || !tabs[0].selected) {
|
if (tabs.length > 1 || !tabs[0].selected) {
|
||||||
this._updateTabsAfterInsert();
|
this._updateTabsAfterInsert();
|
||||||
@@ -4882,11 +5048,17 @@
|
@@ -4884,11 +5050,17 @@
|
||||||
if (ownerTab) {
|
if (ownerTab) {
|
||||||
tab.owner = ownerTab;
|
tab.owner = ownerTab;
|
||||||
}
|
}
|
||||||
@@ -554,7 +554,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
if (
|
if (
|
||||||
!bulkOrderedOpen &&
|
!bulkOrderedOpen &&
|
||||||
((openerTab &&
|
((openerTab &&
|
||||||
@@ -4898,7 +5070,7 @@
|
@@ -4900,7 +5072,7 @@
|
||||||
let lastRelatedTab =
|
let lastRelatedTab =
|
||||||
openerTab && this.#lastRelatedTabMap.get(openerTab);
|
openerTab && this.#lastRelatedTabMap.get(openerTab);
|
||||||
let previousTab = lastRelatedTab || openerTab || this.selectedTab;
|
let previousTab = lastRelatedTab || openerTab || this.selectedTab;
|
||||||
@@ -563,7 +563,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
tabGroup = previousTab.group;
|
tabGroup = previousTab.group;
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
@@ -4914,7 +5086,7 @@
|
@@ -4916,7 +5088,7 @@
|
||||||
previousTab.splitview
|
previousTab.splitview
|
||||||
) + 1;
|
) + 1;
|
||||||
} else if (previousTab.visible) {
|
} else if (previousTab.visible) {
|
||||||
@@ -572,7 +572,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
} else if (previousTab == FirefoxViewHandler.tab) {
|
} else if (previousTab == FirefoxViewHandler.tab) {
|
||||||
elementIndex = 0;
|
elementIndex = 0;
|
||||||
}
|
}
|
||||||
@@ -4942,14 +5114,14 @@
|
@@ -4944,14 +5116,14 @@
|
||||||
}
|
}
|
||||||
// Ensure index is within bounds.
|
// Ensure index is within bounds.
|
||||||
if (tab.pinned) {
|
if (tab.pinned) {
|
||||||
@@ -591,7 +591,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
|
|
||||||
if (pinned && !itemAfter?.pinned) {
|
if (pinned && !itemAfter?.pinned) {
|
||||||
itemAfter = null;
|
itemAfter = null;
|
||||||
@@ -4966,7 +5138,7 @@
|
@@ -4968,7 +5140,7 @@
|
||||||
|
|
||||||
this.tabContainer._invalidateCachedTabs();
|
this.tabContainer._invalidateCachedTabs();
|
||||||
|
|
||||||
@@ -600,7 +600,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
if (
|
if (
|
||||||
(this.isTab(itemAfter) && itemAfter.group == tabGroup) ||
|
(this.isTab(itemAfter) && itemAfter.group == tabGroup) ||
|
||||||
this.isSplitViewWrapper(itemAfter)
|
this.isSplitViewWrapper(itemAfter)
|
||||||
@@ -4997,7 +5169,11 @@
|
@@ -4999,7 +5171,11 @@
|
||||||
const tabContainer = pinned
|
const tabContainer = pinned
|
||||||
? this.tabContainer.pinnedTabsContainer
|
? this.tabContainer.pinnedTabsContainer
|
||||||
: this.tabContainer;
|
: this.tabContainer;
|
||||||
@@ -612,7 +612,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (tab.group?.collapsed) {
|
if (tab.group?.collapsed) {
|
||||||
@@ -5012,6 +5188,7 @@
|
@@ -5014,6 +5190,7 @@
|
||||||
if (pinned) {
|
if (pinned) {
|
||||||
this._updateTabBarForPinnedTabs();
|
this._updateTabBarForPinnedTabs();
|
||||||
}
|
}
|
||||||
@@ -620,7 +620,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
|
|
||||||
TabBarVisibility.update();
|
TabBarVisibility.update();
|
||||||
}
|
}
|
||||||
@@ -5568,6 +5745,7 @@
|
@@ -5577,6 +5754,7 @@
|
||||||
metricsContext,
|
metricsContext,
|
||||||
} = {}
|
} = {}
|
||||||
) {
|
) {
|
||||||
@@ -628,7 +628,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs
|
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs
|
||||||
// can be considered equivalent to closing the window.
|
// can be considered equivalent to closing the window.
|
||||||
if (
|
if (
|
||||||
@@ -5678,6 +5856,7 @@
|
@@ -5687,6 +5865,7 @@
|
||||||
closedTabCount -= 1;
|
closedTabCount -= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -636,7 +636,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
|
|
||||||
if (closedTabCount > 0) {
|
if (closedTabCount > 0) {
|
||||||
this.recordTabMetrics(
|
this.recordTabMetrics(
|
||||||
@@ -5730,6 +5909,14 @@
|
@@ -5761,6 +5940,14 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -651,7 +651,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
let isVisibleTab = aTab.visible;
|
let isVisibleTab = aTab.visible;
|
||||||
// We have to sample the tab width now, since _beginRemoveTab might
|
// We have to sample the tab width now, since _beginRemoveTab might
|
||||||
// end up modifying the DOM in such a way that aTab gets a new
|
// end up modifying the DOM in such a way that aTab gets a new
|
||||||
@@ -5737,6 +5924,9 @@
|
@@ -5768,6 +5955,9 @@
|
||||||
// state).
|
// state).
|
||||||
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
|
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
|
||||||
let isLastTab = this.#isLastTabInWindow(aTab);
|
let isLastTab = this.#isLastTabInWindow(aTab);
|
||||||
@@ -661,7 +661,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
if (
|
if (
|
||||||
!this._beginRemoveTab(aTab, {
|
!this._beginRemoveTab(aTab, {
|
||||||
closeWindowFastpath: true,
|
closeWindowFastpath: true,
|
||||||
@@ -5747,13 +5937,14 @@
|
@@ -5778,13 +5968,14 @@
|
||||||
metricsContext,
|
metricsContext,
|
||||||
})
|
})
|
||||||
) {
|
) {
|
||||||
@@ -677,7 +677,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
let lockTabSizing =
|
let lockTabSizing =
|
||||||
!this.tabContainer.verticalMode &&
|
!this.tabContainer.verticalMode &&
|
||||||
!aTab.pinned &&
|
!aTab.pinned &&
|
||||||
@@ -5784,7 +5975,13 @@
|
@@ -5815,7 +6006,13 @@
|
||||||
// We're not animating, so we can cancel the animation stopwatch.
|
// We're not animating, so we can cancel the animation stopwatch.
|
||||||
Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId);
|
Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId);
|
||||||
aTab._closeTimeAnimTimerId = null;
|
aTab._closeTimeAnimTimerId = null;
|
||||||
@@ -692,7 +692,18 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5827,7 +6024,7 @@
|
@@ -5855,7 +6052,9 @@
|
||||||
|
get #shouldCloseWindowWithLastTab() {
|
||||||
|
return (
|
||||||
|
!window.toolbar.visible ||
|
||||||
|
- Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab")
|
||||||
|
+ (Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab") &&
|
||||||
|
+ !gZenWorkspaces._isClosingWindow &&
|
||||||
|
+ !gZenWorkspaces._removedByStartupPage)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -5871,7 +6070,7 @@
|
||||||
*/
|
*/
|
||||||
#isLastTabInWindow(tab) {
|
#isLastTabInWindow(tab) {
|
||||||
for (const otherTab of this.tabs) {
|
for (const otherTab of this.tabs) {
|
||||||
@@ -701,16 +712,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5917,7 +6114,7 @@
|
@@ -5982,6 +6181,7 @@
|
||||||
closeWindowWithLastTab != null
|
|
||||||
? closeWindowWithLastTab
|
|
||||||
: !window.toolbar.visible ||
|
|
||||||
- Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab");
|
|
||||||
+ Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab") && !gZenWorkspaces._isClosingWindow && !gZenWorkspaces._removedByStartupPage;
|
|
||||||
|
|
||||||
if (closeWindow) {
|
|
||||||
// We've already called beforeunload on all the relevant tabs if we get here,
|
|
||||||
@@ -5941,6 +6138,7 @@
|
|
||||||
|
|
||||||
newTab = true;
|
newTab = true;
|
||||||
}
|
}
|
||||||
@@ -718,8 +720,8 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
aTab._endRemoveArgs = [closeWindow, newTab];
|
aTab._endRemoveArgs = [closeWindow, newTab];
|
||||||
|
|
||||||
// swapBrowsersAndCloseOther will take care of closing the window without animation.
|
// swapBrowsersAndCloseOther will take care of closing the window without animation.
|
||||||
@@ -5982,13 +6180,7 @@
|
@@ -6029,13 +6229,7 @@
|
||||||
aTab._mouseleave();
|
}
|
||||||
|
|
||||||
if (newTab) {
|
if (newTab) {
|
||||||
- this.addTrustedTab(BROWSER_NEW_TAB_URL, {
|
- this.addTrustedTab(BROWSER_NEW_TAB_URL, {
|
||||||
@@ -733,7 +735,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
} else {
|
} else {
|
||||||
TabBarVisibility.update();
|
TabBarVisibility.update();
|
||||||
}
|
}
|
||||||
@@ -6128,6 +6320,7 @@
|
@@ -6192,6 +6386,7 @@
|
||||||
this.tabs[i]._tPos = i;
|
this.tabs[i]._tPos = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -741,7 +743,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
if (!this.#windowIsClosing) {
|
if (!this.#windowIsClosing) {
|
||||||
// update tab close buttons state
|
// update tab close buttons state
|
||||||
this.tabContainer._updateCloseButtons();
|
this.tabContainer._updateCloseButtons();
|
||||||
@@ -6313,6 +6506,7 @@
|
@@ -6377,6 +6572,7 @@
|
||||||
memory_after: await getTotalMemoryUsage(),
|
memory_after: await getTotalMemoryUsage(),
|
||||||
time_to_unload_in_ms: timeElapsed,
|
time_to_unload_in_ms: timeElapsed,
|
||||||
});
|
});
|
||||||
@@ -749,7 +751,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -6358,6 +6552,7 @@
|
@@ -6422,6 +6618,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
let excludeTabs = new Set(aExcludeTabs);
|
let excludeTabs = new Set(aExcludeTabs);
|
||||||
@@ -757,7 +759,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
|
|
||||||
// If this tab has a successor, it should be selectable, since
|
// If this tab has a successor, it should be selectable, since
|
||||||
// hiding or closing a tab removes that tab as a successor.
|
// hiding or closing a tab removes that tab as a successor.
|
||||||
@@ -6370,13 +6565,13 @@
|
@@ -6434,13 +6631,13 @@
|
||||||
!excludeTabs.has(aTab.owner) &&
|
!excludeTabs.has(aTab.owner) &&
|
||||||
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
|
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
|
||||||
) {
|
) {
|
||||||
@@ -773,7 +775,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (Services.prefs.getBoolPref("browser.tabs.selectMRUOnClose", false)) {
|
if (Services.prefs.getBoolPref("browser.tabs.selectMRUOnClose", false)) {
|
||||||
@@ -6392,6 +6587,13 @@
|
@@ -6456,6 +6653,13 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -787,7 +789,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
let tab = this.tabContainer.findNextTab(aTab, {
|
let tab = this.tabContainer.findNextTab(aTab, {
|
||||||
direction: 1,
|
direction: 1,
|
||||||
filter: _tab => remainingTabs.includes(_tab),
|
filter: _tab => remainingTabs.includes(_tab),
|
||||||
@@ -6405,7 +6607,7 @@
|
@@ -6469,7 +6673,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tab) {
|
if (tab) {
|
||||||
@@ -796,7 +798,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If no qualifying visible tab was found, see if there is a tab in
|
// If no qualifying visible tab was found, see if there is a tab in
|
||||||
@@ -6426,7 +6628,7 @@
|
@@ -6490,7 +6694,7 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -805,7 +807,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
}
|
}
|
||||||
|
|
||||||
_blurTab(aTab) {
|
_blurTab(aTab) {
|
||||||
@@ -6437,7 +6639,7 @@
|
@@ -6501,7 +6705,7 @@
|
||||||
* @returns {boolean}
|
* @returns {boolean}
|
||||||
* False if swapping isn't permitted, true otherwise.
|
* False if swapping isn't permitted, true otherwise.
|
||||||
*/
|
*/
|
||||||
@@ -814,7 +816,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
// Do not allow transfering a private tab to a non-private window
|
// Do not allow transfering a private tab to a non-private window
|
||||||
// and vice versa.
|
// and vice versa.
|
||||||
if (
|
if (
|
||||||
@@ -6491,6 +6693,7 @@
|
@@ -6555,6 +6759,7 @@
|
||||||
// fire the beforeunload event in the process. Close the other
|
// fire the beforeunload event in the process. Close the other
|
||||||
// window if this was its last tab.
|
// window if this was its last tab.
|
||||||
if (
|
if (
|
||||||
@@ -822,7 +824,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
!remoteBrowser._beginRemoveTab(aOtherTab, {
|
!remoteBrowser._beginRemoveTab(aOtherTab, {
|
||||||
adoptedByTab: aOurTab,
|
adoptedByTab: aOurTab,
|
||||||
closeWindowWithLastTab: true,
|
closeWindowWithLastTab: true,
|
||||||
@@ -6502,7 +6705,7 @@
|
@@ -6566,7 +6771,7 @@
|
||||||
// If this is the last tab of the window, hide the window
|
// If this is the last tab of the window, hide the window
|
||||||
// immediately without animation before the docshell swap, to avoid
|
// immediately without animation before the docshell swap, to avoid
|
||||||
// about:blank being painted.
|
// about:blank being painted.
|
||||||
@@ -831,7 +833,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
if (closeWindow) {
|
if (closeWindow) {
|
||||||
let win = aOtherTab.documentGlobal;
|
let win = aOtherTab.documentGlobal;
|
||||||
win.windowUtils.suppressAnimation(true);
|
win.windowUtils.suppressAnimation(true);
|
||||||
@@ -6636,11 +6839,13 @@
|
@@ -6700,11 +6905,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finish tearing down the tab that's going away.
|
// Finish tearing down the tab that's going away.
|
||||||
@@ -845,7 +847,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
|
|
||||||
this.setTabTitle(aOurTab);
|
this.setTabTitle(aOurTab);
|
||||||
|
|
||||||
@@ -6860,10 +7065,10 @@
|
@@ -6928,10 +7135,10 @@
|
||||||
SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
|
SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -858,7 +860,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
aTab.selected ||
|
aTab.selected ||
|
||||||
aTab.closing ||
|
aTab.closing ||
|
||||||
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
|
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
|
||||||
@@ -6923,7 +7128,8 @@
|
@@ -6991,7 +7198,8 @@
|
||||||
* @param {object} [aOptions={}]
|
* @param {object} [aOptions={}]
|
||||||
* Key-value pairs that will be serialized into the features string.
|
* Key-value pairs that will be serialized into the features string.
|
||||||
*/
|
*/
|
||||||
@@ -868,7 +870,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
if (this.tabs.length == 1) {
|
if (this.tabs.length == 1) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -6940,7 +7146,7 @@
|
@@ -7008,7 +7216,7 @@
|
||||||
// tell a new window to take the "dropped" tab
|
// tell a new window to take the "dropped" tab
|
||||||
let args = Cc["@mozilla.org/array;1"].createInstance(Ci.nsIMutableArray);
|
let args = Cc["@mozilla.org/array;1"].createInstance(Ci.nsIMutableArray);
|
||||||
args.appendElement(aTab.splitview ?? aTab);
|
args.appendElement(aTab.splitview ?? aTab);
|
||||||
@@ -877,7 +879,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
private: PrivateBrowsingUtils.isWindowPrivate(window),
|
private: PrivateBrowsingUtils.isWindowPrivate(window),
|
||||||
features: Object.entries(aOptions)
|
features: Object.entries(aOptions)
|
||||||
.map(([key, value]) => `${key}=${value}`)
|
.map(([key, value]) => `${key}=${value}`)
|
||||||
@@ -6948,6 +7154,8 @@
|
@@ -7016,6 +7224,8 @@
|
||||||
openerWindow: window,
|
openerWindow: window,
|
||||||
args,
|
args,
|
||||||
});
|
});
|
||||||
@@ -886,7 +888,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -7074,7 +7282,7 @@
|
@@ -7142,7 +7352,7 @@
|
||||||
* `true` if element is a `<tab-group>`
|
* `true` if element is a `<tab-group>`
|
||||||
*/
|
*/
|
||||||
isTabGroup(element) {
|
isTabGroup(element) {
|
||||||
@@ -895,7 +897,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -7146,8 +7354,8 @@
|
@@ -7214,8 +7424,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't allow mixing pinned and unpinned tabs.
|
// Don't allow mixing pinned and unpinned tabs.
|
||||||
@@ -906,7 +908,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
} else {
|
} else {
|
||||||
tabIndex = Math.max(tabIndex, this.pinnedTabCount);
|
tabIndex = Math.max(tabIndex, this.pinnedTabCount);
|
||||||
}
|
}
|
||||||
@@ -7193,8 +7401,8 @@
|
@@ -7261,8 +7471,8 @@
|
||||||
this.#handleTabMove(
|
this.#handleTabMove(
|
||||||
element,
|
element,
|
||||||
() => {
|
() => {
|
||||||
@@ -917,7 +919,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
neighbor = neighbor.group;
|
neighbor = neighbor.group;
|
||||||
}
|
}
|
||||||
if (neighbor?.splitview) {
|
if (neighbor?.splitview) {
|
||||||
@@ -7205,6 +7413,12 @@
|
@@ -7273,6 +7483,12 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -930,7 +932,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
|
|
||||||
if (movingForwards && neighbor) {
|
if (movingForwards && neighbor) {
|
||||||
neighbor.after(element);
|
neighbor.after(element);
|
||||||
@@ -7278,23 +7492,31 @@
|
@@ -7346,23 +7562,31 @@
|
||||||
) {
|
) {
|
||||||
if (this.isTabGroupLabel(targetElement)) {
|
if (this.isTabGroupLabel(targetElement)) {
|
||||||
targetElement = targetElement.group;
|
targetElement = targetElement.group;
|
||||||
@@ -968,7 +970,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
} else if (!element.pinned && targetElement && targetElement.pinned) {
|
} else if (!element.pinned && targetElement && targetElement.pinned) {
|
||||||
// If the caller asks to move an unpinned element next to a pinned
|
// If the caller asks to move an unpinned element next to a pinned
|
||||||
// tab, move the unpinned element to be the first unpinned element
|
// tab, move the unpinned element to be the first unpinned element
|
||||||
@@ -7307,12 +7529,35 @@
|
@@ -7375,12 +7599,35 @@
|
||||||
// move the tab group right before the first unpinned tab.
|
// move the tab group right before the first unpinned tab.
|
||||||
// 4. Moving a tab group and the first unpinned tab is grouped:
|
// 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.
|
// move the tab group right before the first unpinned tab's tab group.
|
||||||
@@ -1005,7 +1007,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
|
|
||||||
// We want to include the splitview wrapper if it's the targetElement, but
|
// We want to include the splitview wrapper if it's the targetElement, but
|
||||||
// not in the case where we want to reverse tabs within the same splitview.
|
// not in the case where we want to reverse tabs within the same splitview.
|
||||||
@@ -7321,6 +7566,7 @@
|
@@ -7389,6 +7636,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
let getContainer = () =>
|
let getContainer = () =>
|
||||||
@@ -1013,7 +1015,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
element.pinned
|
element.pinned
|
||||||
? this.tabContainer.pinnedTabsContainer
|
? this.tabContainer.pinnedTabsContainer
|
||||||
: this.tabContainer;
|
: this.tabContainer;
|
||||||
@@ -7329,11 +7575,15 @@
|
@@ -7397,11 +7645,15 @@
|
||||||
element,
|
element,
|
||||||
() => {
|
() => {
|
||||||
if (moveBefore) {
|
if (moveBefore) {
|
||||||
@@ -1030,7 +1032,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ metricsContext }
|
{ metricsContext }
|
||||||
@@ -7411,11 +7661,15 @@
|
@@ -7479,11 +7731,15 @@
|
||||||
* The context for the operation for telemetry purposes.
|
* The context for the operation for telemetry purposes.
|
||||||
*/
|
*/
|
||||||
moveTabToExistingGroup(aTab, aGroup, { metricsContext } = {}) {
|
moveTabToExistingGroup(aTab, aGroup, { metricsContext } = {}) {
|
||||||
@@ -1049,7 +1051,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
}
|
}
|
||||||
if (aTab.group && aTab.group.id === aGroup.id) {
|
if (aTab.group && aTab.group.id === aGroup.id) {
|
||||||
return;
|
return;
|
||||||
@@ -7489,6 +7743,7 @@
|
@@ -7557,6 +7813,7 @@
|
||||||
|
|
||||||
let state = {
|
let state = {
|
||||||
tabIndex: tab._tPos,
|
tabIndex: tab._tPos,
|
||||||
@@ -1057,7 +1059,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
};
|
};
|
||||||
if (tab.visible) {
|
if (tab.visible) {
|
||||||
state.elementIndex = tab.elementIndex;
|
state.elementIndex = tab.elementIndex;
|
||||||
@@ -7527,7 +7782,7 @@
|
@@ -7595,7 +7852,7 @@
|
||||||
let changedSplitView =
|
let changedSplitView =
|
||||||
previousTabState.splitViewId != currentTabState.splitViewId;
|
previousTabState.splitViewId != currentTabState.splitViewId;
|
||||||
|
|
||||||
@@ -1066,7 +1068,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
tab.dispatchEvent(
|
tab.dispatchEvent(
|
||||||
new CustomEvent("TabMove", {
|
new CustomEvent("TabMove", {
|
||||||
bubbles: true,
|
bubbles: true,
|
||||||
@@ -7579,6 +7834,10 @@
|
@@ -7647,6 +7904,10 @@
|
||||||
|
|
||||||
moveActionCallback();
|
moveActionCallback();
|
||||||
|
|
||||||
@@ -1077,7 +1079,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
// Clear tabs cache after moving nodes because the order of tabs may have
|
// Clear tabs cache after moving nodes because the order of tabs may have
|
||||||
// changed.
|
// changed.
|
||||||
this.tabContainer._invalidateCachedTabs();
|
this.tabContainer._invalidateCachedTabs();
|
||||||
@@ -7626,7 +7885,22 @@
|
@@ -7694,7 +7955,22 @@
|
||||||
* @returns {object}
|
* @returns {object}
|
||||||
* The new tab in the current window, null if the tab couldn't be adopted.
|
* The new tab in the current window, null if the tab couldn't be adopted.
|
||||||
*/
|
*/
|
||||||
@@ -1101,7 +1103,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
// Swap the dropped tab with a new one we create and then close
|
// Swap the dropped tab with a new one we create and then close
|
||||||
// it in the other window (making it seem to have moved between
|
// it in the other window (making it seem to have moved between
|
||||||
// windows). We also ensure that the tab we create to swap into has
|
// windows). We also ensure that the tab we create to swap into has
|
||||||
@@ -7669,6 +7943,8 @@
|
@@ -7737,6 +8013,8 @@
|
||||||
}
|
}
|
||||||
params.skipLoad = true;
|
params.skipLoad = true;
|
||||||
let newTab = this.addWebTab("about:blank", params);
|
let newTab = this.addWebTab("about:blank", params);
|
||||||
@@ -1110,7 +1112,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
|
|
||||||
aTab.container.tabDragAndDrop.finishAnimateTabMove();
|
aTab.container.tabDragAndDrop.finishAnimateTabMove();
|
||||||
|
|
||||||
@@ -8448,7 +8724,7 @@
|
@@ -8516,7 +8794,7 @@
|
||||||
// preventDefault(). It will still raise the window if appropriate.
|
// preventDefault(). It will still raise the window if appropriate.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1119,7 +1121,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
window.focus();
|
window.focus();
|
||||||
aEvent.preventDefault();
|
aEvent.preventDefault();
|
||||||
}
|
}
|
||||||
@@ -8465,7 +8741,6 @@
|
@@ -8533,7 +8811,6 @@
|
||||||
|
|
||||||
on_TabGroupCollapse(aEvent) {
|
on_TabGroupCollapse(aEvent) {
|
||||||
aEvent.target.tabs.forEach(tab => {
|
aEvent.target.tabs.forEach(tab => {
|
||||||
@@ -1127,7 +1129,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -8819,7 +9094,9 @@
|
@@ -8887,7 +9164,9 @@
|
||||||
|
|
||||||
let filter = this.#tabFilters.get(tab);
|
let filter = this.#tabFilters.get(tab);
|
||||||
if (filter) {
|
if (filter) {
|
||||||
@@ -1137,7 +1139,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
|
|
||||||
let listener = this.#tabListeners.get(tab);
|
let listener = this.#tabListeners.get(tab);
|
||||||
if (listener) {
|
if (listener) {
|
||||||
@@ -9604,6 +9881,7 @@
|
@@ -9676,6 +9955,7 @@
|
||||||
aWebProgress.isTopLevel
|
aWebProgress.isTopLevel
|
||||||
) {
|
) {
|
||||||
this._tab.setAttribute("busy", "true");
|
this._tab.setAttribute("busy", "true");
|
||||||
@@ -1145,7 +1147,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
gBrowser._tabAttrModified(this._tab, ["busy"]);
|
gBrowser._tabAttrModified(this._tab, ["busy"]);
|
||||||
this._tab._notselectedsinceload = !this._tab.selected;
|
this._tab._notselectedsinceload = !this._tab.selected;
|
||||||
}
|
}
|
||||||
@@ -9684,6 +9962,7 @@
|
@@ -9756,6 +10036,7 @@
|
||||||
// known defaults. Note we use the original URL since about:newtab
|
// known defaults. Note we use the original URL since about:newtab
|
||||||
// redirects to a prerendered page.
|
// redirects to a prerendered page.
|
||||||
const shouldRemoveFavicon =
|
const shouldRemoveFavicon =
|
||||||
@@ -1153,7 +1155,7 @@ index 39b5babee5942427a82a7a64ad69e1b16efebcc1..32beac13dd4215a16de3a783db6c32da
|
|||||||
!this._browser.mIconURL &&
|
!this._browser.mIconURL &&
|
||||||
!ignoreBlank &&
|
!ignoreBlank &&
|
||||||
!(originalLocation.spec in FAVICON_DEFAULTS);
|
!(originalLocation.spec in FAVICON_DEFAULTS);
|
||||||
@@ -9858,13 +10137,6 @@
|
@@ -9930,13 +10211,6 @@
|
||||||
this._browser.originalURI = aRequest.originalURI;
|
this._browser.originalURI = aRequest.originalURI;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/browser/components/urlbar/UrlbarPrefs.sys.mjs b/browser/components/urlbar/UrlbarPrefs.sys.mjs
|
diff --git a/browser/components/urlbar/UrlbarPrefs.sys.mjs b/browser/components/urlbar/UrlbarPrefs.sys.mjs
|
||||||
index 89f0d44d462de3d7d0f581d6371606f475443822..0d45ce5f6455e9c7276c54f504906bade5b3d286 100644
|
index e48f0295d803ba9eac5ab9d01ebb3b3dacbc9d4b..cb78b74230f63a47479404767b5ab5883278dfba 100644
|
||||||
--- a/browser/components/urlbar/UrlbarPrefs.sys.mjs
|
--- a/browser/components/urlbar/UrlbarPrefs.sys.mjs
|
||||||
+++ b/browser/components/urlbar/UrlbarPrefs.sys.mjs
|
+++ b/browser/components/urlbar/UrlbarPrefs.sys.mjs
|
||||||
@@ -163,6 +163,9 @@ const PREF_URLBAR_DEFAULTS = /** @type {PreferenceDefinition[]} */ ([
|
@@ -161,6 +161,9 @@ const PREF_URLBAR_DEFAULTS = /** @type {PreferenceDefinition[]} */ ([
|
||||||
// Feature gate pref for flight status suggestions in the urlbar.
|
// Feature gate pref for flight status suggestions in the urlbar.
|
||||||
["flightStatus.featureGate", false],
|
["flightStatus.featureGate", false],
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@ index 89f0d44d462de3d7d0f581d6371606f475443822..0d45ce5f6455e9c7276c54f504906bad
|
|||||||
// The minimum prefix length of a flight status keyword the user must type to
|
// The minimum prefix length of a flight status keyword the user must type to
|
||||||
// trigger the suggestion. 0 means the min length should be taken from Nimbus
|
// trigger the suggestion. 0 means the min length should be taken from Nimbus
|
||||||
// or remote settings.
|
// or remote settings.
|
||||||
@@ -482,6 +485,7 @@ const PREF_URLBAR_DEFAULTS = /** @type {PreferenceDefinition[]} */ ([
|
@@ -486,6 +489,7 @@ const PREF_URLBAR_DEFAULTS = /** @type {PreferenceDefinition[]} */ ([
|
||||||
["shortcuts.tabs", true],
|
["shortcuts.tabs", true],
|
||||||
["shortcuts.history", true],
|
["shortcuts.history", true],
|
||||||
["shortcuts.actions", true],
|
["shortcuts.actions", true],
|
||||||
@@ -20,12 +20,12 @@ index 89f0d44d462de3d7d0f581d6371606f475443822..0d45ce5f6455e9c7276c54f504906bad
|
|||||||
|
|
||||||
// Boolean to determine if the providers defined in `exposureResults`
|
// Boolean to determine if the providers defined in `exposureResults`
|
||||||
// should be displayed in search results. This can be set by a
|
// should be displayed in search results. This can be set by a
|
||||||
@@ -840,6 +844,8 @@ function makeDefaultResultGroups({
|
@@ -854,6 +858,8 @@ function makeDefaultResultGroups({
|
||||||
*/
|
*/
|
||||||
let rootGroup = {
|
let rootGroup = {
|
||||||
children: [
|
children: [
|
||||||
+ { children: [{ group: lazy.UrlbarUtils.RESULT_GROUP.ZEN_ACTION }] },
|
+ { children: [{ group: lazy.UrlbarShared.RESULT_GROUP.ZEN_ACTION }] },
|
||||||
+ { children: [{ group: lazy.UrlbarUtils.RESULT_GROUP.ZEN_WORKSPACE }] },
|
+ { children: [{ group: lazy.UrlbarShared.RESULT_GROUP.ZEN_WORKSPACE }] },
|
||||||
// heuristic
|
// heuristic
|
||||||
{
|
{
|
||||||
maxResultCount: 1,
|
maxResultCount: 1,
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs b/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs
|
diff --git a/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs b/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs
|
||||||
index f611d8e44af518aa1adc7505c5021235f55b49de..0eca20cb869626dfa6ace02acc00cad84462d54f 100644
|
index cfc232f038cd491db32e0c0ca35622360dd9dec5..4806a725ddefa9d0709020d537eae5464249a294 100644
|
||||||
--- a/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs
|
--- a/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs
|
||||||
+++ b/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs
|
+++ b/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs
|
||||||
@@ -78,22 +78,26 @@ export class UrlbarProviderHeuristicFallback extends UrlbarProvider {
|
@@ -77,22 +77,26 @@ export class UrlbarProviderHeuristicFallback extends UrlbarProvider {
|
||||||
// Since we can't tell if this is a real URL and whether the user wants
|
// Since we can't tell if this is a real URL and whether the user wants
|
||||||
// to visit or search for it, we provide an alternative searchengine
|
// to visit or search for it, we provide an alternative searchengine
|
||||||
// match if the string looks like an alphanumeric origin or an e-mail.
|
// match if the string looks like an alphanumeric origin or an e-mail.
|
||||||
@@ -17,7 +17,7 @@ index f611d8e44af518aa1adc7505c5021235f55b49de..0eca20cb869626dfa6ace02acc00cad8
|
|||||||
- lazy.UrlUtils.REGEXP_COMMON_EMAIL.test(str))
|
- lazy.UrlUtils.REGEXP_COMMON_EMAIL.test(str))
|
||||||
- ) {
|
- ) {
|
||||||
+ let trimmedSearchString = queryContext.trimmedSearchString;
|
+ let trimmedSearchString = queryContext.trimmedSearchString;
|
||||||
+ let [searchCandidate] = UrlbarUtils.stripPrefixAndTrim(
|
+ let [searchCandidate] = lazy.UrlbarShared.stripPrefixAndTrim(
|
||||||
+ trimmedSearchString,
|
+ trimmedSearchString,
|
||||||
+ {
|
+ {
|
||||||
+ trimSlash: true,
|
+ trimSlash: true,
|
||||||
|
|||||||
@@ -1,41 +1,16 @@
|
|||||||
diff --git a/browser/components/urlbar/UrlbarUtils.sys.mjs b/browser/components/urlbar/UrlbarUtils.sys.mjs
|
diff --git a/browser/components/urlbar/UrlbarUtils.sys.mjs b/browser/components/urlbar/UrlbarUtils.sys.mjs
|
||||||
index 78c76bde00b6b581184cee1cd0e1756e5f2da6a4..94c713470b1240729ef2350d090b0449f3801af4 100644
|
index 178cd5e84fda74a28b2de59b671b3399cc28fac4..b03c6e06de4ee9a95dcb4d33d7ac9f0b053be4e1 100644
|
||||||
--- a/browser/components/urlbar/UrlbarUtils.sys.mjs
|
--- a/browser/components/urlbar/UrlbarUtils.sys.mjs
|
||||||
+++ b/browser/components/urlbar/UrlbarUtils.sys.mjs
|
+++ b/browser/components/urlbar/UrlbarUtils.sys.mjs
|
||||||
@@ -126,6 +126,8 @@ export var UrlbarUtils = {
|
@@ -214,6 +214,11 @@ export var UrlbarUtils = {
|
||||||
SEMANTIC_HISTORY: "semanticHistory",
|
return UrlbarShared.RESULT_GROUP.HEURISTIC_FALLBACK;
|
||||||
SUGGESTED_INDEX: "suggestedIndex",
|
|
||||||
TAIL_SUGGESTION: "tailSuggestion",
|
|
||||||
+ ZEN_ACTION: "zenAction",
|
|
||||||
+ ZEN_WORKSPACE: "zenWorkspace",
|
|
||||||
}),
|
|
||||||
|
|
||||||
// Defines provider types.
|
|
||||||
@@ -274,6 +276,14 @@ export var UrlbarUtils = {
|
|
||||||
telemetryLabel: "actions",
|
|
||||||
uiLabel: "urlbar-searchmode-actions3",
|
|
||||||
},
|
|
||||||
+ {
|
|
||||||
+ source: UrlbarShared.RESULT_SOURCE.WORKSPACES,
|
|
||||||
+ restrict: UrlbarShared.RESTRICT_TOKENS.WORKSPACE,
|
|
||||||
+ icon: "chrome://browser/skin/zen-icons/selectable/layers.svg",
|
|
||||||
+ pref: "shortcuts.workspaces",
|
|
||||||
+ telemetryLabel: "workspaces",
|
|
||||||
+ uiLabel: "urlbar-search-mode-workspaces",
|
|
||||||
+ },
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
|
|
||||||
@@ -566,6 +576,12 @@ export var UrlbarUtils = {
|
|
||||||
return this.RESULT_GROUP.HEURISTIC_FALLBACK;
|
|
||||||
case "UrlbarProviderHistoryUrlHeuristic":
|
case "UrlbarProviderHistoryUrlHeuristic":
|
||||||
return this.RESULT_GROUP.HEURISTIC_HISTORY_URL;
|
return UrlbarShared.RESULT_GROUP.HEURISTIC_HISTORY_URL;
|
||||||
+ case "ZenUrlbarProviderGlobalActions":
|
+ case "ZenUrlbarProviderGlobalActions":
|
||||||
+ if (result.source == UrlbarShared.RESULT_SOURCE.WORKSPACES) {
|
+ if (result.source == UrlbarShared.RESULT_SOURCE.WORKSPACES) {
|
||||||
+ return this.RESULT_GROUP.ZEN_WORKSPACE;
|
+ return UrlbarShared.RESULT_GROUP.ZEN_WORKSPACE;
|
||||||
+ } else {
|
|
||||||
+ return this.RESULT_GROUP.ZEN_ACTION;
|
|
||||||
+ }
|
+ }
|
||||||
|
+ return UrlbarShared.RESULT_GROUP.ZEN_ACTION;
|
||||||
case "UrlbarProviderOmnibox":
|
case "UrlbarProviderOmnibox":
|
||||||
return this.RESULT_GROUP.HEURISTIC_OMNIBOX;
|
return UrlbarShared.RESULT_GROUP.HEURISTIC_OMNIBOX;
|
||||||
case "UrlbarProviderRestrictKeywordsAutofill":
|
case "UrlbarProviderRestrictKeywordsAutofill":
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/browser/components/urlbar/content/UrlbarChildController.mjs b/browser/components/urlbar/content/UrlbarChildController.mjs
|
diff --git a/browser/components/urlbar/content/UrlbarChildController.mjs b/browser/components/urlbar/content/UrlbarChildController.mjs
|
||||||
index a8e9d3093d046612650a17970330a8279f55833f..063a3e8adf009d6c0ddc60430bc0e7485e812b8a 100644
|
index a17a4de079b69d2818388b33a2c1746cc6148c73..4fee63a22919972af08716db2d2de1c7549ff100 100644
|
||||||
--- a/browser/components/urlbar/content/UrlbarChildController.mjs
|
--- a/browser/components/urlbar/content/UrlbarChildController.mjs
|
||||||
+++ b/browser/components/urlbar/content/UrlbarChildController.mjs
|
+++ b/browser/components/urlbar/content/UrlbarChildController.mjs
|
||||||
@@ -258,7 +258,6 @@ export class UrlbarChildController {
|
@@ -438,7 +438,6 @@ export class UrlbarChildController {
|
||||||
const isMac = AppConstants.platform == "macosx";
|
const isMac = AppConstants.platform == "macosx";
|
||||||
// Handle readline/emacs-style navigation bindings on Mac.
|
// Handle readline/emacs-style navigation bindings on Mac.
|
||||||
if (
|
if (
|
||||||
@@ -10,7 +10,7 @@ index a8e9d3093d046612650a17970330a8279f55833f..063a3e8adf009d6c0ddc60430bc0e748
|
|||||||
this.view.isOpen &&
|
this.view.isOpen &&
|
||||||
event.ctrlKey &&
|
event.ctrlKey &&
|
||||||
(event.key == "n" || event.key == "p")
|
(event.key == "n" || event.key == "p")
|
||||||
@@ -450,6 +449,8 @@ export class UrlbarChildController {
|
@@ -630,6 +629,8 @@ export class UrlbarChildController {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
@@ -19,3 +19,25 @@ index a8e9d3093d046612650a17970330a8279f55833f..063a3e8adf009d6c0ddc60430bc0e748
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -934,6 +935,10 @@ export class UrlbarChildController {
|
||||||
|
}
|
||||||
|
reuseEmpty = true;
|
||||||
|
}
|
||||||
|
+ if (this.#input.hasAttribute?.("zen-newtab")) {
|
||||||
|
+ where = "tab";
|
||||||
|
+ reuseEmpty = true;
|
||||||
|
+ }
|
||||||
|
// The browser window exists only in chrome; a content-process input has no
|
||||||
|
// tab to reuse, so `gBrowser` is absent and the reuse is skipped.
|
||||||
|
if (
|
||||||
|
@@ -943,6 +948,10 @@ export class UrlbarChildController {
|
||||||
|
) {
|
||||||
|
where = "current";
|
||||||
|
}
|
||||||
|
+ if (this.window.gBrowser?.selectedTab.hasAttribute("zen-empty-tab")) {
|
||||||
|
+ // Always open in a new tab if the current tab is our empty tab.
|
||||||
|
+ return "tab";
|
||||||
|
+ }
|
||||||
|
return where;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/browser/components/urlbar/content/UrlbarInput.mjs b/browser/components/urlbar/content/UrlbarInput.mjs
|
diff --git a/browser/components/urlbar/content/UrlbarInput.mjs b/browser/components/urlbar/content/UrlbarInput.mjs
|
||||||
index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c396406a247e9 100644
|
index 319fb6870ec18d87b9f1263bd960edaa39b0447c..554cc90fb2307450ddc68033968cefd1a95e28b8 100644
|
||||||
--- a/browser/components/urlbar/content/UrlbarInput.mjs
|
--- a/browser/components/urlbar/content/UrlbarInput.mjs
|
||||||
+++ b/browser/components/urlbar/content/UrlbarInput.mjs
|
+++ b/browser/components/urlbar/content/UrlbarInput.mjs
|
||||||
@@ -101,6 +101,13 @@ const lazy = XPCOMUtils.declareLazy({
|
@@ -88,6 +88,13 @@ const lazy = XPCOMUtils.declareLazy({
|
||||||
logger: () => UrlbarShared.getLogger({ prefix: "Input" }),
|
logger: () => UrlbarShared.getLogger({ prefix: "Input" }),
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
const UNLIMITED_MAX_RESULTS = 99;
|
const UNLIMITED_MAX_RESULTS = 99;
|
||||||
|
|
||||||
let getBoundsWithoutFlushing = element =>
|
let getBoundsWithoutFlushing = element =>
|
||||||
@@ -769,7 +776,16 @@ ${
|
@@ -771,7 +778,16 @@ ${
|
||||||
// See _on_select(). HTMLInputElement.select() dispatches a "select"
|
// See _on_select(). HTMLInputElement.select() dispatches a "select"
|
||||||
// event but does not set the primary selection.
|
// event but does not set the primary selection.
|
||||||
this._suppressPrimaryAdjustment = true;
|
this._suppressPrimaryAdjustment = true;
|
||||||
@@ -33,7 +33,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
this._suppressPrimaryAdjustment = false;
|
this._suppressPrimaryAdjustment = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -843,6 +859,10 @@ ${
|
@@ -846,6 +862,10 @@ ${
|
||||||
hideSearchTerms = false,
|
hideSearchTerms = false,
|
||||||
isSameDocument = false,
|
isSameDocument = false,
|
||||||
} = {}) {
|
} = {}) {
|
||||||
@@ -44,7 +44,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
if (!this.#isAddressbar) {
|
if (!this.#isAddressbar) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
"Cannot set URI for UrlbarInput that is not an address bar"
|
"Cannot set URI for UrlbarInput that is not an address bar"
|
||||||
@@ -1137,7 +1157,16 @@ ${
|
@@ -1143,7 +1163,16 @@ ${
|
||||||
this.searchModeSwitcher?.updateSearchIcon();
|
this.searchModeSwitcher?.updateSearchIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1626,7 +1655,11 @@ ${
|
@@ -1726,7 +1755,11 @@ ${
|
||||||
openParams.avoidBrowserFocus = keepViewOpen;
|
openParams.avoidBrowserFocus = keepViewOpen;
|
||||||
|
|
||||||
if (!this.#providesSearchMode(result) && !keepViewOpen) {
|
if (!this.#providesSearchMode(result) && !keepViewOpen) {
|
||||||
@@ -74,7 +74,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isCanonized) {
|
if (isCanonized) {
|
||||||
@@ -2974,6 +3007,42 @@ ${
|
@@ -3016,6 +3049,42 @@ ${
|
||||||
await this.#updateLayoutBreakoutDimensions();
|
await this.#updateLayoutBreakoutDimensions();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
startLayoutExtend() {
|
startLayoutExtend() {
|
||||||
if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) {
|
if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) {
|
||||||
// Do not expand if the Urlbar does not support being expanded or it is
|
// Do not expand if the Urlbar does not support being expanded or it is
|
||||||
@@ -2988,6 +3057,13 @@ ${
|
@@ -3030,6 +3099,13 @@ ${
|
||||||
this.toggleAttribute("breakout-extend", true);
|
this.toggleAttribute("breakout-extend", true);
|
||||||
this.#updateTextboxPosition();
|
this.#updateTextboxPosition();
|
||||||
|
|
||||||
@@ -131,7 +131,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
// Enable the animation only after the first extend call to ensure it
|
// Enable the animation only after the first extend call to ensure it
|
||||||
// doesn't run when opening a new window.
|
// doesn't run when opening a new window.
|
||||||
if (!this.hasAttribute("breakout-extend-animate")) {
|
if (!this.hasAttribute("breakout-extend-animate")) {
|
||||||
@@ -3011,6 +3087,29 @@ ${
|
@@ -3053,6 +3129,29 @@ ${
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,7 +161,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
this.toggleAttribute("breakout-extend", false);
|
this.toggleAttribute("breakout-extend", false);
|
||||||
this.#updateTextboxPosition();
|
this.#updateTextboxPosition();
|
||||||
}
|
}
|
||||||
@@ -3049,7 +3148,7 @@ ${
|
@@ -3091,7 +3190,7 @@ ${
|
||||||
forceUnifiedSearchButtonAvailable = false
|
forceUnifiedSearchButtonAvailable = false
|
||||||
) {
|
) {
|
||||||
let prevState = this.getAttribute("pageproxystate");
|
let prevState = this.getAttribute("pageproxystate");
|
||||||
@@ -170,7 +170,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
this.setAttribute("pageproxystate", state);
|
this.setAttribute("pageproxystate", state);
|
||||||
this._inputContainer.setAttribute("pageproxystate", state);
|
this._inputContainer.setAttribute("pageproxystate", state);
|
||||||
this._identityBox?.setAttribute("pageproxystate", state);
|
this._identityBox?.setAttribute("pageproxystate", state);
|
||||||
@@ -3332,10 +3431,12 @@ ${
|
@@ -3355,10 +3454,12 @@ ${
|
||||||
}
|
}
|
||||||
|
|
||||||
this.style.top = px(
|
this.style.top = px(
|
||||||
@@ -183,7 +183,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3394,9 +3495,10 @@ ${
|
@@ -3417,9 +3518,10 @@ ${
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,9 +193,9 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
- px(getBoundsWithoutFlushing(this.parentNode).height)
|
- px(getBoundsWithoutFlushing(this.parentNode).height)
|
||||||
+ px(getBoundsWithoutFlushing(this.parentNode).height + 8)
|
+ px(getBoundsWithoutFlushing(this.parentNode).height + 8)
|
||||||
);
|
);
|
||||||
this.style.setProperty(
|
|
||||||
"--urlbar-height",
|
if (this.#breakoutBlockerCount) {
|
||||||
@@ -3902,6 +4004,7 @@ ${
|
@@ -3929,6 +4031,7 @@ ${
|
||||||
}
|
}
|
||||||
|
|
||||||
_toggleActionOverride(event) {
|
_toggleActionOverride(event) {
|
||||||
@@ -203,47 +203,33 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
if (
|
if (
|
||||||
event.keyCode == KeyEvent.DOM_VK_SHIFT ||
|
event.keyCode == KeyEvent.DOM_VK_SHIFT ||
|
||||||
event.keyCode == KeyEvent.DOM_VK_ALT ||
|
event.keyCode == KeyEvent.DOM_VK_ALT ||
|
||||||
@@ -4014,8 +4117,8 @@ ${
|
@@ -4027,9 +4130,10 @@ ${
|
||||||
if (!this.#isAddressbar) {
|
if (!this.#isAddressbar) {
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
- let trimmedValue = lazy.UrlbarPrefs.get("trimURLs")
|
- let trimmedValue = UrlbarPrefs.get("trimURLs")
|
||||||
- ? lazy.BrowserUIUtils.trimURL(val)
|
- ? lazy.BrowserUIUtils.trimURL(val)
|
||||||
+ let trimmedValue = lazy.UrlbarPrefs.get("trimURLs") && this._zenTrimURL
|
- : val;
|
||||||
+ ? this._zenTrimURL(val)
|
+ let trimmedValue =
|
||||||
: val;
|
+ UrlbarPrefs.get("trimURLs") && this._zenTrimURL
|
||||||
|
+ ? this._zenTrimURL(val)
|
||||||
|
+ : val;
|
||||||
// Only trim value if the directionality doesn't change to RTL and we're not
|
// Only trim value if the directionality doesn't change to RTL and we're not
|
||||||
// showing a strikeout https protocol.
|
// showing a strikeout https protocol.
|
||||||
@@ -4317,6 +4420,7 @@ ${
|
return this.controller.isTextDirectionRTL(trimmedValue) ||
|
||||||
browser = this.window.gBrowser.selectedBrowser,
|
@@ -4235,6 +4339,11 @@ ${
|
||||||
keepViewOpen = false
|
keepViewOpen = false,
|
||||||
) {
|
browserId = null,
|
||||||
+ openUILinkWhere = this.window.gZenUIManager.getOpenUILinkWhere(url, browser, openUILinkWhere);
|
}) {
|
||||||
if (this.#isAddressbar) {
|
+ where = this.window.gZenUIManager.getOpenUILinkWhere(
|
||||||
this.#prepareAddressbarLoad(
|
+ url,
|
||||||
url,
|
+ this.window.gBrowser.selectedBrowser,
|
||||||
@@ -4430,6 +4534,10 @@ ${
|
+ where
|
||||||
}
|
+ );
|
||||||
reuseEmpty = true;
|
let userTypedValue;
|
||||||
}
|
if (this.#isAddressbar && where == "current") {
|
||||||
+ if (this.hasAttribute("zen-newtab")) {
|
// Make sure URL is formatted properly (don't show punycode).
|
||||||
+ where = "tab";
|
@@ -4576,6 +4685,7 @@ ${
|
||||||
+ reuseEmpty = true;
|
|
||||||
+ }
|
|
||||||
if (
|
|
||||||
where == "tab" &&
|
|
||||||
reuseEmpty &&
|
|
||||||
@@ -4437,6 +4545,9 @@ ${
|
|
||||||
) {
|
|
||||||
where = "current";
|
|
||||||
}
|
|
||||||
+ if (this.window.gBrowser.selectedTab.hasAttribute("zen-empty-tab")) {
|
|
||||||
+ return "tab"; // Always open in a new tab if the current tab is "our empty tab".
|
|
||||||
+ }
|
|
||||||
return where;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -4691,6 +4802,7 @@ ${
|
|
||||||
this.setResultForCurrentValue(null);
|
this.setResultForCurrentValue(null);
|
||||||
this.handleCommand();
|
this.handleCommand();
|
||||||
this.controller.clearLastQueryContextCache();
|
this.controller.clearLastQueryContextCache();
|
||||||
@@ -251,7 +237,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
|
|
||||||
this._suppressStartQuery = false;
|
this._suppressStartQuery = false;
|
||||||
});
|
});
|
||||||
@@ -4698,7 +4810,6 @@ ${
|
@@ -4583,7 +4693,6 @@ ${
|
||||||
contextMenu.addEventListener("popupshowing", () => {
|
contextMenu.addEventListener("popupshowing", () => {
|
||||||
// Close the results pane when the input field contextual menu is open,
|
// Close the results pane when the input field contextual menu is open,
|
||||||
// because paste and go doesn't want a result selection.
|
// because paste and go doesn't want a result selection.
|
||||||
@@ -259,7 +245,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
|
|
||||||
let controller =
|
let controller =
|
||||||
this.document.commandDispatcher.getControllerForCommand("cmd_paste");
|
this.document.commandDispatcher.getControllerForCommand("cmd_paste");
|
||||||
@@ -4979,7 +5090,11 @@ ${
|
@@ -4850,7 +4959,11 @@ ${
|
||||||
if (!engineName && !source && !this.hasAttribute("searchmode")) {
|
if (!engineName && !source && !this.hasAttribute("searchmode")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -272,7 +258,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
if (this._searchModeIndicatorTitle) {
|
if (this._searchModeIndicatorTitle) {
|
||||||
this._searchModeIndicatorTitle.textContent = "";
|
this._searchModeIndicatorTitle.textContent = "";
|
||||||
this._searchModeIndicatorTitle.removeAttribute("data-l10n-id");
|
this._searchModeIndicatorTitle.removeAttribute("data-l10n-id");
|
||||||
@@ -5297,6 +5412,7 @@ ${
|
@@ -5149,6 +5262,7 @@ ${
|
||||||
|
|
||||||
this.document.l10n.setAttributes(
|
this.document.l10n.setAttributes(
|
||||||
this.inputField,
|
this.inputField,
|
||||||
@@ -280,20 +266,20 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
l10nId,
|
l10nId,
|
||||||
l10nId == "urlbar-placeholder-with-name"
|
l10nId == "urlbar-placeholder-with-name"
|
||||||
? { name: engineName }
|
? { name: engineName }
|
||||||
@@ -5347,6 +5463,12 @@ ${
|
@@ -5199,6 +5313,12 @@ ${
|
||||||
}
|
}
|
||||||
|
|
||||||
lazy.logger.debug("Blur Event");
|
lazy.logger.debug("Blur Event");
|
||||||
+ if (
|
+ if (
|
||||||
+ this.document.commandDispatcher.focusedElement == this.inputField &&
|
+ this.document.commandDispatcher.focusedElement == this.inputField &&
|
||||||
+ !lazy.UrlbarPrefs.get("closeOnWindowBlur")
|
+ !UrlbarPrefs.get("closeOnWindowBlur")
|
||||||
+ ) {
|
+ ) {
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
// We cannot count every blur events after a missed engagement as abandoment
|
// We cannot count every blur events after a missed engagement as abandoment
|
||||||
// because the user may have clicked on some view element that executes
|
// because the user may have clicked on some view element that executes
|
||||||
// a command causing a focus change. For example opening preferences from
|
// a command causing a focus change. For example opening preferences from
|
||||||
@@ -5424,6 +5546,11 @@ ${
|
@@ -5276,6 +5396,11 @@ ${
|
||||||
}
|
}
|
||||||
|
|
||||||
_on_click(event) {
|
_on_click(event) {
|
||||||
@@ -305,7 +291,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
switch (event.target) {
|
switch (event.target) {
|
||||||
case this.inputField:
|
case this.inputField:
|
||||||
case this._inputContainer:
|
case this._inputContainer:
|
||||||
@@ -5513,10 +5640,11 @@ ${
|
@@ -5371,10 +5496,11 @@ ${
|
||||||
}
|
}
|
||||||
if (untrim) {
|
if (untrim) {
|
||||||
this.setValue(this._untrimmedValue);
|
this.setValue(this._untrimmedValue);
|
||||||
@@ -318,7 +304,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
this.view.autoOpen({ event });
|
this.view.autoOpen({ event });
|
||||||
} else {
|
} else {
|
||||||
if (this._untrimOnFocusAfterKeydown) {
|
if (this._untrimOnFocusAfterKeydown) {
|
||||||
@@ -5556,9 +5684,16 @@ ${
|
@@ -5414,9 +5540,16 @@ ${
|
||||||
}
|
}
|
||||||
|
|
||||||
_on_mousedown(event) {
|
_on_mousedown(event) {
|
||||||
@@ -336,7 +322,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
if (
|
if (
|
||||||
event.composedTarget != this.inputField &&
|
event.composedTarget != this.inputField &&
|
||||||
event.composedTarget != this._inputContainer
|
event.composedTarget != this._inputContainer
|
||||||
@@ -5568,6 +5703,10 @@ ${
|
@@ -5426,6 +5559,10 @@ ${
|
||||||
|
|
||||||
this.focusedViaMousedown = !this.focused;
|
this.focusedViaMousedown = !this.focused;
|
||||||
this.#preventClickSelectsAll = this.focused;
|
this.#preventClickSelectsAll = this.focused;
|
||||||
@@ -347,7 +333,7 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
|
|
||||||
// Keep the focus status, since the attribute may be changed
|
// Keep the focus status, since the attribute may be changed
|
||||||
// upon calling this.focus().
|
// upon calling this.focus().
|
||||||
@@ -5605,7 +5744,7 @@ ${
|
@@ -5463,7 +5600,7 @@ ${
|
||||||
// view open on tab switch, and the TabSelect event arrived earlier.
|
// view open on tab switch, and the TabSelect event arrived earlier.
|
||||||
// Also ignore mousedown on the urlbarView context menu: opening/closing the
|
// Also ignore mousedown on the urlbarView context menu: opening/closing the
|
||||||
// view is already handled by the result opening flow.
|
// view is already handled by the result opening flow.
|
||||||
@@ -356,12 +342,12 @@ index e7e9495e56076cd112beafb8297dece4ae4cea58..95e4333866a5f0d41fbdbe23910c3964
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5894,7 +6033,7 @@ ${
|
@@ -5754,7 +5891,7 @@ ${
|
||||||
// When we are in actions search mode we can show more results so
|
// When we are in actions search mode we can show more results so
|
||||||
// increase the limit.
|
// increase the limit.
|
||||||
let maxResults =
|
let maxResults =
|
||||||
- this.searchMode?.source != UrlbarShared.RESULT_SOURCE.ACTIONS
|
- this.searchMode?.source != UrlbarShared.RESULT_SOURCE.ACTIONS
|
||||||
+ this.searchMode?.source != UrlbarShared.RESULT_SOURCE.ZEN_ACTIONS
|
+ this.searchMode?.source != UrlbarShared.RESULT_SOURCE.ZEN_ACTIONS
|
||||||
? lazy.UrlbarPrefs.get("maxRichResults")
|
? UrlbarPrefs.get("maxRichResults")
|
||||||
: UNLIMITED_MAX_RESULTS;
|
: UNLIMITED_MAX_RESULTS;
|
||||||
let options = {
|
let options = {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/browser/components/urlbar/content/UrlbarShared.mjs b/browser/components/urlbar/content/UrlbarShared.mjs
|
diff --git a/browser/components/urlbar/content/UrlbarShared.mjs b/browser/components/urlbar/content/UrlbarShared.mjs
|
||||||
index 5b45afb747bfcdbd06782186737669aa2c4c634d..f68bd009f70415b5fb513abdfe19b4427ceefbfc 100644
|
index 4e67dad66ae006842abc6eed547e4a244320d57a..393b61b4d2543c73e60afd334a353f36119ae73e 100644
|
||||||
--- a/browser/components/urlbar/content/UrlbarShared.mjs
|
--- a/browser/components/urlbar/content/UrlbarShared.mjs
|
||||||
+++ b/browser/components/urlbar/content/UrlbarShared.mjs
|
+++ b/browser/components/urlbar/content/UrlbarShared.mjs
|
||||||
@@ -47,6 +47,7 @@ export const UrlbarShared = {
|
@@ -100,6 +100,7 @@ export const UrlbarShared = {
|
||||||
// `looksLikeOrigin()` returned `LOOKS_LIKE_ORIGIN.OTHER` for this token.
|
// `looksLikeOrigin()` returned `LOOKS_LIKE_ORIGIN.OTHER` for this token.
|
||||||
// It may or may not be an origin.
|
// It may or may not be an origin.
|
||||||
POSSIBLE_ORIGIN_BUT_SEARCH_ALLOWED: 12,
|
POSSIBLE_ORIGIN_BUT_SEARCH_ALLOWED: 12,
|
||||||
@@ -10,7 +10,7 @@ index 5b45afb747bfcdbd06782186737669aa2c4c634d..f68bd009f70415b5fb513abdfe19b442
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -67,6 +68,7 @@ export const UrlbarShared = {
|
@@ -120,6 +121,7 @@ export const UrlbarShared = {
|
||||||
TITLE: "#",
|
TITLE: "#",
|
||||||
URL: "$",
|
URL: "$",
|
||||||
ACTION: ">",
|
ACTION: ">",
|
||||||
@@ -18,7 +18,7 @@ index 5b45afb747bfcdbd06782186737669aa2c4c634d..f68bd009f70415b5fb513abdfe19b442
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
// Defines UrlbarResult types.
|
// Defines UrlbarResult types.
|
||||||
@@ -112,6 +114,8 @@ export const UrlbarShared = {
|
@@ -165,6 +167,8 @@ export const UrlbarShared = {
|
||||||
OTHER_NETWORK: 6,
|
OTHER_NETWORK: 6,
|
||||||
ADDON: 7,
|
ADDON: 7,
|
||||||
ACTIONS: 8,
|
ACTIONS: 8,
|
||||||
@@ -26,9 +26,33 @@ index 5b45afb747bfcdbd06782186737669aa2c4c634d..f68bd009f70415b5fb513abdfe19b442
|
|||||||
+ WORKSPACES: 10,
|
+ WORKSPACES: 10,
|
||||||
}),
|
}),
|
||||||
|
|
||||||
/**
|
// Results are categorized into groups to help the muxer compose them. See
|
||||||
@@ -128,6 +132,7 @@ export const UrlbarShared = {
|
@@ -200,6 +204,8 @@ export const UrlbarShared = {
|
||||||
if (lazy.UrlbarPrefs.get("scotchBonnet.enableOverride")) {
|
SEMANTIC_HISTORY: "semanticHistory",
|
||||||
|
SUGGESTED_INDEX: "suggestedIndex",
|
||||||
|
TAIL_SUGGESTION: "tailSuggestion",
|
||||||
|
+ ZEN_ACTION: "zenAction",
|
||||||
|
+ ZEN_WORKSPACE: "zenWorkspace",
|
||||||
|
}),
|
||||||
|
|
||||||
|
// Defines provider types.
|
||||||
|
@@ -385,6 +391,14 @@ export const UrlbarShared = {
|
||||||
|
telemetryLabel: "actions",
|
||||||
|
uiLabel: "urlbar-searchmode-actions3",
|
||||||
|
},
|
||||||
|
+ {
|
||||||
|
+ source: this.RESULT_SOURCE.WORKSPACES,
|
||||||
|
+ restrict: this.RESTRICT_TOKENS.WORKSPACE,
|
||||||
|
+ icon: "chrome://browser/skin/zen-icons/selectable/layers.svg",
|
||||||
|
+ pref: "shortcuts.workspaces",
|
||||||
|
+ telemetryLabel: "workspaces",
|
||||||
|
+ uiLabel: "urlbar-search-mode-workspaces",
|
||||||
|
+ },
|
||||||
|
]);
|
||||||
|
},
|
||||||
|
|
||||||
|
@@ -402,6 +416,7 @@ export const UrlbarShared = {
|
||||||
|
if (UrlbarPrefs.get("scotchBonnet.enableOverride")) {
|
||||||
keys.push(this.RESTRICT_TOKENS.ACTION);
|
keys.push(this.RESTRICT_TOKENS.ACTION);
|
||||||
}
|
}
|
||||||
+ keys.push(this.RESTRICT_TOKENS.WORKSPACE);
|
+ keys.push(this.RESTRICT_TOKENS.WORKSPACE);
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/browser/components/urlbar/content/UrlbarView.mjs b/browser/components/urlbar/content/UrlbarView.mjs
|
diff --git a/browser/components/urlbar/content/UrlbarView.mjs b/browser/components/urlbar/content/UrlbarView.mjs
|
||||||
index e465806c4ae4fc372d9aa2b71aa7f0e74c65d026..c0b3781901298bedee2736819a93edbf545507a7 100644
|
index 9a2c787cfa4d70bd587d49e017075f905c90f626..1c3b341e5d520ec9541c4021aaedce98751b6993 100644
|
||||||
--- a/browser/components/urlbar/content/UrlbarView.mjs
|
--- a/browser/components/urlbar/content/UrlbarView.mjs
|
||||||
+++ b/browser/components/urlbar/content/UrlbarView.mjs
|
+++ b/browser/components/urlbar/content/UrlbarView.mjs
|
||||||
@@ -803,7 +803,7 @@ export class UrlbarView {
|
@@ -822,7 +822,7 @@ export class UrlbarView {
|
||||||
!this.input.value ||
|
!this.input.value ||
|
||||||
this.input.getAttribute("pageproxystate") == "valid"
|
this.input.getAttribute("pageproxystate") == "valid"
|
||||||
) {
|
) {
|
||||||
@@ -11,7 +11,7 @@ index e465806c4ae4fc372d9aa2b71aa7f0e74c65d026..c0b3781901298bedee2736819a93edbf
|
|||||||
// Try to reuse the cached top-sites context. If it's not cached, then
|
// 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
|
// there will be a gap of time between when the input is focused and
|
||||||
// when the view opens that can be perceived as flicker.
|
// when the view opens that can be perceived as flicker.
|
||||||
@@ -941,10 +941,6 @@ export class UrlbarView {
|
@@ -963,10 +963,6 @@ export class UrlbarView {
|
||||||
}
|
}
|
||||||
|
|
||||||
// If search mode isn't active, close the view.
|
// If search mode isn't active, close the view.
|
||||||
@@ -22,7 +22,7 @@ index e465806c4ae4fc372d9aa2b71aa7f0e74c65d026..c0b3781901298bedee2736819a93edbf
|
|||||||
|
|
||||||
// Search mode is active. If the one-offs should be shown, make sure they
|
// Search mode is active. If the one-offs should be shown, make sure they
|
||||||
// are enabled and show the view.
|
// are enabled and show the view.
|
||||||
@@ -3203,6 +3199,8 @@ export class UrlbarView {
|
@@ -3306,6 +3302,8 @@ export class UrlbarView {
|
||||||
if (row?.hasAttribute("row-selectable")) {
|
if (row?.hasAttribute("row-selectable")) {
|
||||||
row?.toggleAttribute("selected", true);
|
row?.toggleAttribute("selected", true);
|
||||||
}
|
}
|
||||||
@@ -31,7 +31,7 @@ index e465806c4ae4fc372d9aa2b71aa7f0e74c65d026..c0b3781901298bedee2736819a93edbf
|
|||||||
if (element != row) {
|
if (element != row) {
|
||||||
row?.toggleAttribute("descendant-selected", true);
|
row?.toggleAttribute("descendant-selected", true);
|
||||||
}
|
}
|
||||||
@@ -3715,7 +3713,7 @@ export class UrlbarView {
|
@@ -3972,7 +3970,7 @@ export class UrlbarView {
|
||||||
}
|
}
|
||||||
|
|
||||||
#enableOrDisableRowWrap() {
|
#enableOrDisableRowWrap() {
|
||||||
@@ -40,13 +40,13 @@ index e465806c4ae4fc372d9aa2b71aa7f0e74c65d026..c0b3781901298bedee2736819a93edbf
|
|||||||
this.#rows.toggleAttribute("wrap", wrap);
|
this.#rows.toggleAttribute("wrap", wrap);
|
||||||
this.oneOffSearchButtons?.container.toggleAttribute("wrap", wrap);
|
this.oneOffSearchButtons?.container.toggleAttribute("wrap", wrap);
|
||||||
}
|
}
|
||||||
@@ -4144,6 +4142,12 @@ export class UrlbarView {
|
@@ -4387,6 +4385,12 @@ export class UrlbarView {
|
||||||
}
|
}
|
||||||
|
|
||||||
on_blur() {
|
on_blur() {
|
||||||
+ if (
|
+ if (
|
||||||
+ this.document.commandDispatcher.focusedElement == this.input.inputField &&
|
+ this.document.commandDispatcher.focusedElement == this.input.inputField &&
|
||||||
+ !lazy.UrlbarPrefs.get("closeOnWindowBlur")
|
+ !UrlbarPrefs.get("closeOnWindowBlur")
|
||||||
+ ) {
|
+ ) {
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css
|
diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css
|
||||||
index e735ec80b56e1a2da4bc5bec29136ce60353277b..330ea62d220d9acd96a95a605888839388e97452 100644
|
index f276db1d456703493ee713370691352985021708..619ee6724eec1e6a25adcb257af0d02eb7a29d34 100644
|
||||||
--- a/browser/themes/linux/browser.css
|
--- a/browser/themes/linux/browser.css
|
||||||
+++ b/browser/themes/linux/browser.css
|
+++ b/browser/themes/linux/browser.css
|
||||||
@@ -14,7 +14,6 @@
|
@@ -14,7 +14,6 @@
|
||||||
@media (-moz-gtk-theme-family) {
|
@media (-moz-gtk-theme-family) {
|
||||||
--tabs-navbar-separator-style: none;
|
--tabs-navbar-separator-style: none;
|
||||||
@media (prefers-color-scheme: light) and (not -moz-pref("browser.nova.enabled")) {
|
@media (prefers-color-scheme: light) {
|
||||||
- --urlbar-box-background-color: #fafafa;
|
- --urlbar-box-background-color: #fafafa;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
diff --git a/browser/themes/shared/tabbrowser/content-area.css b/browser/themes/shared/tabbrowser/content-area.css
|
diff --git a/browser/themes/shared/tabbrowser/content-area.css b/browser/themes/shared/tabbrowser/content-area.css
|
||||||
index 3acdec2b8e043fe27919cfa54e73f4d3c491bfc8..267a1087134464a8193a824a2d7f8ac15ff8ad60 100644
|
index 2374ed38bd9361d6c7e1886117099c6761e403b8..72f1f52a13096f19ca4009037ad0cdc880775ff7 100644
|
||||||
--- a/browser/themes/shared/tabbrowser/content-area.css
|
--- a/browser/themes/shared/tabbrowser/content-area.css
|
||||||
+++ b/browser/themes/shared/tabbrowser/content-area.css
|
+++ b/browser/themes/shared/tabbrowser/content-area.css
|
||||||
@@ -157,7 +157,6 @@
|
@@ -239,7 +239,6 @@
|
||||||
min-height: 0;
|
min-width: 0;
|
||||||
|
|
||||||
/* We want to be able to show the frame color behind the clipped radiused corner */
|
/* We want to be able to show the frame color behind the clipped radiused corner */
|
||||||
- background: var(--tabpanel-background-color);
|
- background: var(--tabpanel-background-color);
|
||||||
|
|
||||||
@media -moz-pref("sidebar.revamp") {
|
display: grid;
|
||||||
outline: 0.01px solid var(--chrome-content-separator-color);
|
/**
|
||||||
@@ -216,7 +215,6 @@
|
@@ -425,7 +424,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
browser:is([blank], [pendingpaint]) {
|
browser:is([blank], [pendingpaint]) {
|
||||||
@@ -18,7 +18,7 @@ index 3acdec2b8e043fe27919cfa54e73f4d3c491bfc8..267a1087134464a8193a824a2d7f8ac1
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Exclude browsers with smartwindow-content attribute which inherit
|
/* Exclude browsers with smartwindow-content attribute which inherit
|
||||||
@@ -553,7 +551,7 @@ split-view-footer {
|
@@ -865,7 +863,7 @@ split-view-footer {
|
||||||
|
|
||||||
.dialogStack {
|
.dialogStack {
|
||||||
z-index: var(--browser-stack-z-index-dialog-stack);
|
z-index: var(--browser-stack-z-index-dialog-stack);
|
||||||
@@ -27,12 +27,12 @@ index 3acdec2b8e043fe27919cfa54e73f4d3c491bfc8..267a1087134464a8193a824a2d7f8ac1
|
|||||||
inset: 0;
|
inset: 0;
|
||||||
/* --browser-with-dialog set on browser[tabDialogShowing], we want to position the overlay
|
/* --browser-with-dialog set on browser[tabDialogShowing], we want to position the overlay
|
||||||
only on the top of the <browser> element so it doesn't overlap the DevTools toolbox */
|
only on the top of the <browser> element so it doesn't overlap the DevTools toolbox */
|
||||||
@@ -718,7 +716,7 @@ split-view-footer {
|
@@ -1034,7 +1032,7 @@ split-view-footer {
|
||||||
|
|
||||||
.dialogOverlay[topmost="true"],
|
.dialogOverlay[topmost="true"],
|
||||||
#window-modal-dialog::backdrop {
|
#window-modal-dialog::backdrop {
|
||||||
- background-color: var(--background-color-overlay);
|
- background-color: var(--background-color-overlay);
|
||||||
+ background-color: light-dark(rgba(255, 255, 255, .3), rgba(0, 0, 0, .3));
|
+ background-color: light-dark(rgba(255, 255, 255, .3), rgba(0, 0, 0, .3));
|
||||||
}
|
border-radius: var(--chrome-block-radius);
|
||||||
|
|
||||||
.dialogOverlay[hideContent="true"][topmost="true"] {
|
.browserSidebarContainer.responsive-mode & {
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css
|
diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css
|
||||||
index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f253804576e 100644
|
index 61c0b8382c78f63ad9113af55a6236c4a29bc45b..0ab463c768d4fb3f45d22e753f408c46b61c0480 100644
|
||||||
--- a/browser/themes/shared/tabbrowser/tabs.css
|
--- a/browser/themes/shared/tabbrowser/tabs.css
|
||||||
+++ b/browser/themes/shared/tabbrowser/tabs.css
|
+++ b/browser/themes/shared/tabbrowser/tabs.css
|
||||||
@@ -45,7 +45,7 @@
|
@@ -46,7 +46,7 @@
|
||||||
--tab-group-line-thickness: 2px;
|
--tab-group-line-thickness: 2px;
|
||||||
--tab-group-line-toolbar-border-distance: 1px;
|
--tab-group-line-toolbar-border-distance: 1px;
|
||||||
/* Collapsed tabs should be square, so set width to match the min height */
|
/* Collapsed tabs should be square, so set width to match the min height */
|
||||||
- --tab-collapsed-background-width: var(--tab-min-height);
|
- --tab-collapsed-background-width: var(--tab-min-height);
|
||||||
+ --tab-collapsed-background-width: 48px;
|
+ --tab-collapsed-background-width: 48px;
|
||||||
--tab-collapsed-width: calc(var(--tab-collapsed-background-width) + 2 * var(--tab-inner-inline-margin));
|
--tab-collapsed-width: calc(var(--tab-collapsed-background-width) + 2 * var(--tab-inner-inline-margin));
|
||||||
|
--tab-collapsed-split-pill-offset: 0px;
|
||||||
--tab-pinned-min-width-expanded: calc(var(--tab-pinned-expanded-background-width) + 2 * var(--tab-pinned-margin-inline-expanded));
|
--tab-pinned-min-width-expanded: calc(var(--tab-pinned-expanded-background-width) + 2 * var(--tab-pinned-margin-inline-expanded));
|
||||||
--tab-note-icon-end-margin: var(--dimension-4);
|
@@ -308,7 +308,6 @@ tab-split-view-wrapper[dragtarget] {
|
||||||
@@ -295,7 +295,6 @@ tab-split-view-wrapper[dragtarget] {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
:root:not([uidensity="compact"], [sidebar-expand-on-hover]) &[pinned] {
|
:root:not([uidensity="compact"], [sidebar-expand-on-hover]) &[pinned] {
|
||||||
@@ -19,7 +19,7 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
}
|
}
|
||||||
|
|
||||||
&:is([selected], [multiselected]) {
|
&:is([selected], [multiselected]) {
|
||||||
@@ -309,6 +308,7 @@ tab-split-view-wrapper[dragtarget] {
|
@@ -322,6 +321,7 @@ tab-split-view-wrapper[dragtarget] {
|
||||||
border-radius: inherit;
|
border-radius: inherit;
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@@ -27,7 +27,7 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -506,10 +506,6 @@ tab-split-view-wrapper[dragtarget] {
|
@@ -519,10 +519,6 @@ tab-split-view-wrapper[dragtarget] {
|
||||||
|
|
||||||
@media -moz-pref("browser.tabs.fadeOutUnloadedTabs") {
|
@media -moz-pref("browser.tabs.fadeOutUnloadedTabs") {
|
||||||
&[pending] {
|
&[pending] {
|
||||||
@@ -38,7 +38,7 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
/* Fade the favicon out */
|
/* Fade the favicon out */
|
||||||
transition-property: filter, opacity;
|
transition-property: filter, opacity;
|
||||||
@@ -525,10 +521,6 @@ tab-split-view-wrapper[dragtarget] {
|
@@ -538,10 +534,6 @@ tab-split-view-wrapper[dragtarget] {
|
||||||
|
|
||||||
@media -moz-pref("browser.tabs.fadeOutExplicitlyUnloadedTabs") {
|
@media -moz-pref("browser.tabs.fadeOutExplicitlyUnloadedTabs") {
|
||||||
&[pending][discarded] {
|
&[pending][discarded] {
|
||||||
@@ -49,7 +49,7 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
/* Fade the favicon out */
|
/* Fade the favicon out */
|
||||||
transition-property: filter, opacity;
|
transition-property: filter, opacity;
|
||||||
@@ -602,7 +594,7 @@ tab-split-view-wrapper[dragtarget] {
|
@@ -615,7 +607,7 @@ tab-split-view-wrapper[dragtarget] {
|
||||||
}
|
}
|
||||||
|
|
||||||
#tabbrowser-tabs[orient="vertical"] & {
|
#tabbrowser-tabs[orient="vertical"] & {
|
||||||
@@ -58,7 +58,7 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
}
|
}
|
||||||
|
|
||||||
&[crashed] {
|
&[crashed] {
|
||||||
@@ -610,7 +602,7 @@ tab-split-view-wrapper[dragtarget] {
|
@@ -623,7 +615,7 @@ tab-split-view-wrapper[dragtarget] {
|
||||||
}
|
}
|
||||||
|
|
||||||
#tabbrowser-tabs[orient="vertical"]:not([expanded]) &:not([crashed]),
|
#tabbrowser-tabs[orient="vertical"]:not([expanded]) &:not([crashed]),
|
||||||
@@ -67,7 +67,7 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
&[soundplaying] {
|
&[soundplaying] {
|
||||||
list-style-image: url("chrome://browser/skin/tabbrowser/tab-audio-playing-small.svg");
|
list-style-image: url("chrome://browser/skin/tabbrowser/tab-audio-playing-small.svg");
|
||||||
}
|
}
|
||||||
@@ -664,7 +656,7 @@ tab-split-view-wrapper[dragtarget] {
|
@@ -677,7 +669,7 @@ tab-split-view-wrapper[dragtarget] {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
&[crashed] {
|
&[crashed] {
|
||||||
display: revert;
|
display: revert;
|
||||||
}
|
}
|
||||||
@@ -824,7 +816,7 @@ tab-split-view-wrapper[dragtarget] {
|
@@ -837,7 +829,7 @@ tab-split-view-wrapper[dragtarget] {
|
||||||
has not been added to root. There are certain scenarios when that attribute is temporarily
|
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. */
|
removed from root such as when toggling the sidebar to expand with the toolbar button. */
|
||||||
#tabbrowser-tabs[orient="horizontal"] &:not([pinned]):not([crashed]),
|
#tabbrowser-tabs[orient="horizontal"] &:not([pinned]):not([crashed]),
|
||||||
@@ -85,7 +85,7 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
&:is([soundplaying], [muted], [activemedia-blocked]) {
|
&:is([soundplaying], [muted], [activemedia-blocked]) {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
@@ -1044,7 +1036,6 @@ tab-split-view-wrapper[dragtarget] {
|
@@ -1151,7 +1143,6 @@ tab-split-view-wrapper[dragtarget] {
|
||||||
.tabbrowser-tab:is([image], [pinned]) > .tab-stack > .tab-content[attention]:not([selected]),
|
.tabbrowser-tab:is([image], [pinned]) > .tab-stack > .tab-content[attention]:not([selected]),
|
||||||
.tabbrowser-tab > .tab-stack > .tab-content[pinned][titlechanged]:not([selected]),
|
.tabbrowser-tab > .tab-stack > .tab-content[pinned][titlechanged]:not([selected]),
|
||||||
#tabbrowser-tabs[orient="vertical"] .tabbrowser-tab > .tab-stack > .tab-content[titlechanged]:not([selected]) {
|
#tabbrowser-tabs[orient="vertical"] .tabbrowser-tab > .tab-stack > .tab-content[titlechanged]:not([selected]) {
|
||||||
@@ -93,7 +93,7 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
background-position: center bottom 6.5px;
|
background-position: center bottom 6.5px;
|
||||||
background-size: 4px 4px;
|
background-size: 4px 4px;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
@@ -1797,7 +1788,7 @@ tab-group {
|
@@ -1904,7 +1895,7 @@ tab-group {
|
||||||
}
|
}
|
||||||
|
|
||||||
#tabbrowser-tabs[orient="vertical"][expanded] {
|
#tabbrowser-tabs[orient="vertical"][expanded] {
|
||||||
@@ -102,7 +102,7 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
&[movingtab][movingtab-addToGroup]:not([movingtab-group], [movingtab-ungroup]) .tabbrowser-tab:is(:active, [multiselected]) {
|
&[movingtab][movingtab-addToGroup]:not([movingtab-group], [movingtab-ungroup]) .tabbrowser-tab:is(:active, [multiselected]) {
|
||||||
margin-inline-start: var(--space-medium);
|
margin-inline-start: var(--space-medium);
|
||||||
}
|
}
|
||||||
@@ -2351,7 +2342,7 @@ tab-group {
|
@@ -2504,7 +2495,7 @@ tab-group {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,8 +111,8 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
#vertical-tabs-newtab-button {
|
#vertical-tabs-newtab-button {
|
||||||
appearance: none;
|
appearance: none;
|
||||||
min-height: var(--tab-min-height);
|
min-height: var(--tab-min-height);
|
||||||
@@ -2362,7 +2353,7 @@ tab-group {
|
@@ -2524,7 +2515,7 @@ tab-group {
|
||||||
margin-inline: var(--tab-inner-inline-margin);
|
}
|
||||||
|
|
||||||
#tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text {
|
#tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text {
|
||||||
- display: none;
|
- display: none;
|
||||||
@@ -120,7 +120,7 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@@ -2386,7 +2377,7 @@ tab-group {
|
@@ -2548,7 +2539,7 @@ tab-group {
|
||||||
* flex container. #tabs-newtab-button is a child of the arrowscrollbox where
|
* 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.
|
* we don't want a gap (between tabs), so we have to add some margin.
|
||||||
*/
|
*/
|
||||||
@@ -129,7 +129,7 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
margin-block: var(--tab-margin-block);
|
margin-block: var(--tab-margin-block);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2576,7 +2567,6 @@ tab-group {
|
@@ -2740,7 +2731,6 @@ tab-group {
|
||||||
|
|
||||||
&:not([expanded]) {
|
&:not([expanded]) {
|
||||||
.tabbrowser-tab[pinned] {
|
.tabbrowser-tab[pinned] {
|
||||||
@@ -137,7 +137,7 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tab-background {
|
.tab-background {
|
||||||
@@ -2615,8 +2605,8 @@ tab-group {
|
@@ -2779,8 +2769,8 @@ tab-group {
|
||||||
display: block;
|
display: block;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
inset: auto;
|
inset: auto;
|
||||||
@@ -148,7 +148,7 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
|
|
||||||
&:-moz-window-inactive {
|
&:-moz-window-inactive {
|
||||||
background-image:
|
background-image:
|
||||||
@@ -2714,9 +2704,6 @@ tab-group {
|
@@ -2878,9 +2868,6 @@ tab-group {
|
||||||
~ #tabbrowser-tabs[orient="horizontal"]::before {
|
~ #tabbrowser-tabs[orient="horizontal"]::before {
|
||||||
display: flex;
|
display: flex;
|
||||||
content: "";
|
content: "";
|
||||||
@@ -158,7 +158,7 @@ index 0820fa040642ee05c2a24f5d2cfa58da5c926647..2d93abcce1729744e5963f1c6ad47f25
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2749,7 +2736,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
|
@@ -2913,7 +2900,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
|
||||||
list-style-image: url(chrome://global/skin/icons/plus.svg);
|
list-style-image: url(chrome://global/skin/icons/plus.svg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css
|
diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css
|
||||||
index 22d624d718a289dd7b84ffc2f04dd35893dfbe95..4f57f7853f3043e3ad01d893aa928b9d2e6f3c16 100644
|
index 149f123e26cd79e89432dfeb504ca7218ee04810..7e0e6d981d6c2aa53bc2a76d82d2078419659065 100644
|
||||||
--- a/browser/themes/shared/urlbar-searchbar.css
|
--- a/browser/themes/shared/urlbar-searchbar.css
|
||||||
+++ b/browser/themes/shared/urlbar-searchbar.css
|
+++ b/browser/themes/shared/urlbar-searchbar.css
|
||||||
@@ -19,8 +19,8 @@
|
@@ -19,8 +19,8 @@
|
||||||
|
|
||||||
@media not -moz-pref("browser.nova.enabled") {
|
@media not -moz-pref("browser.nova.enabled") {
|
||||||
--urlbar-basic-component-size: calc(var(--urlbar-min-height) - 2 * (var(--urlbar-input-container-border-width) + var(--urlbar-input-container-padding)));
|
--urlbar-basic-component-size: calc(var(--urlbar-height) - 2 * (var(--urlbar-input-container-border-width) + var(--urlbar-input-container-padding)));
|
||||||
- --urlbar-icon-padding: calc((var(--urlbar-min-height) - 2px /* border */ - 2px /* padding */ - 16px /* icon */) / 2);
|
- --urlbar-icon-padding: calc((var(--urlbar-height) - 2px /* border */ - 2px /* padding */ - 16px /* icon */) / 2);
|
||||||
- --urlbar-input-container-padding: round(up, 1px, env(hairline));
|
- --urlbar-input-container-padding: round(up, 1px, env(hairline));
|
||||||
+ --urlbar-icon-padding: calc((var(--urlbar-min-height) - 2px /* border */ - 14px /* icon */) / 2);
|
+ --urlbar-icon-padding: calc((var(--urlbar-height) - 2px /* border */ - 14px /* icon */) / 2);
|
||||||
+ --urlbar-input-container-padding: 2px;
|
+ --urlbar-input-container-padding: 2px;
|
||||||
}
|
}
|
||||||
@media (max-width: 770px) {
|
@media (max-width: 770px) {
|
||||||
--urlbar-container-min-width: 240px;
|
--urlbar-container-min-width: 240px;
|
||||||
@@ -126,7 +126,7 @@ toolbar[inactive="true"] .urlbar,
|
@@ -127,7 +127,7 @@ toolbar[inactive="true"] .urlbar,
|
||||||
.urlbar:not([usertyping]) > .urlbar-input-container > .urlbar-go-button,
|
.urlbar:not([usertyping]) > .urlbar-input-container > .urlbar-go-button,
|
||||||
.urlbar:not(#searchbar-new, [focused]) > .urlbar-input-container > .urlbar-go-button,
|
.urlbar:not(#searchbar-new, [focused]) > .urlbar-input-container > .urlbar-go-button,
|
||||||
#urlbar-revert-button-container {
|
#urlbar-revert-button-container {
|
||||||
@@ -22,7 +22,7 @@ index 22d624d718a289dd7b84ffc2f04dd35893dfbe95..4f57f7853f3043e3ad01d893aa928b9d
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Document Picture-in-Picture API window */
|
/* Document Picture-in-Picture API window */
|
||||||
@@ -403,6 +403,10 @@ toolbar[inactive="true"] .urlbar,
|
@@ -405,6 +405,10 @@ toolbar[inactive="true"] .urlbar,
|
||||||
.urlbar:not([focused])[textoverflow="left"][domaindir="rtl"] > .urlbar-input-container > .urlbar-input-box > & {
|
.urlbar:not([focused])[textoverflow="left"][domaindir="rtl"] > .urlbar-input-container > .urlbar-input-box > & {
|
||||||
mask-image: linear-gradient(to right, transparent var(--urlbar-scheme-size), black calc(var(--urlbar-scheme-size) + 3ch));
|
mask-image: linear-gradient(to right, transparent var(--urlbar-scheme-size), black calc(var(--urlbar-scheme-size) + 3ch));
|
||||||
}
|
}
|
||||||
@@ -33,16 +33,18 @@ index 22d624d718a289dd7b84ffc2f04dd35893dfbe95..4f57f7853f3043e3ad01d893aa928b9d
|
|||||||
}
|
}
|
||||||
|
|
||||||
#urlbar-scheme {
|
#urlbar-scheme {
|
||||||
@@ -492,10 +496,14 @@ toolbar[inactive="true"] .urlbar,
|
@@ -476,10 +480,15 @@ toolbar[inactive="true"] .urlbar,
|
||||||
|
}
|
||||||
|
|
||||||
.urlbar[breakout][breakout-extend] {
|
.urlbar[breakout][breakout-extend] {
|
||||||
height: auto;
|
- margin-left: calc(-1 * var(--urlbar-margin-inline));
|
||||||
+ align-items: center;
|
+ align-items: center;
|
||||||
+ :root:not([zen-single-toolbar='true']) & {
|
|
||||||
margin-left: calc(-1 * var(--urlbar-margin-inline));
|
|
||||||
+ }
|
|
||||||
width: calc(var(--urlbar-width) + 2 * var(--urlbar-margin-inline));
|
width: calc(var(--urlbar-width) + 2 * var(--urlbar-margin-inline));
|
||||||
|
|
||||||
|
+ :root:not([zen-single-toolbar="true"]) & {
|
||||||
|
+ margin-left: calc(-1 * var(--urlbar-margin-inline));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
> .urlbar-input-container {
|
> .urlbar-input-container {
|
||||||
+ align-items: center;
|
+ align-items: center;
|
||||||
height: var(--urlbar-container-height);
|
height: var(--urlbar-container-height);
|
||||||
|
|||||||
@@ -31,12 +31,13 @@ diff --git a/gfx/webrender_bindings/src/bindings.rs b/gfx/webrender_bindings/src
|
|||||||
|
|
||||||
// Ensure the WR profiler callbacks are hooked up to the Gecko profiler.
|
// Ensure the WR profiler callbacks are hooked up to the Gecko profiler.
|
||||||
set_profiler_hooks(Some(&PROFILER_HOOKS));
|
set_profiler_hooks(Some(&PROFILER_HOOKS));
|
||||||
@@ -2164,10 +2165,11 @@
|
@@ -2164,11 +2165,12 @@
|
||||||
texture_cache_config,
|
texture_cache_config,
|
||||||
reject_software_rasterizer,
|
reject_software_rasterizer,
|
||||||
low_quality_pinch_zoom,
|
low_quality_pinch_zoom,
|
||||||
max_shared_surface_size,
|
max_shared_surface_size,
|
||||||
enable_dithering,
|
enable_dithering,
|
||||||
|
enable_shared_instance_buffer,
|
||||||
+ opaque_backdrop_fallback,
|
+ opaque_backdrop_fallback,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
@@ -73,8 +74,9 @@ diff --git a/gfx/wr/webrender/src/renderer/init.rs b/gfx/wr/webrender/src/render
|
|||||||
+ /// See explanation of `gfx.webrender.opaque-backdrop-fallback`.
|
+ /// See explanation of `gfx.webrender.opaque-backdrop-fallback`.
|
||||||
+ pub opaque_backdrop_fallback: bool,
|
+ pub opaque_backdrop_fallback: bool,
|
||||||
}
|
}
|
||||||
@@ -277,9 +279,10 @@
|
@@ -277,10 +279,11 @@
|
||||||
enable_instancing: true,
|
enable_instancing: true,
|
||||||
|
enable_shared_instance_buffer: false,
|
||||||
reject_software_rasterizer: false,
|
reject_software_rasterizer: false,
|
||||||
low_quality_pinch_zoom: false,
|
low_quality_pinch_zoom: false,
|
||||||
max_shared_surface_size: 2048,
|
max_shared_surface_size: 2048,
|
||||||
@@ -84,12 +86,13 @@ diff --git a/gfx/wr/webrender/src/renderer/init.rs b/gfx/wr/webrender/src/render
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -802,10 +805,11 @@
|
@@ -802,11 +805,12 @@
|
||||||
allocated_native_surfaces: FastHashSet::default(),
|
allocated_native_surfaces: FastHashSet::default(),
|
||||||
debug_overlay_state: DebugOverlayState::new(),
|
debug_overlay_state: DebugOverlayState::new(),
|
||||||
buffer_damage_tracker: BufferDamageTracker::default(),
|
buffer_damage_tracker: BufferDamageTracker::default(),
|
||||||
max_primitive_instance_count,
|
max_primitive_instance_count,
|
||||||
enable_instancing: options.enable_instancing,
|
enable_instancing: options.enable_instancing,
|
||||||
|
use_shared_instance_buffer,
|
||||||
+ opaque_backdrop_fallback: options.opaque_backdrop_fallback,
|
+ opaque_backdrop_fallback: options.opaque_backdrop_fallback,
|
||||||
consecutive_oom_frames: 0,
|
consecutive_oom_frames: 0,
|
||||||
target_frame_publish_id: None,
|
target_frame_publish_id: None,
|
||||||
@@ -99,11 +102,14 @@ diff --git a/gfx/wr/webrender/src/renderer/init.rs b/gfx/wr/webrender/src/render
|
|||||||
diff --git a/gfx/wr/webrender/src/renderer/mod.rs b/gfx/wr/webrender/src/renderer/mod.rs
|
diff --git a/gfx/wr/webrender/src/renderer/mod.rs b/gfx/wr/webrender/src/renderer/mod.rs
|
||||||
--- a/gfx/wr/webrender/src/renderer/mod.rs
|
--- a/gfx/wr/webrender/src/renderer/mod.rs
|
||||||
+++ b/gfx/wr/webrender/src/renderer/mod.rs
|
+++ b/gfx/wr/webrender/src/renderer/mod.rs
|
||||||
@@ -867,10 +867,12 @@
|
@@ -867,13 +867,15 @@
|
||||||
buffer_damage_tracker: BufferDamageTracker,
|
buffer_damage_tracker: BufferDamageTracker,
|
||||||
|
|
||||||
max_primitive_instance_count: usize,
|
max_primitive_instance_count: usize,
|
||||||
enable_instancing: bool,
|
enable_instancing: bool,
|
||||||
|
/// If true, stream instance data into large buffers shared by multiple
|
||||||
|
/// draws, rather than allocating a new instance buffer for each draw.
|
||||||
|
use_shared_instance_buffer: bool,
|
||||||
|
|
||||||
+ opaque_backdrop_fallback: bool,
|
+ opaque_backdrop_fallback: bool,
|
||||||
+
|
+
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ diff --git a/docshell/shistory/SessionHistoryEntry.cpp b/docshell/shistory/Sessi
|
|||||||
: mURI(aLoadState->URI()),
|
: mURI(aLoadState->URI()),
|
||||||
mOriginalURI(aLoadState->OriginalURI()),
|
mOriginalURI(aLoadState->OriginalURI()),
|
||||||
mResultPrincipalURI(aLoadState->ResultPrincipalURI()),
|
mResultPrincipalURI(aLoadState->ResultPrincipalURI()),
|
||||||
@@ -59,9 +67,10 @@
|
@@ -59,11 +67,12 @@
|
||||||
mLoadReplace(aLoadState->LoadReplace()),
|
mLoadReplace(aLoadState->LoadReplace()),
|
||||||
mHasUserActivation(aLoadState->HasValidUserGestureActivation()),
|
mHasUserActivation(aLoadState->HasValidUserGestureActivation()),
|
||||||
mSharedState(SharedState::Create(
|
mSharedState(SharedState::Create(
|
||||||
@@ -148,6 +148,8 @@ diff --git a/docshell/shistory/SessionHistoryEntry.cpp b/docshell/shistory/Sessi
|
|||||||
+ aLoadState->PolicyContainer()),
|
+ aLoadState->PolicyContainer()),
|
||||||
/* FIXME Is this correct? */
|
/* FIXME Is this correct? */
|
||||||
aLoadState->TypeHint())) {
|
aLoadState->TypeHint())) {
|
||||||
|
MOZ_DIAGNOSTIC_ASSERT(!mURI->SchemeIs("javascript"));
|
||||||
|
|
||||||
// Pull the upload stream off of the channel instead of the load state, as
|
// Pull the upload stream off of the channel instead of the load state, as
|
||||||
@@ -124,11 +133,12 @@
|
@@ -124,11 +133,12 @@
|
||||||
loadInfo->GetPrincipalToInherit(
|
loadInfo->GetPrincipalToInherit(
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -44,13 +44,7 @@
|
|||||||
{
|
{
|
||||||
"type": "phabricator",
|
"type": "phabricator",
|
||||||
"id": "D320897",
|
"id": "D320897",
|
||||||
"name": "Bug 2011236",
|
"name": "Bug 2011236"
|
||||||
"replaces": {
|
|
||||||
// The upstream patch context includes a MOZ_DIAGNOSTIC_ASSERT that
|
|
||||||
// doesn't exist yet in our Firefox version.
|
|
||||||
"@@ -59,11 +67,12 @@": "@@ -59,9 +67,10 @@",
|
|
||||||
"aLoadState->TypeHint())) {\n MOZ_DIAGNOSTIC_ASSERT(!mURI->SchemeIs(\"javascript\"));\n \n // Pull": "aLoadState->TypeHint())) {\n // Pull"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "phabricator",
|
"type": "phabricator",
|
||||||
@@ -59,16 +53,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "local",
|
"type": "local",
|
||||||
// CSS corner-shape rendering stack from bug 2047627 (borders),
|
|
||||||
// bug 2048908 (box shadows) and bug 2058091 (inset), squashed into a
|
|
||||||
// single patch: surfer's revert-then-apply on re-import only works for
|
|
||||||
// independently revertible patches, so a stack of separate files fails.
|
|
||||||
// Combined revisions, in stack order: D313684, D314332-D314337,
|
|
||||||
// D316301-D316304, D317056-D317058. The earlier revisions of these
|
|
||||||
// bugs (D306773-D306779, D308243, D311523) already landed in the
|
|
||||||
// current Firefox version and are omitted. D314332, D314336, D316301,
|
|
||||||
// D316303, D316304, D317057 and D317058 are hand-rebased onto
|
|
||||||
// Firefox 154 (the upstream diffs target a newer mozilla-central).
|
|
||||||
"path": "firefox/css_corner_shape_rendering.patch"
|
"path": "firefox/css_corner_shape_rendering.patch"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
diff --git a/layout/style/StyleColor.cpp b/layout/style/StyleColor.cpp
|
diff --git a/layout/style/StyleColor.cpp b/layout/style/StyleColor.cpp
|
||||||
index bbee32af30f35525730a10d0b242c0e8a8fe4695..a590fff105b30bc96fa7a0d8a8d3b1d5aa997e08 100644
|
index f922f7fdacc7e1a14beb8da77b48aef3f6ae0b2b..47d19242baaf2a1f25ee07c6e210c839cc7b5089 100644
|
||||||
--- a/layout/style/StyleColor.cpp
|
--- a/layout/style/StyleColor.cpp
|
||||||
+++ b/layout/style/StyleColor.cpp
|
+++ b/layout/style/StyleColor.cpp
|
||||||
@@ -9,6 +9,7 @@
|
@@ -8,6 +8,7 @@
|
||||||
#include "mozilla/dom/BindingDeclarations.h"
|
#include "mozilla/StyleColorInlines.h"
|
||||||
#include "nsIFrame.h"
|
#include "nsIFrame.h"
|
||||||
#include "nsStyleStruct.h"
|
#include "nsStyleStruct.h"
|
||||||
+#include "mozilla/nsZenBoostsBackend.h"
|
+#include "mozilla/nsZenBoostsBackend.h"
|
||||||
|
#include "nsStyleUtil.h"
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
|
@@ -98,23 +99,24 @@ StyleAbsoluteColor StyleColor::ResolveColor(
|
||||||
@@ -96,23 +97,24 @@ StyleAbsoluteColor StyleColor::ResolveColor(
|
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
nscolor StyleColor::CalcColor(nscolor aColor) const {
|
nscolor StyleColor::CalcColor(nscolor aColor) const {
|
||||||
@@ -40,7 +40,7 @@ index bbee32af30f35525730a10d0b242c0e8a8fe4695..a590fff105b30bc96fa7a0d8a8d3b1d5
|
|||||||
}
|
}
|
||||||
|
|
||||||
StyleAbsoluteColor StyleAbsoluteColor::ToColorSpace(
|
StyleAbsoluteColor StyleAbsoluteColor::ToColorSpace(
|
||||||
@@ -120,7 +122,7 @@ StyleAbsoluteColor StyleAbsoluteColor::ToColorSpace(
|
@@ -122,7 +124,7 @@ StyleAbsoluteColor StyleAbsoluteColor::ToColorSpace(
|
||||||
return Servo_ConvertColorSpace(this, aColorSpace);
|
return Servo_ConvertColorSpace(this, aColorSpace);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ index bbee32af30f35525730a10d0b242c0e8a8fe4695..a590fff105b30bc96fa7a0d8a8d3b1d5
|
|||||||
constexpr StyleColorSpace DEST_COLOR_SPACE = StyleColorSpace::Srgb;
|
constexpr StyleColorSpace DEST_COLOR_SPACE = StyleColorSpace::Srgb;
|
||||||
|
|
||||||
constexpr float MIN = 0.0f;
|
constexpr float MIN = 0.0f;
|
||||||
@@ -162,11 +164,13 @@ nscolor StyleAbsoluteColor::ToColor() const {
|
@@ -164,11 +166,13 @@ nscolor StyleAbsoluteColor::ToColor() const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/layout/svg/SVGImageContext.h b/layout/svg/SVGImageContext.h
|
diff --git a/layout/svg/SVGImageContext.h b/layout/svg/SVGImageContext.h
|
||||||
index b1f811989697966e30859610f4fc07579d0385ab..f6f4cd5a45fc49b416111d980fab4e612788903e 100644
|
index ad833c7c2ee6a4c4984efdb0d59e3576c2d1bc19..36864a34badc0cbfe44d6295798622fd6178f9e3 100644
|
||||||
--- a/layout/svg/SVGImageContext.h
|
--- a/layout/svg/SVGImageContext.h
|
||||||
+++ b/layout/svg/SVGImageContext.h
|
+++ b/layout/svg/SVGImageContext.h
|
||||||
@@ -6,6 +6,7 @@
|
@@ -6,6 +6,7 @@
|
||||||
@@ -44,7 +44,7 @@ index b1f811989697966e30859610f4fc07579d0385ab..f6f4cd5a45fc49b416111d980fab4e61
|
|||||||
const Maybe<SVGPreserveAspectRatio>& GetPreserveAspectRatio() const {
|
const Maybe<SVGPreserveAspectRatio>& GetPreserveAspectRatio() const {
|
||||||
return mPreserveAspectRatio;
|
return mPreserveAspectRatio;
|
||||||
}
|
}
|
||||||
@@ -116,7 +137,11 @@ class SVGImageContext {
|
@@ -110,7 +131,11 @@ class SVGImageContext {
|
||||||
return contextPaintIsEqual && mViewportSize == aOther.mViewportSize &&
|
return contextPaintIsEqual && mViewportSize == aOther.mViewportSize &&
|
||||||
mPreserveAspectRatio == aOther.mPreserveAspectRatio &&
|
mPreserveAspectRatio == aOther.mPreserveAspectRatio &&
|
||||||
mColorScheme == aOther.mColorScheme &&
|
mColorScheme == aOther.mColorScheme &&
|
||||||
@@ -57,17 +57,17 @@ index b1f811989697966e30859610f4fc07579d0385ab..f6f4cd5a45fc49b416111d980fab4e61
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool operator!=(const SVGImageContext&) const = default;
|
bool operator!=(const SVGImageContext&) const = default;
|
||||||
@@ -129,7 +154,8 @@ class SVGImageContext {
|
@@ -123,7 +148,8 @@ class SVGImageContext {
|
||||||
return HashGeneric(hash, mViewportSize.map(HashSize).valueOr(0),
|
return AddToHash(hash, mViewportSize.map(HashSize).valueOr(0),
|
||||||
mPreserveAspectRatio.map(HashPAR).valueOr(0),
|
mPreserveAspectRatio.map(HashPAR).valueOr(0),
|
||||||
mColorScheme.map(HashColorScheme).valueOr(0),
|
mColorScheme.map(HashColorScheme).valueOr(0),
|
||||||
- HashLinkParameters(mLinkParameters));
|
- HashLinkParameters(mLinkParameters));
|
||||||
+ HashLinkParameters(mLinkParameters), mZenBoostsAccent,
|
+ HashLinkParameters(mLinkParameters), mZenBoostsAccent,
|
||||||
+ mZenBoostsComplementaryRotation, mZenBoostsInverted);
|
+ mZenBoostsComplementaryRotation, mZenBoostsInverted);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -167,6 +193,9 @@ class SVGImageContext {
|
@@ -156,6 +182,9 @@ class SVGImageContext {
|
||||||
Maybe<SVGPreserveAspectRatio> mPreserveAspectRatio;
|
Maybe<SVGPreserveAspectRatio> mPreserveAspectRatio;
|
||||||
Maybe<ColorScheme> mColorScheme;
|
Maybe<ColorScheme> mColorScheme;
|
||||||
StyleLinkParameters mLinkParameters;
|
StyleLinkParameters mLinkParameters;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/toolkit/content/widgets/moz-toggle/moz-toggle.tokens.css b/toolkit/content/widgets/moz-toggle/moz-toggle.tokens.css
|
diff --git a/toolkit/content/widgets/moz-toggle/moz-toggle.tokens.css b/toolkit/content/widgets/moz-toggle/moz-toggle.tokens.css
|
||||||
index 6247d7a3923a6fedd4ec9911aba309ce565cd498..744e670eccc936dde664aa07df3e87bdcafd5e48 100644
|
index c0976c54418a28046802443931042bd285aefbde..2adb18d25edbb8aac4e396fcfc64a4a664607836 100644
|
||||||
--- a/toolkit/content/widgets/moz-toggle/moz-toggle.tokens.css
|
--- a/toolkit/content/widgets/moz-toggle/moz-toggle.tokens.css
|
||||||
+++ b/toolkit/content/widgets/moz-toggle/moz-toggle.tokens.css
|
+++ b/toolkit/content/widgets/moz-toggle/moz-toggle.tokens.css
|
||||||
@@ -13,8 +13,8 @@
|
@@ -13,8 +13,8 @@
|
||||||
@@ -11,5 +11,5 @@ index 6247d7a3923a6fedd4ec9911aba309ce565cd498..744e670eccc936dde664aa07df3e87bd
|
|||||||
+ --toggle-background-color-pressed: var(--zen-primary-color);
|
+ --toggle-background-color-pressed: var(--zen-primary-color);
|
||||||
+ --toggle-background-color-pressed-hover: var(--zen-colors-hover-bg);
|
+ --toggle-background-color-pressed-hover: var(--zen-colors-hover-bg);
|
||||||
--toggle-background-color-pressed-active: var(--color-accent-primary-active);
|
--toggle-background-color-pressed-active: var(--color-accent-primary-active);
|
||||||
--toggle-border-color: var(--border-color-interactive);
|
--toggle-border-color: light-dark(var(--color-gray-70), var(--border-color-interactive));
|
||||||
--toggle-border-color-hover: var(--toggle-border-color);
|
--toggle-border-color-hover: var(--toggle-border-color);
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/widget/cocoa/nsCocoaWindow.h b/widget/cocoa/nsCocoaWindow.h
|
diff --git a/widget/cocoa/nsCocoaWindow.h b/widget/cocoa/nsCocoaWindow.h
|
||||||
index 312011c1c2ac41e78affecbdef25d72766a7c882..e5865c7d6259f0a3df48edf7a26b1b75a23cdb3a 100644
|
index 22a2a7ef3a5e9257c8bb00ba6a55e8d39d2abbd9..6d8353fd11921585f7101f5717bdb3dd8f2a5eae 100644
|
||||||
--- a/widget/cocoa/nsCocoaWindow.h
|
--- a/widget/cocoa/nsCocoaWindow.h
|
||||||
+++ b/widget/cocoa/nsCocoaWindow.h
|
+++ b/widget/cocoa/nsCocoaWindow.h
|
||||||
@@ -462,6 +462,10 @@ class nsCocoaWindow final : public nsIWidget {
|
@@ -461,6 +461,10 @@ class nsCocoaWindow final : public nsIWidget {
|
||||||
void SetHideTitlebarSeparator(bool) override;
|
void SetHideTitlebarSeparator(bool) override;
|
||||||
bool IsMacTitlebarDirectionRTL() override;
|
bool IsMacTitlebarDirectionRTL() override;
|
||||||
void SetCustomTitlebar(bool) override;
|
void SetCustomTitlebar(bool) override;
|
||||||
@@ -13,9 +13,9 @@ index 312011c1c2ac41e78affecbdef25d72766a7c882..e5865c7d6259f0a3df48edf7a26b1b75
|
|||||||
void UpdateThemeGeometries(
|
void UpdateThemeGeometries(
|
||||||
const nsTArray<ThemeGeometry>& aThemeGeometries) override;
|
const nsTArray<ThemeGeometry>& aThemeGeometries) override;
|
||||||
void LockAspectRatio(bool aShouldLock) override;
|
void LockAspectRatio(bool aShouldLock) override;
|
||||||
@@ -672,6 +676,7 @@ class nsCocoaWindow final : public nsIWidget {
|
@@ -674,6 +678,7 @@ class nsCocoaWindow final : public nsIWidget {
|
||||||
bool mAspectRatioLocked = false;
|
// show (e.g. a window created by detaching a tab from a fullscreen window).
|
||||||
bool mIsAlert = false; // True if this is an non-native alert window.
|
bool mIsInitialFullscreenSuppressed = false;
|
||||||
bool mWasShown = false;
|
bool mWasShown = false;
|
||||||
+ bool mIsBrowserWindow = false;
|
+ bool mIsBrowserWindow = false;
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
diff --git a/widget/gtk/nsDragService.cpp b/widget/gtk/nsDragService.cpp
|
diff --git a/widget/gtk/nsDragSessionSource.cpp b/widget/gtk/nsDragSessionSource.cpp
|
||||||
index f760a6bb887b321376761431886c771f14fd03af..d52110ba52a95ef7c7bfb915e120b8dd636c9448 100644
|
index a5f67d700f8c80d513f08cc25405b57cf28a2a9a..58186470bcbb7b1eda34ee20a19e29d540ab052a 100644
|
||||||
--- a/widget/gtk/nsDragService.cpp
|
--- a/widget/gtk/nsDragSessionSource.cpp
|
||||||
+++ b/widget/gtk/nsDragService.cpp
|
+++ b/widget/gtk/nsDragSessionSource.cpp
|
||||||
@@ -23,6 +23,7 @@
|
@@ -13,6 +13,7 @@
|
||||||
|
#include "mozilla/Services.h"
|
||||||
#include "mozilla/StaticPrefs_widget.h"
|
#include "mozilla/StaticPrefs_widget.h"
|
||||||
#include "mozilla/WidgetUtils.h"
|
|
||||||
#include "mozilla/WidgetUtilsGtk.h"
|
#include "mozilla/WidgetUtilsGtk.h"
|
||||||
+#include "mozilla/nsZenDragAndDrop.h"
|
+#include "mozilla/nsZenDragAndDrop.h"
|
||||||
#include "nsAppShell.h"
|
#include "nsAppShell.h"
|
||||||
#include "nsArrayUtils.h"
|
#include "nsArrayUtils.h"
|
||||||
#include "nsCRT.h"
|
#include "nsCRT.h"
|
||||||
@@ -2304,11 +2305,15 @@ bool nsDragSession::SetAlphaPixmap(SourceSurface* aSurface,
|
@@ -1196,11 +1197,15 @@ bool nsDragSessionSource::SetAlphaPixmap(SourceSurface* aSurface,
|
||||||
cairo_image_surface_get_stride(surf), SurfaceFormat::B8G8R8A8);
|
cairo_image_surface_get_stride(surf), SurfaceFormat::B8G8R8A8);
|
||||||
if (!dt) return false;
|
if (!dt) return false;
|
||||||
|
|
||||||
@@ -1282,7 +1282,7 @@ window.gZenVerticalTabsManager = {
|
|||||||
if (!this._hasSetSingleToolbar) {
|
if (!this._hasSetSingleToolbar) {
|
||||||
height = AppConstants.platform == "macosx" ? 34 : 32;
|
height = AppConstants.platform == "macosx" ? 34 : 32;
|
||||||
} else if (!gURLBar.hasAttribute("breakout-extend")) {
|
} else if (!gURLBar.hasAttribute("breakout-extend")) {
|
||||||
height = 38;
|
height = 36;
|
||||||
}
|
}
|
||||||
if (typeof height !== "undefined") {
|
if (typeof height !== "undefined") {
|
||||||
gURLBar.style.setProperty("--urlbar-height", `${height}px`);
|
gURLBar.style.setProperty("--urlbar-height", `${height}px`);
|
||||||
|
|||||||
@@ -20,9 +20,9 @@
|
|||||||
--urlbarview-separator-color: light-dark(hsl(0, 0%, 80%), hsl(0, 0%, 20%));
|
--urlbarview-separator-color: light-dark(hsl(0, 0%, 80%), hsl(0, 0%, 20%));
|
||||||
--urlbarview-background-color-hover: var(--toolbarbutton-hover-background);
|
--urlbarview-background-color-hover: var(--toolbarbutton-hover-background);
|
||||||
border-radius: calc(var(--toolbarbutton-border-radius) - 2px);
|
border-radius: calc(var(--toolbarbutton-border-radius) - 2px);
|
||||||
height: var(--urlbar-height);
|
|
||||||
--urlbarView-results-padding: 10px !important;
|
--urlbarView-results-padding: 10px !important;
|
||||||
--urlbar-container-height: 48px !important;
|
--urlbar-container-height: 48px !important;
|
||||||
|
--urlbar-input-container-border: none;
|
||||||
|
|
||||||
--urlbar-margin-inline: 5px;
|
--urlbar-margin-inline: 5px;
|
||||||
--urlbar-container-padding: 4px;
|
--urlbar-container-padding: 4px;
|
||||||
@@ -326,6 +326,7 @@
|
|||||||
order: 2;
|
order: 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* stylelint-disable-next-line stylelint-plugin-mozilla/no-has-selector */
|
||||||
#notification-popup-box:not([open]):not(:has(> [showing="true"])) {
|
#notification-popup-box:not([open]):not(:has(> [showing="true"])) {
|
||||||
margin-inline-start: calc(-10px - 2 * var(--urlbar-icon-padding));
|
margin-inline-start: calc(-10px - 2 * var(--urlbar-icon-padding));
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
@@ -487,6 +488,7 @@
|
|||||||
translate: -50% 0%;
|
translate: -50% 0%;
|
||||||
left: 50% !important;
|
left: 50% !important;
|
||||||
|
|
||||||
|
/* stylelint-disable-next-line stylelint-plugin-mozilla/no-has-selector */
|
||||||
#urlbar-container:has(&) {
|
#urlbar-container:has(&) {
|
||||||
border-radius: var(--border-radius-medium);
|
border-radius: var(--border-radius-medium);
|
||||||
background: var(--toolbarbutton-hover-background);
|
background: var(--toolbarbutton-hover-background);
|
||||||
@@ -633,6 +635,7 @@
|
|||||||
|
|
||||||
#urlbar-label-box,
|
#urlbar-label-box,
|
||||||
#urlbar-search-mode-indicator {
|
#urlbar-search-mode-indicator {
|
||||||
|
--urlbar-basic-component-size: 18px;
|
||||||
background-color: color-mix(in srgb, var(--zen-primary-color) 50%, light-dark(rgba(0, 0, 0, 0.5), rgba(255, 255, 255, 0.2)) 50%) !important;
|
background-color: color-mix(in srgb, var(--zen-primary-color) 50%, light-dark(rgba(0, 0, 0, 0.5), rgba(255, 255, 255, 0.2)) 50%) !important;
|
||||||
color: white;
|
color: white;
|
||||||
padding: 4px 8px;
|
padding: 4px 8px;
|
||||||
|
|||||||
@@ -502,11 +502,13 @@
|
|||||||
opacity 0.12s ease-in-out;
|
opacity 0.12s ease-in-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* stylelint-disable-next-line stylelint-plugin-mozilla/no-has-selector */
|
||||||
.permission-popup-permission-item:hover &::before,
|
.permission-popup-permission-item:hover &::before,
|
||||||
.permission-popup-boost-item:hover:not(:has(.zen-permission-popup-boost-editor-button:hover)) &::before {
|
.permission-popup-boost-item:hover:not(:has(.zen-permission-popup-boost-editor-button:hover)) &::before {
|
||||||
transform: scale(1.05);
|
transform: scale(1.05);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* stylelint-disable-next-line stylelint-plugin-mozilla/no-has-selector */
|
||||||
.permission-popup-permission-item:active:hover &::before,
|
.permission-popup-permission-item:active:hover &::before,
|
||||||
.permission-popup-boost-item:active:hover:not(:has(.zen-permission-popup-boost-editor-button:hover)) &::before {
|
.permission-popup-boost-item:active:hover:not(:has(.zen-permission-popup-boost-editor-button:hover)) &::before {
|
||||||
transform: scale(0.95);
|
transform: scale(0.95);
|
||||||
|
|||||||
@@ -156,11 +156,28 @@ class nsZenWorkspaces {
|
|||||||
this._invalidateBookmarkContainers();
|
this._invalidateBookmarkContainers();
|
||||||
};
|
};
|
||||||
Services.obs.addObserver(observerFunction, "workspace-bookmarks-updated");
|
Services.obs.addObserver(observerFunction, "workspace-bookmarks-updated");
|
||||||
|
const onContainerDeleted = subject => {
|
||||||
|
const userContextId = subject?.wrappedJSObject?.userContextId;
|
||||||
|
for (const workspace of this.getWorkspaces()) {
|
||||||
|
if (workspace.containerTabId === userContextId) {
|
||||||
|
workspace.containerTabId = 0;
|
||||||
|
this.saveWorkspace(workspace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Services.obs.addObserver(
|
||||||
|
onContainerDeleted,
|
||||||
|
"contextual-identity-deleted"
|
||||||
|
);
|
||||||
window.addEventListener("unload", () => {
|
window.addEventListener("unload", () => {
|
||||||
Services.obs.removeObserver(
|
Services.obs.removeObserver(
|
||||||
observerFunction,
|
observerFunction,
|
||||||
"workspace-bookmarks-updated"
|
"workspace-bookmarks-updated"
|
||||||
);
|
);
|
||||||
|
Services.obs.removeObserver(
|
||||||
|
onContainerDeleted,
|
||||||
|
"contextual-identity-deleted"
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -543,6 +543,7 @@ class nsZenSpacesSyncApplier {
|
|||||||
skipBackgroundNotify: true,
|
skipBackgroundNotify: true,
|
||||||
lazyTabTitle: data.title || undefined,
|
lazyTabTitle: data.title || undefined,
|
||||||
userContextId,
|
userContextId,
|
||||||
|
skipRoute: true,
|
||||||
});
|
});
|
||||||
// Setting the sync id before the queued TabOpen handler runs makes
|
// Setting the sync id before the queued TabOpen handler runs makes
|
||||||
// window sync treat this tab as already replicated.
|
// window sync treat this tab as already replicated.
|
||||||
|
|||||||
@@ -181,10 +181,18 @@ class nsZenSpacesSyncModel {
|
|||||||
if (!Number.isSafeInteger(id) || id <= 0) {
|
if (!Number.isSafeInteger(id) || id <= 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
const data = this.#data();
|
||||||
|
if (!lazy.ContextualIdentityService.getPublicIdentityFromId(id)) {
|
||||||
|
// A space or tab still pointing at a container that was deleted.
|
||||||
|
if (id in data.containers) {
|
||||||
|
delete data.containers[id];
|
||||||
|
this.#file.saveSoon();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
if (id <= BUILTIN_CONTAINER_MAX) {
|
if (id <= BUILTIN_CONTAINER_MAX) {
|
||||||
return `${BUILTIN_GUID_PREFIX}${id}`;
|
return `${BUILTIN_GUID_PREFIX}${id}`;
|
||||||
}
|
}
|
||||||
const data = this.#data();
|
|
||||||
const existing = data.containers[id];
|
const existing = data.containers[id];
|
||||||
if (existing) {
|
if (existing) {
|
||||||
return existing;
|
return existing;
|
||||||
@@ -202,17 +210,27 @@ class nsZenSpacesSyncModel {
|
|||||||
if (typeof guid !== "string" || !guid) {
|
if (typeof guid !== "string" || !guid) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
const data = this.#data();
|
||||||
|
for (const [id, mapped] of Object.entries(data.containers)) {
|
||||||
|
if (mapped === guid) {
|
||||||
|
const contextId = Number(id);
|
||||||
|
if (lazy.ContextualIdentityService.getPublicIdentityFromId(contextId)) {
|
||||||
|
return contextId;
|
||||||
|
}
|
||||||
|
delete data.containers[id];
|
||||||
|
this.#file.saveSoon();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (guid.startsWith(BUILTIN_GUID_PREFIX)) {
|
if (guid.startsWith(BUILTIN_GUID_PREFIX)) {
|
||||||
const id = Number(guid.slice(BUILTIN_GUID_PREFIX.length));
|
const id = Number(guid.slice(BUILTIN_GUID_PREFIX.length));
|
||||||
return Number.isSafeInteger(id) && id > 0 && id <= BUILTIN_CONTAINER_MAX
|
return Number.isSafeInteger(id) &&
|
||||||
|
id > 0 &&
|
||||||
|
id <= BUILTIN_CONTAINER_MAX &&
|
||||||
|
lazy.ContextualIdentityService.getPublicIdentityFromId(id)
|
||||||
? id
|
? id
|
||||||
: null;
|
: null;
|
||||||
}
|
}
|
||||||
for (const [id, mapped] of Object.entries(this.#data().containers)) {
|
|
||||||
if (mapped === guid) {
|
|
||||||
return Number(id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -223,9 +241,6 @@ class nsZenSpacesSyncModel {
|
|||||||
* @param {number} userContextId
|
* @param {number} userContextId
|
||||||
*/
|
*/
|
||||||
registerContainerGuid(guid, userContextId) {
|
registerContainerGuid(guid, userContextId) {
|
||||||
if (guid.startsWith(BUILTIN_GUID_PREFIX)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.#data().containers[userContextId] = guid;
|
this.#data().containers[userContextId] = guid;
|
||||||
this.#file.saveSoon();
|
this.#file.saveSoon();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* stylelint-disable-next-line stylelint-plugin-mozilla/no-has-selector */
|
||||||
&:not([zen-compact-animating])
|
&:not([zen-compact-animating])
|
||||||
#zen-sidebar-top-buttons:not(:has(#zen-sidebar-top-buttons-customization-target > *:not(#zen-sidebar-top-buttons-separator), .titlebar-buttonbox-container)) {
|
#zen-sidebar-top-buttons:not(:has(#zen-sidebar-top-buttons-customization-target > *:not(#zen-sidebar-top-buttons-separator), .titlebar-buttonbox-container)) {
|
||||||
max-height: 0 !important;
|
max-height: 0 !important;
|
||||||
|
|||||||
@@ -100,9 +100,10 @@
|
|||||||
width: -moz-available !important;
|
width: -moz-available !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* stylelint-disable-next-line stylelint-plugin-mozilla/no-has-selector */
|
||||||
& #urlbar-container[breakout="true"]:has(#urlbar[zen-floating-urlbar="true"]) {
|
& #urlbar-container[breakout="true"]:has(#urlbar[zen-floating-urlbar="true"]) {
|
||||||
--urlbar-container-height: 36px !important;
|
--urlbar-container-height: 36px !important;
|
||||||
--urlbar-height: 38px !important;
|
--urlbar-height: 36px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
& #nav-bar {
|
& #nav-bar {
|
||||||
@@ -319,6 +320,7 @@
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* stylelint-disable-next-line stylelint-plugin-mozilla/no-has-selector */
|
||||||
:root:not([zen-renaming-tab="true"])
|
:root:not([zen-renaming-tab="true"])
|
||||||
#tabbrowser-tabs:not([movingtab])
|
#tabbrowser-tabs:not([movingtab])
|
||||||
&:active:not(:has(.tab-content > image:active)) {
|
&:active:not(:has(.tab-content > image:active)) {
|
||||||
|
|||||||
@@ -3,10 +3,7 @@
|
|||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
|
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
|
||||||
import {
|
import { UrlbarProvider } from "moz-src:///browser/components/urlbar/UrlbarUtils.sys.mjs";
|
||||||
UrlbarProvider,
|
|
||||||
UrlbarUtils,
|
|
||||||
} from "moz-src:///browser/components/urlbar/UrlbarUtils.sys.mjs";
|
|
||||||
import { UrlbarShared } from "chrome://browser/content/urlbar/UrlbarShared.mjs";
|
import { UrlbarShared } from "chrome://browser/content/urlbar/UrlbarShared.mjs";
|
||||||
import { globalActions } from "resource:///modules/ZenUBGlobalActions.sys.mjs";
|
import { globalActions } from "resource:///modules/ZenUBGlobalActions.sys.mjs";
|
||||||
import { zenUrlbarResultsLearner } from "./ZenUBResultsLearner.sys.mjs";
|
import { zenUrlbarResultsLearner } from "./ZenUBResultsLearner.sys.mjs";
|
||||||
@@ -41,10 +38,10 @@ XPCOMUtils.defineLazyPreferenceGetter(
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* A convenience function that takes a payload annotated with
|
* A convenience function that takes a payload annotated with
|
||||||
* UrlbarUtils.HIGHLIGHT enums and returns the payload and the payload's
|
* UrlbarShared.HIGHLIGHT enums and returns the payload and the payload's
|
||||||
* highlights. Use this function when the highlighting required by your
|
* highlights. Use this function when the highlighting required by your
|
||||||
* payload is based on simple substring matching, as done by
|
* payload is based on simple substring matching, as done by
|
||||||
* UrlbarUtils.getTokenMatches(). Pass the return values as the `payload` and
|
* UrlbarShared.getTokenMatches(). Pass the return values as the `payload` and
|
||||||
* `payloadHighlights` params of the UrlbarResult constructor.
|
* `payloadHighlights` params of the UrlbarResult constructor.
|
||||||
* `payloadHighlights` is optional. If omitted, payload will not be
|
* `payloadHighlights` is optional. If omitted, payload will not be
|
||||||
* highlighted.
|
* highlighted.
|
||||||
@@ -64,7 +61,7 @@ XPCOMUtils.defineLazyPreferenceGetter(
|
|||||||
* payloadPropertyValue may be a string or an array of strings. If
|
* payloadPropertyValue may be a string or an array of strings. If
|
||||||
* it's a string, then the payloadHighlights in the return value will
|
* it's a string, then the payloadHighlights in the return value will
|
||||||
* be an array of match highlights as described in
|
* be an array of match highlights as described in
|
||||||
* UrlbarUtils.getTokenMatches(). If it's an array, then
|
* UrlbarShared.getTokenMatches(). If it's an array, then
|
||||||
* payloadHighlights will be an array of arrays of match highlights,
|
* payloadHighlights will be an array of arrays of match highlights,
|
||||||
* one element per element in payloadPropertyValue.
|
* one element per element in payloadPropertyValue.
|
||||||
* @returns {{ payload: object, payloadHighlights: object }}
|
* @returns {{ payload: object, payloadHighlights: object }}
|
||||||
@@ -93,14 +90,14 @@ function payloadAndSimpleHighlights(tokens, payloadInfo) {
|
|||||||
) {
|
) {
|
||||||
// If there's no title, show the domain as the title. Not all valid URLs
|
// If there's no title, show the domain as the title. Not all valid URLs
|
||||||
// have a domain.
|
// have a domain.
|
||||||
highlightTypes.title = UrlbarUtils.HIGHLIGHT.TYPED;
|
highlightTypes.title = UrlbarShared.HIGHLIGHT.TYPED;
|
||||||
try {
|
try {
|
||||||
payload.title = new URL(payload.url).URI.displayHostPort;
|
payload.title = new URL(payload.url).URI.displayHostPort;
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
}
|
}
|
||||||
if (payload.url) {
|
if (payload.url) {
|
||||||
// For display purposes we need to unescape the url.
|
// For display purposes we need to unescape the url.
|
||||||
payload.displayUrl = UrlbarUtils.prepareUrlForDisplay(payload.url);
|
payload.displayUrl = UrlbarShared.prepareUrlForDisplay(payload.url);
|
||||||
highlightTypes.displayUrl = highlightTypes.url;
|
highlightTypes.displayUrl = highlightTypes.url;
|
||||||
}
|
}
|
||||||
// For performance reasons limit excessive string lengths, to reduce the
|
// For performance reasons limit excessive string lengths, to reduce the
|
||||||
@@ -109,7 +106,7 @@ function payloadAndSimpleHighlights(tokens, payloadInfo) {
|
|||||||
for (let prop of ["displayUrl", "title", "suggestion"]) {
|
for (let prop of ["displayUrl", "title", "suggestion"]) {
|
||||||
let value = payload[prop];
|
let value = payload[prop];
|
||||||
if (typeof value == "string") {
|
if (typeof value == "string") {
|
||||||
payload[prop] = value.substring(0, UrlbarUtils.MAX_TEXT_LENGTH);
|
payload[prop] = value.substring(0, UrlbarShared.MAX_TEXT_LENGTH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let payloadHighlights = {};
|
let payloadHighlights = {};
|
||||||
@@ -118,9 +115,9 @@ function payloadAndSimpleHighlights(tokens, payloadInfo) {
|
|||||||
let value = payload[name];
|
let value = payload[name];
|
||||||
let highlights = Array.isArray(value)
|
let highlights = Array.isArray(value)
|
||||||
? value.map(subval =>
|
? value.map(subval =>
|
||||||
UrlbarUtils.getTokenMatches(tokens, subval, highlightType)
|
UrlbarShared.getTokenMatches(tokens, subval, highlightType)
|
||||||
)
|
)
|
||||||
: UrlbarUtils.getTokenMatches(tokens, value || "", highlightType);
|
: UrlbarShared.getTokenMatches(tokens, value || "", highlightType);
|
||||||
if (highlights.length) {
|
if (highlights.length) {
|
||||||
payloadHighlights[name] = highlights;
|
payloadHighlights[name] = highlights;
|
||||||
}
|
}
|
||||||
@@ -140,10 +137,10 @@ export class ZenUrlbarProviderGlobalActions extends UrlbarProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @returns {Values<typeof UrlbarUtils.PROVIDER_TYPE>}
|
* @returns {Values<typeof UrlbarShared.PROVIDER_TYPE>}
|
||||||
*/
|
*/
|
||||||
get type() {
|
get type() {
|
||||||
return UrlbarUtils.PROVIDER_TYPE.HEURISTIC;
|
return UrlbarShared.PROVIDER_TYPE.HEURISTIC;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -161,7 +158,7 @@ export class ZenUrlbarProviderGlobalActions extends UrlbarProvider {
|
|||||||
UrlbarShared.RESULT_SOURCE.ZEN_ACTIONS ||
|
UrlbarShared.RESULT_SOURCE.ZEN_ACTIONS ||
|
||||||
(lazy.enabledPref &&
|
(lazy.enabledPref &&
|
||||||
queryContext.searchString &&
|
queryContext.searchString &&
|
||||||
queryContext.searchString.length < UrlbarUtils.MAX_TEXT_LENGTH &&
|
queryContext.searchString.length < UrlbarShared.MAX_TEXT_LENGTH &&
|
||||||
queryContext.searchString.length > 2 &&
|
queryContext.searchString.length > 2 &&
|
||||||
!lazy.UrlUtils.REGEXP_LIKE_PROTOCOL.test(queryContext.searchString))
|
!lazy.UrlUtils.REGEXP_LIKE_PROTOCOL.test(queryContext.searchString))
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -178,6 +178,7 @@
|
|||||||
box-shadow: var(--zen-big-shadow);
|
box-shadow: var(--zen-big-shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* stylelint-disable-next-line stylelint-plugin-mozilla/no-has-selector */
|
||||||
&:has(:checked) {
|
&:has(:checked) {
|
||||||
box-shadow: var(--zen-big-shadow);
|
box-shadow: var(--zen-big-shadow);
|
||||||
border: 2px solid var(--zen-primary-color);
|
border: 2px solid var(--zen-primary-color);
|
||||||
@@ -197,6 +198,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 3 or more engines */
|
/* 3 or more engines */
|
||||||
|
/* stylelint-disable-next-line stylelint-plugin-mozilla/no-has-selector */
|
||||||
&[select-engine="true"]:has(label:nth-of-type(3)) > label {
|
&[select-engine="true"]:has(label:nth-of-type(3)) > label {
|
||||||
height: 50%;
|
height: 50%;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
"version": {
|
"version": {
|
||||||
"product": "firefox",
|
"product": "firefox",
|
||||||
"version": "154.0.1",
|
"version": "154.0.1",
|
||||||
"candidate": "154.0.1",
|
"candidate": "155.0",
|
||||||
"candidateBuild": 1
|
"candidateBuild": 1
|
||||||
},
|
},
|
||||||
"buildOptions": {
|
"buildOptions": {
|
||||||
|
|||||||
Reference in New Issue
Block a user