Compare commits

...

83 Commits

Author SHA1 Message Date
mr. m
cd1616d1c0 gh-13761: Fixed closing a split view selecting it on other windows (gh-13790) 2026-05-21 18:18:18 +02:00
mr. m
0b9f0bbe91 no-bug: Lower boosts radius for macos (gh-13784) 2026-05-21 09:21:19 +02:00
Ashvin Jangid
b726dc8052 gh-13612: display "Space" key name correctly in keyboard shortcuts page (gh-13774) 2026-05-21 09:14:33 +02:00
Ashvin Jangid
81d30b906a gh-13776: fix shortcut conflict detection failing with special keys (gh-13777) 2026-05-21 09:14:18 +02:00
mr. m
ae14d05290 no-bug: Update to Firefox 151.0 (gh-13775) 2026-05-20 16:51:06 +02:00
mr. m
8840bd77ae no-bug: Let overflowable webexts toolbar ride the train (gh-13772) 2026-05-20 13:39:12 +02:00
mr. m
1c3b74c508 no-bug: Increase toolbar overflow threshold (gh-13771) 2026-05-20 13:35:55 +02:00
Ashvin Jangid
f9c4575c78 gh-13767: fix special key shortcuts displaying incorrectly until page reload (gh-13768)
The problem was that `input.value` was getting the raw shortcut and not
really converting it to the normalized displayable string.
There was no method to just get the `displayString` for a shortcut
without creating a new one, so I put that logic into
`gZenZenKeyboardShortcutsManager`. The static function in `KeyShortcut`
class is just to reduce code duplication.

fixes: #13767
2026-05-20 12:46:11 +02:00
mr. m
035e5931fc gh-10594: Video controls going under the screen when in fullscreen (gh-13769) 2026-05-20 11:53:23 +02:00
mr. m
d5d86dbfa5 no-bug: Fixed continue where you left off not working anymore (gh-13764) 2026-05-20 00:29:25 +02:00
mr. m
1b9408ecb0 no-bug: Add polish to finished boosts implementation (gh-13762)
Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-05-19 23:58:00 +02:00
Andrey Bochkarev
ef259f58aa no-bug: Fix cyclic workspace switching (gh-13743) 2026-05-18 22:26:49 +02:00
mr. m
149fc12366 no-bug: Remove panel padding reset from patch (gh-13736) 2026-05-18 00:10:30 +02:00
mr. m
77c513511b gh-12949: Fixed reset url indicator showing for sub documents (gh-13735) 2026-05-17 22:51:20 +02:00
Ashvin Jangid
99e647a7a8 gh-13653: fix copy url button/shortcut to respect decodeURLsOnCopy spec (gh-13659)
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-05-17 22:35:20 +02:00
mr. m
41893aa6f3 gh-13716: Fixed greyed out urlbar text color (gh-13727) 2026-05-17 20:35:25 +02:00
fen4flo
62a91aefd2 no-bug: Move boost import/export buttons (gh-13724) 2026-05-17 20:35:10 +02:00
mr. m
644c75e3e8 gh-13719: Correctly set scroll left to the urlbar input (gh-13726) 2026-05-17 15:38:36 +02:00
mr. m
8752bf089e gh-13703: Fixed space swiping ocassionally being stuck (gh-13725) 2026-05-17 15:38:15 +02:00
mr. m
c6c3b89a45 no-bug: Fixed clang-tidy forming invalid syntax on boosts manager (gh-13711) 2026-05-16 04:12:57 +02:00
mr. m
8cd244fee4 no-bug: Update MacOS SDK version (gh-13710) 2026-05-16 03:39:57 +02:00
fen4flo
ba348e04f0 no-bug: Add secondary color dot, Rearrange buttons & Editor UI Updates (gh-13708)
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-05-16 02:53:35 +02:00
mr. m
90a6ebe948 no-bug: Sync upstream Firefox to version 151.0 (gh-13706) 2026-05-16 00:29:01 +02:00
mr. m
1659838194 no-bug: Prevent active attribute from being set when a popup opens (gh-13695) 2026-05-14 09:41:20 +02:00
mr. m
a82e145b1d no-bug: Fixed opening new private windows removing initial tabs (gh-13687) 2026-05-13 23:10:54 +02:00
mr. m
3dd0ec9b65 no-bug: Fixed startup hang when release notes open (gh-13683) 2026-05-13 16:37:16 +02:00
mr. m
f0a63fa7c5 no-bug: Fixed overflowable addons clipping button badges (gh-13679) 2026-05-13 12:38:31 +02:00
mr. m
ad52054113 no-bug: Sync upstream Firefox to version 150.0.3 (gh-13670) 2026-05-12 23:20:00 +02:00
Guilherme Luiz Cella
0a7ee3fcf0 no-bug: Refactor _oppositeSide method using OPPOSITE_SIDES (gh-13613)
Signed-off-by: Guilherme Luiz Cella <151692400+guilherme-luiz-cella@users.noreply.github.com>
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-05-12 11:57:56 +02:00
mr. m
c406e79c5d no-bug: Remove fullscreen prefs (gh-13648) 2026-05-10 23:28:52 +02:00
jakubiakdev
78c37a122e no-bug: Improve flaky URLBar scrolling (gh-13645)
Co-authored-by: mr. m <mr.m@tuta.com>
2026-05-10 23:26:52 +02:00
AbdullahMRiad
8f0edbd91a no-bug: Fix capitalization of 'GitHub' in README (gh-13635) 2026-05-09 23:44:46 +02:00
mr. m
d9c6dcdca4 no-bug: Improve space swipe performance (gh-13631) 2026-05-09 18:20:05 +02:00
mr. m
4983c0a877 no-bug: Lint project (gh-13632) 2026-05-09 17:53:52 +02:00
sporocyst
4e6521a713 gh-13629: fix tab renaming input field too narrow (gh-13630) 2026-05-09 16:50:29 +02:00
mr. m
da9838e478 gh-13620: Fixed unresponsive tabs when opening external links (gh-13628) 2026-05-09 12:17:13 +02:00
mr. m
639bf29de3 gh-13623: Fixed native popovers not working after using dropdowns (gh-13627) 2026-05-09 12:17:00 +02:00
mr. m
cfd1e7a6aa no-bug: Make extensions list hidden for double toolbar (gh-13610) 2026-05-08 13:08:17 +02:00
mr. m
17f61152b9 Revert "no-bug: A few quality-of-life tweaks (build tooling)" (gh-13605) 2026-05-07 21:27:37 +02:00
mr. m
9c88e3a84f no-bug: Sync upstream Firefox to version 150.0.2 (gh-13601) 2026-05-07 18:28:25 +02:00
mr. m
b999a932ac no-bug: Improve swipe feel and avoid big jumps while swiping (gh-13603) 2026-05-07 17:08:50 +02:00
dependabot[bot]
e9a0beae20 no-bug: bump axios from 1.15.0 to 1.16.0 (gh-13590)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-06 23:12:02 +02:00
Daniel Richard G.
b93c2054c4 no-bug: A few quality-of-life tweaks (build tooling) (gh-13565) 2026-05-06 21:38:16 +02:00
mr. m
dcf272f620 gh-13516: Show the loading indicator ontop of the webview for toolbar mode (gh-13588) 2026-05-06 16:23:05 +02:00
mr. m
3ffdf6b299 gh-13583: Fixed Previous Space in menu bar not working (gh-13587) 2026-05-06 16:10:02 +02:00
mr. m
b052c1d804 gh-13584: Add click tab to split config (gh-13586) 2026-05-06 16:02:41 +02:00
mr. m
818c448dfc gh-10649: Update upstream patchs for session store (gh-13581) 2026-05-06 12:26:53 +02:00
mr. m
5b16bb36d9 no-bug: Dont recalculate urlbar overflow if its opened (gh-13571) 2026-05-05 11:59:50 +02:00
mr. m
5b790a431a gh-12699: Fixed switching windoww focus causing blinks (gh-13568) 2026-05-05 11:37:46 +02:00
Zander Otavka
149419d1fd no-bug: Add shortcut to create a new Space (gh-13552)
Co-authored-by: Zander Otavka <AlexanderOtavka@users.noreply.github.com>
2026-05-05 00:14:24 +02:00
mr. m
60a77413df no-bug: Use a different blur for the urlbar, depending on the theme (gh-13562) 2026-05-05 00:13:14 +02:00
mr. m
ce1ee9228b Merge commit from fork 2026-05-04 20:20:47 +02:00
sporocyst
1bea3d401c gh-13545: Fix regression from gh-13483 (gh-13554)
Co-authored-by: mr. m <mr.m@tuta.com>
2026-05-04 12:15:19 +02:00
Zander Otavka
b6624612cd no-bug: Submit workspace creation form on Enter and cancel on Escape (gh-13549)
Co-authored-by: Zander Otavka <AlexanderOtavka@users.noreply.github.com>
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-05-04 10:21:43 +02:00
mr. m
aa463e2cb0 no-bug: Fix patch sets (gh-13557) 2026-05-04 10:07:22 +02:00
Zander Otavka
6552f0b3c3 no-bug: Add focus indicators to space creation form (gh-13550)
Co-authored-by: Zander Otavka <AlexanderOtavka@users.noreply.github.com>
2026-05-04 02:35:10 +02:00
mr. m
9950679f2c no-bug: Boosts optimization and enable acrylic elements for twilight (gh-13551) 2026-05-04 02:34:41 +02:00
mr. m
a9a582afae gh-13522: Fixed search engines not being visible in settings (gh-13547) 2026-05-03 23:35:14 +02:00
mr. m
607551f394 Merge commit from fork 2026-05-03 22:39:44 +02:00
mr. m
3278a43751 gh-13294: Fix macos crash with native popovers (gh-13546) 2026-05-03 22:09:17 +02:00
mr. m
c82d314913 no-bug: Make addons appear on the urlbar (gh-13535) 2026-05-03 14:53:37 +02:00
mr. m
a71a66c00b no-bug: Force boosts colors to fit in 32 bit ints (gh-13532) 2026-05-02 11:36:15 +02:00
mr. m
c0cd45bf1d gh-13530: Apply translations to desktop files (gh-13531) 2026-05-02 11:08:08 +02:00
mr. m
562e6e5c3a gh-13488: Fixed auto hide not working after installing an extension (gh-13498) 2026-04-29 20:31:46 +02:00
mr. m
21f7fdaef4 no-bug: Increase tab hover scaling (gh-13487) 2026-04-29 12:20:47 +02:00
mr. m
04c5bc3478 no-bug: Bump release version (gh-13486) 2026-04-29 12:06:58 +02:00
sporocyst
092ee7bc2a gh-7094: Fix webcontent shift when bookmark + title bar is active (gh-13483) 2026-04-29 10:00:14 +02:00
Ezhik
18c15ac0b8 no-bug: Add workspaces search (gh-12745)
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
Co-authored-by: jababda <jababda@hotmail.com>
2026-04-28 20:56:16 +02:00
mr. m
c0620a95ef no-bug: Sync upstream Firefox to version 150.0.1 (gh-13472) 2026-04-28 20:37:46 +02:00
sporocyst
c939ee4a3d gh-7094: Fixed topbar dropping down when titlebar is enabled (gh-13468) 2026-04-28 20:37:19 +02:00
Andre Nijman
709691225a gh-12142: Clear pending attribute on synced tabs (gh-13460)
Co-authored-by: mr. m <mr.m@tuta.com>
2026-04-28 20:36:32 +02:00
mr. m
bb14e5d66f no-bug: Make checks if boost css is undefined (gh-13451) 2026-04-28 00:49:18 +02:00
mr. m
92dfe0babd gh-13439: Add Boosts implementation (gh-12586)
Co-authored-by: fen4flo <75260616+FlorianButz@users.noreply.github.com>
Co-authored-by: fen4flo <fb8599422@gmail.com>
2026-04-27 13:24:30 +02:00
mr. m
4a7b517460 no-bug: Always show initial url if empty tab is selected (gh-13435) 2026-04-27 09:52:01 +02:00
mr. m
102dcb1993 no-bug: Fixed startup cacresh when no initial tab is found (gh-13434) 2026-04-27 09:44:32 +02:00
mr. m
040bed5ce5 gh-8643: Fixed dragging tabs between windows not hiding sidebar (gh-13430) 2026-04-27 00:32:12 +02:00
mr. m
6d3a59ac04 gh-10594: Fixed video controls being off screen in compact mode (gh-13428) 2026-04-27 00:29:20 +02:00
mr. m
4d26b4d597 no-bug: Make transparent urlbar work again (gh-13424) 2026-04-26 19:20:36 +02:00
mr. m
6aafd8cb34 gh-13414: Fixed browser startup not being responsive (gh-13418) 2026-04-26 12:25:44 +02:00
mr. m
2028a9b288 gh-13390: Fixed splitting out a single tab ending up non-functional (gh-13419) 2026-04-26 12:25:26 +02:00
mr. m
cd956d34b1 gh-13400: Fixed modal text being cutoff (gh-13410) 2026-04-26 00:00:44 +02:00
Ivaon
0cfc25ccb0 no-bug: contain of .zen-glance-sidebar-container too strict (gh-13401) 2026-04-25 16:47:59 +02:00
mr. m
0199e256d6 gh-13393: Fixed print dialog appearing off the screen (gh-13397) 2026-04-25 11:01:00 +02:00
265 changed files with 13074 additions and 1405 deletions

View File

@@ -35,7 +35,7 @@ fi
if echo "$LATEST_RELEASE" | jq -e '.security != null and .security != ""' > /dev/null; then if echo "$LATEST_RELEASE" | jq -e '.security != null and .security != ""' > /dev/null; then
echo echo
echo "## Security" echo "## Security"
echo "[Various security fixes]($(echo "$LATEST_RELEASE" | jq -r '.security'))" echo "$LATEST_RELEASE" | jq -r 'if (.security | type) == "string" then "- " + .security else .security[] | "- " + . end'
fi fi
if echo "$LATEST_RELEASE" | jq -e '(.features // []) | length > 0' > /dev/null; then if echo "$LATEST_RELEASE" | jq -e '(.features // []) | length > 0' > /dev/null; then

View File

@@ -129,7 +129,7 @@ jobs:
token: ${{ secrets.DEPLOY_KEY }} token: ${{ secrets.DEPLOY_KEY }}
commit-message: "chore: Sync upstream to `Firefox ${{ steps.build-data.outputs.version }}`" commit-message: "chore: Sync upstream to `Firefox ${{ steps.build-data.outputs.version }}`"
branch: "chore/upstream-sync" branch: "chore/upstream-sync"
title: "Sync upstream Firefox to version ${{ steps.build-data.outputs.version }}" title: "no-bug: Sync upstream Firefox to version ${{ steps.build-data.outputs.version }}"
body: | body: |
This PR syncs the upstream Firefox to version ${{ steps.build-data.outputs.version }}. This PR syncs the upstream Firefox to version ${{ steps.build-data.outputs.version }}.

1
.gitignore vendored
View File

@@ -34,3 +34,4 @@ build/signing/cert.pem
build/signing/private_key.pem build/signing/private_key.pem
build/signing/private_key.p12 build/signing/private_key.p12
bloat-dump.log

View File

@@ -34,12 +34,12 @@ 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 `150.0`! 🚀 - [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `151.0.1`! 🚀
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 150.0`! - [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 151.0.1`!
### Contributing ### Contributing
If you'd like to report a bug, please do so on our [GitHub Issues page](https://github.com/zen-browser/desktop/issues/) and for feature requests, you can use [Github Discussions](https://github.com/zen-browser/desktop/discussions). If you'd like to report a bug, please do so on our [GitHub Issues page](https://github.com/zen-browser/desktop/issues/) and for feature requests, you can use [GitHub Discussions](https://github.com/zen-browser/desktop/discussions).
Zen is an open-source project, and we welcome contributions from the community! Please take a look at the [contribution guidelines](./docs/contribute.md) before getting started! Zen is an open-source project, and we welcome contributions from the community! Please take a look at the [contribution guidelines](./docs/contribute.md) before getting started!

View File

@@ -1,31 +1,698 @@
[Desktop Entry] [Desktop Entry]
Name=Zen Browser Name=Zen Browser
Comment=Experience tranquillity while browsing the web without people tracking you! Comment=A fast, private and secure web browser built to improve your day-to-day experience.
Exec=zen %u Exec=zen %u
Icon=zen Icon=zen
Type=Application Type=Application
MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-xpinstall;application/pdf;application/json; MimeType=application/json;application/pdf;application/rdf+xml;application/rss+xml;application/x-xpinstall;application/xhtml+xml;application/xml;audio/flac;audio/ogg;audio/webm;image/avif;image/gif;image/jpeg;image/png;image/svg+xml;image/webp;text/html;text/xml;video/ogg;video/webm;x-scheme-handler/chrome;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/mailto;
StartupWMClass=zen StartupWMClass=zen
Categories=Network;WebBrowser; Categories=Network;WebBrowser;
StartupNotify=true StartupNotify=true
Terminal=false Terminal=false
X-MultipleArgs=false X-MultipleArgs=false
GenericName=Web Browser
GenericName[ach]=Web Browser
GenericName[af]=Web Browser
GenericName[an]=Web Browser
GenericName[ar]=متصفح الوِب
GenericName[ast]=Web Browser
GenericName[az]=Web Browser
GenericName[be]=Вэб-браўзер
GenericName[bg]=Уеб браузър
GenericName[bn]=ওয়েব ব্রাউজার
GenericName[bqi]=گشت گر وب
GenericName[br]=Merdeer Web
GenericName[brx]=Web Browser
GenericName[bs]=Web pretraživač
GenericName[ca]=Navegador web
GenericName[ca_valencia]=Web Browser
GenericName[cak]=Web Okik'amaya'l
GenericName[ckb]=Web Browser
GenericName[cs]=Webový prohlížeč
GenericName[cy]=Porwr Gwe
GenericName[da]=Webbrowser
GenericName[de]=Internet-Browser
GenericName[dsb]=Webwobglědowak
GenericName[el]=Πρόγραμμα περιήγησης
GenericName[en_CA]=Web Browser
GenericName[en_GB]=Web Browser
GenericName[eo]=Retumilo
GenericName[es_AR]=Navegador web
GenericName[es_CL]=Navegador Web
GenericName[es_ES]=Navegador web
GenericName[es_MX]=Navegador Web
GenericName[et]=Web Browser
GenericName[eu]=Web nabigatzailea
GenericName[fa]=مرورگر وب
GenericName[ff]=Web Browser
GenericName[fi]=Verkkoselain
GenericName[fr]=Navigateur web
GenericName[fur]=Navigadôr Web
GenericName[fy_NL]=Webbrowser
GenericName[ga_IE]=Web Browser
GenericName[gd]=Brabhsair-lìn
GenericName[gl]=Navegador web
GenericName[gn]=Ñanduti Kundahára
GenericName[gu_IN]=Web Browser
GenericName[he]=דפדפן אינטרנט
GenericName[hi_IN]=Web Browser
GenericName[hr]=Web preglednik
GenericName[hsb]=Webwobhladowak
GenericName[hu]=Webböngésző
GenericName[hy_AM]=Վեբ դիտարկիչ
GenericName[hye]=Web Browser
GenericName[ia]=Navigator web
GenericName[id]=Peramban Web
GenericName[is]=Vafri
GenericName[it]=Browser web
GenericName[ja]=ウェブブラウザー
GenericName[ka]=ბრაუზერი
GenericName[kab]=Iminig web
GenericName[kk]=Веб-браузері
GenericName[km]=Web Browser
GenericName[kn]=Web Browser
GenericName[ko]=웹 브라우저
GenericName[lij]=Navegatô Web
GenericName[lo]=ຕົວ​ທ່ອງ​ເວັບ​ເວັບ​ໄຊ​ຕ​໌
GenericName[lt]=Web Browser
GenericName[ltg]=Web Browser
GenericName[lv]=Tīmekļa pārlūks
GenericName[meh]=Web Browser
GenericName[mk]=Web Browser
GenericName[ml]=ഗോളാന്തരവല അന്വേഷിയന്ത്രം
GenericName[mr]=Web Browser
GenericName[ms]=Web Browser
GenericName[my]=Web Browser
GenericName[nb_NO]=Nettleser
GenericName[ne_NP]=वेब ब्राउजर
GenericName[nl]=Webbrowser
GenericName[nn_NO]=Nettlesar
GenericName[oc]=Navegador Web
GenericName[pa_IN]=ਵੈੱਬ ਬਰਾਊਜ਼ਰ
GenericName[pl]=Przeglądarka internetowa
GenericName[pt_BR]=Navegador web
GenericName[pt_PT]=Navegador Web
GenericName[rm]=Navigatur web
GenericName[ro]=Browser web
GenericName[ru]=Веб-браузер
GenericName[sat]=ᱣᱮᱵᱽ ᱵᱽᱨᱟᱣᱡᱚᱨ
GenericName[sc]=Navigadore web
GenericName[sco]=Web Browser
GenericName[si]=වියමන අතිරික්සුව
GenericName[sk]=Webový prehliadač
GenericName[skr]=ویب براؤزر
GenericName[sl]=Spletni brskalnik
GenericName[son]=Web Browser
GenericName[sq]=Shfletues
GenericName[sr]=Веб прегледач
GenericName[sv_SE]=Webbläsare
GenericName[szl]=Web Browser
GenericName[ta]=Web Browser
GenericName[te]=జాల విహారిణి
GenericName[tg]=Браузери веб
GenericName[th]=เว็บเบราว์เซอร์
GenericName[tl]=Web Browser
GenericName[tr]=Web Tarayıcısı
GenericName[trs]=Web riña gāchē nu
GenericName[uk]=Браузер
GenericName[ur]=Web Browser
GenericName[uz]=Web Browser
GenericName[vi]=Trình duyệt web
GenericName[wo]=Web Browser
GenericName[xh]=Web Browser
GenericName[zh_CN]=Web 浏览器
GenericName[zh_TW]=網頁瀏覽器
Keywords=Internet;WWW;Browser;Web;Explorer; Keywords=Internet;WWW;Browser;Web;Explorer;
Keywords[ach]=Internet;WWW;Browser;Web;Explorer;
Keywords[af]=Internet;WWW;Browser;Web;Explorer;
Keywords[an]=Internet;WWW;Browser;Web;Explorer;
Keywords[ar]=إنترنت;WWW;متصفح;ويب;مستكشف;
Keywords[ast]=Internet;WWW;Browser;Web;Explorer;
Keywords[az]=Internet;WWW;Browser;Web;Explorer;
Keywords[be]=Internet;WWW;Browser;Web;Explorer;
Keywords[bg]=Internet;WWW;Browser;Web;Explorer;
Keywords[bn]=ইন্টারনেট;WWW;ব্রাউজার;ওয়েব;এক্সপ্লোরার;
Keywords[bqi]=Internet;WWW;Browser;Web;Explorer;
Keywords[br]=Internet;WWW;Merdeer;Web;Ergerzhout;
Keywords[brx]=Internet;WWW;Browser;Web;Explorer;
Keywords[bs]=Internet;WWW;Pretraživač;Web;Istraživač;
Keywords[ca]=Internet;WWW;Browser;Web;Explorador;Navegador;
Keywords[ca_valencia]=Internet;WWW;Browser;Web;Explorer;
Keywords[cak]=K'amaya'l;WWW;Okik'amaya'l;Kanob'äl;
Keywords[ckb]=Internet;WWW;Browser;Web;Explorer;
Keywords[cs]=internet;WWW;prohlížeč;web;
Keywords[cy]=Rhyngrwyd;WWW;Porwr;Gwe;Archwiliwr;
Keywords[da]=Internet;WWW;Browser;Nettet;Explorer;
Keywords[de]=Internet;WWW;Browser;Web;Explorer;
Keywords[dsb]=Internet;WWW;wobglědowak;Web;Explorer;
Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Ιστός;Ίντερνετ;
Keywords[en_CA]=Internet;WWW;Browser;Web;Explorer;
Keywords[en_GB]=Internet;WWW;Browser;Web;Explorer;
Keywords[eo]=Interreto;Retumilo;TTT;Teksaĵo;Reto;Internet;WWW;Browser;Web;Explorer;
Keywords[es_AR]=Internet;WWW;Navegador;Web;Explorador;
Keywords[es_CL]=Internet;WWW;Navegador;Web;Explorador;
Keywords[es_ES]=Internet;WWW;Navegador;Web;Explorador;
Keywords[es_MX]=Internet;WWW;Navegador;Web;Explorador;
Keywords[et]=Internet;WWW;Browser;Web;Explorer;
Keywords[eu]=Internet;WWW;Nabigatzailea;Web;Arakatzailea;
Keywords[fa]=Internet;WWW;Browser;Web;Explorer;
Keywords[ff]=Internet;WWW;Browser;Web;Explorer;
Keywords[fi]=Internet;WWW;Browser;Web;Explorer;netti;webbi;selain;
Keywords[fr]=Internet;WWW;Navigateur;Web;Explorer;
Keywords[fur]=Internet;WWW;Browser;Navigadôr;Web;Esploradôr;Explorer;
Keywords[fy_NL]=Ynternet;WWW;Browser;Web;Ferkenner;
Keywords[ga_IE]=Internet;WWW;Browser;Web;Explorer;
Keywords[gd]=Internet;WWW;Browser;Web;Explorer;eadar-lìon;brabhsair;brobhsair;lìon;taisgealaiche;
Keywords[gl]=Internet;WWW;Navegador;Web;Explorador;
Keywords[gn]=Internet;WWW;Browser;Web;Explorer;
Keywords[gu_IN]=Internet;WWW;Browser;Web;Explorer;
Keywords[he]=אינטרנט;WWW;דפדפן;רשת;סייר;מרשתת;
Keywords[hi_IN]=Internet;WWW;Browser;Web;Explorer;
Keywords[hr]=Internet;WWW;Preglednik;Web;Istraživač;
Keywords[hsb]=Internet;WWW;wobhladowak;Web;Explorer;
Keywords[hu]=Internet;WWW;Böngésző;Web;Világháló;
Keywords[hy_AM]=Համացանց,WWW,Զննիչ,Վեբ,Ցանցախույզ:
Keywords[hye]=Internet;WWW;Browser;Web;Explorer;
Keywords[ia]=Internet;WWW;Navigator;Web;Explorator;
Keywords[id]=Internet;WWW;Browser;Web;Explorer;
Keywords[is]=Internet;WWW; Vafri; Vefur; Explorer;
Keywords[it]=Internet;WWW;Browser;Web;Explorer;Navigatore;
Keywords[ja]=Internet;WWW;Browser;Web;Explorer;インターネット;ブラウザー;ウェブ;
Keywords[ka]=ინტერნეტი;WWW;ბრაუზერი;ქსელი;ქსელთან წვდომა;
Keywords[kab]=Internet;WWW;Browser;Web;Explorer;
Keywords[kk]=Internet;WWW;Browser;Web;Explorer;Интернет;Ғаламтор;Браузер;Желі;Шолғыш;
Keywords[km]=Internet;WWW;Browser;Web;Explorer;
Keywords[kn]=Internet;WWW;Browser;Web;Explorer;
Keywords[ko]=인터넷;브라우저;웹;탐색기;Internet;WWW;Browser;Web;Explorer;
Keywords[lij]=Internet;WWW;Browser;Web;Explorer;Navegatô;
Keywords[lo]=Internet;WWW;Browser;Web;Explorer;
Keywords[lt]=Internet;WWW;Browser;Web;Explorer;
Keywords[ltg]=Internet;WWW;Browser;Web;Explorer;
Keywords[lv]=Internets;WWW;Pārlūkprogramma;Tīmeklis;
Keywords[meh]=Internet;WWW;Browser;Web;Explorer;
Keywords[mk]=Internet;WWW;Browser;Web;Explorer;
Keywords[ml]=ഗോളാന്തരവല;WWW;അന്വേഷിയന്ത്രം;ഗോളാന്തരവല;ആരായൻ;
Keywords[mr]=Internet;WWW;Browser;Web;Explorer;
Keywords[ms]=Internet;WWW;Browser;Web;Explorer;
Keywords[my]=Internet;WWW;Browser;Web;Explorer;
Keywords[nb_NO]=Internett;WWW;Nettleser;Web;Utforsker;
Keywords[ne_NP]=Internet;WWW;Browser;Web;Explorer;
Keywords[nl]=Internet;WWW;Browser;Web;Verkenner;
Keywords[nn_NO]=Internett;WWW;Nettlesar;Web;Utforskar;
Keywords[oc]=Internet;WWW;Navegador;Navigador;Navegator;Navigator;Web;Explorer;
Keywords[pa_IN]=ਇੰਟਰਨੈੱਟ;WWW;ਬਰਾਊਜ਼ਰ;ਵੈੱਬ;ਐਕਸਪਲਰੋਰ;ਵੈਬ;ਇੰਟਰਨੈਟ;
Keywords[pl]=Internet;WWW;Przeglądarka;Browser;Wyszukiwarka;Web;Sieć;Explorer;Eksplorer;Strony;Witryny;internetowe;
Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorer;Navegador;
Keywords[pt_PT]=Internet;WWW;Navegador;Web;Explorador;
Keywords[rm]=Internet;WWW;Browser;Web;Explorer;navigatur;
Keywords[ro]=Internet; WWW; Browser; Web; Explorer;
Keywords[ru]=Сеть;Интернет;Браузер;Доступ в Интернет;
Keywords[sat]=Internet;WWW;Browser;Web;Explorer;
Keywords[sc]=Internet;WWW;Navigadore;Web;Explorer;
Keywords[sco]=Internet;WWW;Browser;Web;Explorer;
Keywords[si]=අන්තර්ජාලය;අතිරික්සුව;පිරික්සන්න;ගවේශකය;Internet;WWW;Browser;Web;Explorer;
Keywords[sk]=Internet;WWW;Prehliadač;Web;Prieskumník;
Keywords[skr]=Internet;WWW;Browser;Web;Explorer;
Keywords[sl]=internet;www;brskalnik;splet;
Keywords[son]=Internet;WWW;Browser;Web;Explorer;
Keywords[sq]=Internet;WWW;Shfletues;Web;Eksplorues;
Keywords[sr]=Internet;WWW;Browser;Web;Explorer;интернет;њњњ;веб;мрежа;прегледач;експлорер;internet;pregledač;veb;mreža;pregledač;eksplorer;
Keywords[sv_SE]=Internet;WWW;Webbläsare;Webb;Utforskare;
Keywords[szl]=Internet;WWW;Browser;Web;Explorer;
Keywords[ta]=Internet;WWW;Browser;Web;Explorer;
Keywords[te]=Internet;WWW;Browser;Web;Explorer;
Keywords[tg]=Интернет;WWW;Браузер;Сомона;Ҷустуҷӯгар;
Keywords[th]=อินเทอร์เน็ต;เบราว์เซอร์;เว็บ;Internet;WWW;Browser;Web;Explorer;
Keywords[tl]=Internet;WWW;Browser;Web;Explorer;
Keywords[tr]=Internet;WWW;Browser;Web;Explorer;İnternet;Tarayıcı;
Keywords[trs]=Internet;WWW;Browser;Web;Explorer;
Keywords[uk]=Інтернет;WWW;Браузер;Веб;Переглядач;
Keywords[ur]=Internet;WWW;Browser;Web;Explorer;
Keywords[uz]=Internet;WWW;Browser;Web;Explorer;
Keywords[vi]=Internet;WWW;Trình duyệt;Web;Duyệt web;
Keywords[wo]=Internet;WWW;Browser;Web;Explorer;
Keywords[xh]=Internet;WWW;Browser;Web;Explorer;
Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;
Keywords[zh_TW]=網際網路;網路;瀏覽器;網頁;上網;Internet;WWW;Browser;Web;Explorer;
Actions=new-window;new-blank-window;new-private-window;profilemanager; Actions=new-window;new-blank-window;new-private-window;profilemanager;
X-AppImage-Version=$VERSION X-AppImage-Version=$VERSION
[Desktop Action new-window] [Desktop Action new-window]
Name=Open a New Window
Exec=zen %u Exec=zen %u
Name=New Window
Name[ach]=New Window
Name[af]=New Window
Name[an]=New Window
Name[ar]=نافذة جديدة
Name[ast]=New Window
Name[az]=New Window
Name[be]=Новае акно
Name[bg]=Нов прозорец
Name[bn]=নতুন উইন্ডো
Name[bqi]=نیمدری نۊ
Name[br]=Prenestr nevez
Name[brx]=New Window
Name[bs]=Novi prozor
Name[ca]=Finestra nova
Name[ca_valencia]=New Window
Name[cak]=K'ak'a' Tzuwäch
Name[ckb]=New Window
Name[cs]=Nové okno
Name[cy]=Ffenestr Newydd
Name[da]=Nyt vindue
Name[de]=Neues Fenster
Name[dsb]=Nowe wokno
Name[el]=Νέο παράθυρο
Name[en_CA]=New Window
Name[en_GB]=New Window
Name[eo]=Nova fenestro
Name[es_AR]=Nueva ventana
Name[es_CL]=Nueva ventana
Name[es_ES]=Nueva ventana
Name[es_MX]=Nueva ventana
Name[et]=New Window
Name[eu]=Leiho berria
Name[fa]=پنجره جدید‌
Name[ff]=New Window
Name[fi]=Uusi ikkuna
Name[fr]=Nouvelle fenêtre
Name[fur]=Gnûf barcon
Name[fy_NL]=Nij finster
Name[ga_IE]=New Window
Name[gd]=Uinneag ùr
Name[gl]=Nova xanela
Name[gn]=Ovetã pyahu
Name[gu_IN]=New Window
Name[he]=חלון חדש
Name[hi_IN]=New Window
Name[hr]=Novi prozor
Name[hsb]=Nowe wokno
Name[hu]=Új ablak
Name[hy_AM]=Նոր պատուհան
Name[hye]=New Window
Name[ia]=Nove fenestra
Name[id]=Jendela Baru
Name[is]=Nýr gluggi
Name[it]=Nuova finestra
Name[ja]=新しいウィンドウ
Name[ka]=ახალი ფანჯარა
Name[kab]=Asfaylu amaynut
Name[kk]=Жаңа терезе
Name[km]=បង្អួច​​​ថ្មី
Name[kn]=New Window
Name[ko]=새 창
Name[lij]=Neuvo Barcon
Name[lo]=ວິນໂດໃໝ່
Name[lt]=New Window
Name[ltg]=New Window
Name[lv]=Jauns logs
Name[meh]=New Window
Name[mk]=New Window
Name[ml]=പുതിയ ജാലകം
Name[mr]=New Window
Name[ms]=New Window
Name[my]=New Window
Name[nb_NO]=Nytt vindu
Name[ne_NP]=नयाँ सञ्झ्याल
Name[nl]=Nieuw venster
Name[nn_NO]=Nytt vindauge
Name[oc]=Fenèstra novèla
Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ
Name[pl]=Nowe okno
Name[pt_BR]=Nova janela
Name[pt_PT]=Nova janela
Name[rm]=Nova fanestra
Name[ro]=Fereastră nouă
Name[ru]=Новое окно
Name[sat]=ᱱᱟᱶᱟ ᱣᱤᱱᱰᱳ
Name[sc]=Ventana noa
Name[sco]=New Window
Name[si]=නව කවුළුව
Name[sk]=Nové okno
Name[skr]=نویں ونڈو
Name[sl]=Novo okno
Name[son]=New Window
Name[sq]=Dritare e Re
Name[sr]=Нови прозор
Name[sv_SE]=Nytt fönster
Name[szl]=New Window
Name[ta]=New Window
Name[te]=కొత్త కిటికీ
Name[tg]=Равзанаи нав
Name[th]=หน้าต่างใหม่
Name[tl]=New Window
Name[tr]=Yeni pencere
Name[trs]=Bēntanâ nākàa
Name[uk]=Нове вікно
Name[ur]=New Window
Name[uz]=New Window
Name[vi]=Cửa sổ mới
Name[wo]=New Window
Name[xh]=New Window
Name[zh_CN]=新建窗口
Name[zh_TW]=開新視窗
[Desktop Action new-blank-window] [Desktop Action new-blank-window]
Name=Open a New Blank Window
Exec=zen --blank-window %u Exec=zen --blank-window %u
Name=New Blank Window
Name[ach]=New Blank Window
Name[af]=New Blank Window
Name[an]=New Blank Window
Name[ar]=نافذة فارغة جديدة
Name[ast]=New Blank Window
Name[az]=New Blank Window
Name[be]=Новае пустое акно
Name[bg]=Нов празен прозорец
Name[bn]=নতুন ফাঁকা উইন্ডো
Name[bqi]=نیمدری نۊ خالی
Name[br]=Prenestr goulloù nevez
Name[brx]=New Blank Window
Name[bs]=Novi prazni prozor
Name[ca]=Finestra en blanc nova
Name[ca_valencia]=New Blank Window
Name[cak]=K'ak'a' Tzuwäch K'axk'ol
Name[ckb]=New Blank Window
Name[cs]=Nové prázdné okno
Name[cy]=Ffenestr Wag Newydd
Name[da]=Nyt tomt vindue
Name[de]=Neues leeres Fenster
Name[dsb]=Nowe prázdne wokno
Name[el]=Νέο κενό παράθυρο
Name[en_CA]=New Blank Window
Name[en_GB]=New Blank Window
Name[eo]=Nova malplena fenestro
Name[es_AR]=Nueva ventana en blanco
Name[es_CL]=Nueva ventana en blanco
Name[es_ES]=Nueva ventana en blanco
Name[es_MX]=Nueva ventana en blanco
Name[et]=New Blank Window
Name[eu]=Leiho huts berri
Name[fa]=پنجره خالی جدید
Name[ff]=New Blank Window
Name[fi]=Uusi tyhjä ikkuna
Name[fr]=Nouvelle fenêtre vierge
Name[fur]=Gnûf barcon vuot
Name[fy_NL]=Nij leeg finster
Name[ga_IE]=New Blank Window
Name[gd]=Uinneag bhàn ùr
Name[gl]=Nova xanela en branco
Name[gn]=Ovetã ñemi pyahu
Name[gu_IN]=New Blank Window
Name[he]=חלון ריק חדש
Name[hi_IN]=New Blank Window
Name[hr]=Novi prazni prozor
Name[hsb]=Nowe prázdne wokno
Name[hu]=Új üres ablak
Name[hy_AM]=Նոր դատարկ պատուհան
Name[hye]=New Blank Window
Name[ia]=Nove fenestra vacue
Name[id]=Jendela Kosong Baru
Name[is]=Nýr tómur gluggi
Name[it]=Nuova finestra vuota
Name[ja]=新しい空白のウィンドウ
Name[ka]=ახალი ცარიელი ფანჯარა
Name[kab]=Asfaylu amaynut n tunigin tusligt
Name[kk]=Жаңа бос терезе
Name[km]=បង្អួច​ថ្មី​ឯកជន
Name[kn]=New Blank Window
Name[ko]=새 빈 창
Name[lij]=Neuvo Barcon Vuot
Name[lo]=ວິນໂດແອ່ງໃໝ່
Name[lt]=New Blank Window
Name[ltg]=New Blank Window
Name[lv]=Jauns tukšais logs
Name[meh]=New Blank Window
Name[mk]=New Blank Window
Name[ml]=പുതിയ ശൂന്യ ജാലകം
Name[mr]=New Blank Window
Name[ms]=New Blank Window
Name[my]=New Blank Window
Name[nb_NO]=Nytt tomt vindu
Name[ne_NP]=नयाँ खाली सञ्झ्याल
Name[nl]=Nieuw leeg venster
Name[nn_NO]=Nytt tomt vindauge
Name[oc]=Fenèstra en blanc novèla
Name[pa_IN]=ਨਵੀਂ ਖਾਲੀ ਵਿੰਡੋ
Name[pl]=Nowe puste okno
Name[pt_BR]=Nova janela em branco
Name[pt_PT]=Nova janela em branco
Name[rm]=Nova fanestra vacue
Name[ro]=Fereastră nouă și goală
Name[ru]=Новое пустое окно
Name[sat]=ᱱᱟᱶᱟ ᱣᱤᱱᱰᱳ ᱵᱽᱨᱟᱣᱡᱚᱨ
Name[sc]=Ventana en blanc noa
Name[sco]=New Blank Window
Name[si]=නව හිස් කවුළුව
Name[sk]=Nové prázdné okno
Name[skr]=نویں خالی ونڈو
Name[sl]=Novo prazno okno
Name[son]=New Blank Window
Name[sq]=Dritare e Re e Pafajshme
Name[sr]=Нови празни прозор
Name[sv_SE]=Nytt tomt fönster
Name[szl]=New Blank Window
Name[ta]=New Blank Window
Name[te]=కొత్త ఖాళీ కిటికీ
Name[tg]=Равзанаи холӣ нав
Name[th]=หน้าต่างว่างเปล่าใหม่
Name[tl]=New Blank Window
Name[tr]=Yeni boş pencere
Name[trs]=Bēntanâ huì nākàa
Name[uk]=Нове порожнє вікно
Name[ur]=New Blank Window
Name[uz]=New Blank Window
Name[vi]=Cửa sổ trống mới
Name[wo]=New Blank Window
Name[xh]=New Blank Window
Name[zh_CN]=新建空白窗口
Name[zh_TW]=開新空白視窗
[Desktop Action new-private-window] [Desktop Action new-private-window]
Name=Open a New Private Window
Exec=zen --private-window %u Exec=zen --private-window %u
Name=New Private Window
Name[ach]=New Private Window
Name[af]=New Private Window
Name[an]=New Private Window
Name[ar]=نافذة خاصة جديدة
Name[ast]=New Private Window
Name[az]=New Private Window
Name[be]=Новае прыватнае акно
Name[bg]=Нов личен прозорец
Name[bn]=নতুন ব্যক্তিগত উইন্ডো
Name[bqi]=نیمدری سیخومی نۊ
Name[br]=Prenestr prevez nevez
Name[brx]=New Private Window
Name[bs]=Novi privatni prozor
Name[ca]=Finestra privada nova
Name[ca_valencia]=New Private Window
Name[cak]=K'ak'a' Ichinan Tzuwäch
Name[ckb]=New Private Window
Name[cs]=Nové anonymní okno
Name[cy]=Ffenestr Breifat Newydd
Name[da]=Nyt privat vindue
Name[de]=Neues privates Fenster
Name[dsb]=Nowe priwatne wokno
Name[el]=Νέο ιδιωτικό παράθυρο
Name[en_CA]=New Private Window
Name[en_GB]=New Private Window
Name[eo]=Nova privata fenestro
Name[es_AR]=Nueva ventana privada
Name[es_CL]=Nueva ventana privada
Name[es_ES]=Nueva ventana privada
Name[es_MX]=Nueva ventana privada
Name[et]=New Private Window
Name[eu]=Leiho pribatu berria
Name[fa]=پنجره ناشناس جدید
Name[ff]=New Private Window
Name[fi]=Uusi yksityinen ikkuna
Name[fr]=Nouvelle fenêtre privée
Name[fur]=Gnûf barcon privât
Name[fy_NL]=Nij priveefinster
Name[ga_IE]=New Private Window
Name[gd]=Uinneag phrìobhaideach ùr
Name[gl]=Nova xanela privada
Name[gn]=Ovetã ñemi pyahu
Name[gu_IN]=New Private Window
Name[he]=חלון פרטי חדש
Name[hi_IN]=New Private Window
Name[hr]=Novi privatni prozor
Name[hsb]=Nowe priwatne wokno
Name[hu]=Új privát ablak
Name[hy_AM]=Նոր գաղտնի պատուհան
Name[hye]=New Private Window
Name[ia]=Nove fenestra private
Name[id]=Jendela Mode Pribadi Baru
Name[is]=Nýr huliðsgluggi
Name[it]=Nuova finestra anonima
Name[ja]=新しいプライベートウィンドウ
Name[ka]=ახალი პირადი ფანჯარა
Name[kab]=Asfaylu amaynut n tunigin tusligt
Name[kk]=Жаңа жекелік терезе
Name[km]=បង្អួច​ឯកជន​ថ្មី
Name[kn]=New Private Window
Name[ko]=새 사생활 보호 창
Name[lij]=Neuvo Barcon Privòu
Name[lo]=ວິນໂດສ່ວນຕົວໃໝ່
Name[lt]=New Private Window
Name[ltg]=New Private Window
Name[lv]=Jauns privātais logs
Name[meh]=New Private Window
Name[mk]=New Private Window
Name[ml]=പുതിയ സ്വകാര്യ ജാലകം
Name[mr]=New Private Window
Name[ms]=New Private Window
Name[my]=New Private Window
Name[nb_NO]=Nytt privat vindu
Name[ne_NP]=नयाँ निजी सञ्झ्याल
Name[nl]=Nieuw privévenster
Name[nn_NO]=Nytt privat vindauge
Name[oc]=Fenèstra privada novèla
Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
Name[pl]=Nowe okno prywatne
Name[pt_BR]=Nova janela privativa
Name[pt_PT]=Nova janela privada
Name[rm]=Nova fanestra privata
Name[ro]=Fereastră privată nouă
Name[ru]=Новое приватное окно
Name[sat]=ᱱᱟᱶᱟ ᱱᱤᱡᱮᱨᱟᱜ ᱣᱤᱱᱰᱳ
Name[sc]=Ventana privada noa
Name[sco]=New Private Window
Name[si]=නව පෞද්. කවුළුව
Name[sk]=Nové súkromné okno
Name[skr]=نویں نجی ونڈو
Name[sl]=Novo zasebno okno
Name[son]=New Private Window
Name[sq]=Dritare e Re Private
Name[sr]=Нови приватни прозор
Name[sv_SE]=Nytt privat fönster
Name[szl]=New Private Window
Name[ta]=New Private Window
Name[te]=కొత్త ఆంతరంగిక కిటికీ
Name[tg]=Равзанаи хусусии нав
Name[th]=หน้าต่างส่วนตัวใหม่
Name[tl]=New Private Window
Name[tr]=Yeni gizli pencere
Name[trs]=Bēntanâ huì nākàa
Name[uk]=Приватне вікно
Name[ur]=New Private Window
Name[uz]=New Private Window
Name[vi]=Cửa sổ riêng tư mới
Name[wo]=New Private Window
Name[xh]=New Private Window
Name[zh_CN]=新建隐私窗口
Name[zh_TW]=開新隱私視窗
[Desktop Action profilemanager] [Desktop Action profilemanager]
Name=Open the Profile Manager
Exec=zen --ProfileManager %u Exec=zen --ProfileManager %u
Name=Open Profile Manager
Name[ach]=Open Profile Manager
Name[af]=Open Profile Manager
Name[an]=Open Profile Manager
Name[ar]=افتح مدير الملف الشخصي
Name[ast]=Open Profile Manager
Name[az]=Open Profile Manager
Name[be]=Адкрыць менеджар профіляў
Name[bg]=Отваряне на мениджъра на профили
Name[bn]=Open Profile Manager
Name[bqi]=گۊشیڌن دؽوۉداری پوروفایل
Name[br]=Digeriñ an ardoer aeladoù
Name[brx]=Open Profile Manager
Name[bs]=Otvori Menadžera profila
Name[ca]=Obre el gestor de perfils
Name[ca_valencia]=Open Profile Manager
Name[cak]=Open Profile Manager
Name[ckb]=Open Profile Manager
Name[cs]=Otevřít Správce profilů
Name[cy]=Agorwch y Rheolwr Proffil
Name[da]=Åbn profilhåndtering
Name[de]=Profilverwaltung öffnen
Name[dsb]=Profilowy zastojnik wócyniś
Name[el]=Άνοιγμα Διαχείρισης προφίλ
Name[en_CA]=Open Profile Manager
Name[en_GB]=Open Profile Manager
Name[eo]=Malfermi administranton de profiloj
Name[es_AR]=Abrir administrador de perfiles
Name[es_CL]=Abrir administrador de perfiles
Name[es_ES]=Abrir administrador de perfiles
Name[es_MX]=Abrir administrador de perfiles
Name[et]=Open Profile Manager
Name[eu]=Ireki profilen kudeatzailea
Name[fa]=گشودن مدیر نمایه
Name[ff]=Open Profile Manager
Name[fi]=Avaa profiilien hallinta
Name[fr]=Ouvrir le gestionnaire de profils
Name[fur]=Vierç gjestôr profîi
Name[fy_NL]=Profylbehearder iepenje
Name[ga_IE]=Open Profile Manager
Name[gd]=Fosgail manaidsear nam pròifilean
Name[gl]=Abrir o xestor de perfís
Name[gn]=Embojuruja mbaete ñangarekoha
Name[gu_IN]=Open Profile Manager
Name[he]=פתיחת מנהל הפרופילים
Name[hi_IN]=Open Profile Manager
Name[hr]=Otvori upravljač profila
Name[hsb]=Zrjadowak profilow wočinić
Name[hu]=Profilkezelő megnyitása
Name[hy_AM]=Բացեք պրոֆիլի կառավարիչը
Name[hye]=Open Profile Manager
Name[ia]=Aperir le gestor de profilo
Name[id]=Buka Pengelola Profil
Name[is]=Opna umsýslu notandasniða
Name[it]=Apri gestore profili
Name[ja]=プロファイルマネージャーを開く
Name[ka]=პროფილის მმართველის გახსნა
Name[kab]=Ldi amsefrak n umaɣnu
Name[kk]=Профильдер бақарушысын ашу
Name[km]=Open Profile Manager
Name[kn]=Open Profile Manager
Name[ko]=프로필 관리자 열기
Name[lij]=Open Profile Manager
Name[lo]=ເປີດຕົວຈັດການໂປຣໄຟລ໌
Name[lt]=Open Profile Manager
Name[ltg]=Open Profile Manager
Name[lv]=Atvērt profilu pārvaldnieku
Name[meh]=Open Profile Manager
Name[mk]=Open Profile Manager
Name[ml]=രൂപരേഖ മാനേചർ
Name[mr]=Open Profile Manager
Name[ms]=Open Profile Manager
Name[my]=Open Profile Manager
Name[nb_NO]=Åpne profilbehandler
Name[ne_NP]=Open Profile Manager
Name[nl]=Profielbeheerder openen
Name[nn_NO]=Opne profilhandsaming
Name[oc]=Dobrir lo gestionari de perfils
Name[pa_IN]=ਪਰੋਫ਼ਾਈਲ ਮੈਨੇਜਰ ਖੋਲ੍ਹੋ
Name[pl]=Menedżer profili
Name[pt_BR]=Abrir gerenciador de perfis
Name[pt_PT]=Abrir o Gestor de Perfis
Name[rm]=Avrir l'administraziun da profils
Name[ro]=Deschide managerul de profiluri
Name[ru]=Открыть менеджер профилей
Name[sat]=ᱢᱮᱫᱦᱟᱸ ᱢᱮᱱᱮᱡᱚᱨ ᱠᱷᱩᱞᱟᱹᱭ ᱢᱮ
Name[sc]=Aberi su gestore de profilos
Name[sco]=Open Profile Manager
Name[si]=පැතිකඩ කළමනාකරු අරින්න
Name[sk]=Otvoriť Správcu profilov
Name[skr]=پروفائل منیجر کھولو
Name[sl]=Odpri upravitelja profilov
Name[son]=Open Profile Manager
Name[sq]=Hapni Përgjegjës Profilesh
Name[sr]=Отворите управљач профила
Name[sv_SE]=Öppna Profilhanteraren
Name[szl]=Open Profile Manager
Name[ta]=Open Profile Manager
Name[te]=Open Profile Manager
Name[tg]=Кушодани мудири профилҳо
Name[th]=เปิดตัวจัดการโปรไฟล์
Name[tl]=Open Profile Manager
Name[tr]=Profil yöneticisini aç
Name[trs]=Sa nīkāj ñuūnj nej perfî huā nìnï̀nj ïn
Name[uk]=Відкрити менеджер профілів
Name[ur]=Open Profile Manager
Name[uz]=Open Profile Manager
Name[vi]=Mở trình quản lý hồ sơ
Name[wo]=Open Profile Manager
Name[xh]=Open Profile Manager
Name[zh_CN]=打开配置文件管理器
Name[zh_TW]=開啟設定檔管理員

View File

@@ -1 +1 @@
fb55808f9cdd2172649e551705008af4f98038fe 10b4efc5a79c2ab80de3b22771b1d36b9b225920

View File

@@ -7,6 +7,10 @@ unset MOZ_STDCXX_COMPAT
ac_add_options --disable-dmd ac_add_options --disable-dmd
ac_add_options --enable-eme=widevine ac_add_options --enable-eme=widevine
if test "$ZEN_RELEASE"; then
ac_add_options --with-macos-sdk=/Library/Developer/CommandLineTools/SDKs/MacOSX26.4.sdk
fi
if test "$ZEN_RELEASE"; then if test "$ZEN_RELEASE"; then
if ! test "$ZEN_GA_DISABLE_PGO"; then if ! test "$ZEN_GA_DISABLE_PGO"; then
if test "$ZEN_GA_GENERATE_PROFILE"; then if test "$ZEN_GA_GENERATE_PROFILE"; then

View File

@@ -20,3 +20,5 @@ files:
translation: browser/browser/preferences/zen-preferences.ftl translation: browser/browser/preferences/zen-preferences.ftl
- source: en-US/browser/browser/zen-folders.ftl - source: en-US/browser/browser/zen-folders.ftl
translation: browser/browser/zen-folders.ftl translation: browser/browser/zen-folders.ftl
- source: en-US/browser/browser/zen-boosts.ftl
translation: browser/browser/zen-boosts.ftl

View File

@@ -321,6 +321,7 @@ zen-workspace-shortcut-switch-9 = Switch to Workspace 9
zen-workspace-shortcut-switch-10 = Switch to Workspace 10 zen-workspace-shortcut-switch-10 = Switch to Workspace 10
zen-workspace-shortcut-forward = Forward Workspace zen-workspace-shortcut-forward = Forward Workspace
zen-workspace-shortcut-backward = Backward Workspace zen-workspace-shortcut-backward = Backward Workspace
zen-workspace-shortcut-create = Create New Workspace
zen-sidebar-shortcut-toggle = Toggle Sidebar's Width zen-sidebar-shortcut-toggle = Toggle Sidebar's Width
zen-pinned-tab-shortcut-reset = Reset Pinned Tab to Pinned URL zen-pinned-tab-shortcut-reset = Reset Pinned Tab to Pinned URL
zen-split-view-shortcut-grid = Toggle Split View Grid zen-split-view-shortcut-grid = Toggle Split View Grid

View File

@@ -0,0 +1,59 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
zen-boost-edit-rename =
.label = Rename Boost
zen-boost-edit-shuffle =
.label = Shuffle Vibes
zen-boost-edit-reset =
.label = Reset All Edits
zen-boost-edit-delete =
.label = Delete Boost
zen-boost-size = Size
zen-boost-case = Case
zen-boost-zap = Zap
zen-boost-code = Code
zen-boost-back = Back
zen-boost-shuffle =
.tooltiptext = Shuffle Boost Settings
zen-boost-invert =
.tooltiptext = Smart Invert Colors
zen-boost-controls =
.tooltiptext = Advanced Color Controls
zen-boost-disable =
.tooltiptext = Disable Color Adjustments
zen-boost-text-case-toggle =
.tooltiptext = Toggle Text Case
zen-boost-css-picker =
.tooltiptext = Pick Selector
zen-boost-css-inspector =
.tooltiptext = Open Inspector
zen-bootst-color-contrast = Contrast
zen-bootst-color-brightness = Brightness
zen-bootst-color-original-saturation = Original Saturation
zen-add-zap-helper = Click elements on the page to <b>Zap</b> them
zen-remove-zap-helper = ← Click to Unzap
zen-select-this = Insert selector for this
zen-select-related = Insert selector for related
zen-select-cancel = Cancel
zen-zap-this = Zap this
zen-zap-related = Zap all related elements
zen-zap-cancel = Cancel
zen-zap-done = Done
zen-unzap-tooltip =
{
$elementCount ->
[0] No elements zapped
[1] { $elementCount } element zapped
*[other] { $elementCount } elements zapped
}
zen-boost-save =
.label = Export Boost
zen-boost-load =
.label = Import Boost
zen-panel-ui-boosts-exported-message = Boost exported!
zen-site-data-boosts = Boosts
zen-site-data-create-boost =
.tooltiptext = Create new boost
zen-boost-rename-boost-prompt = Rename Boost?

8
package-lock.json generated
View File

@@ -1005,13 +1005,13 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/axios": { "node_modules/axios": {
"version": "1.15.0", "version": "1.16.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz", "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz",
"integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==", "integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"follow-redirects": "^1.15.11", "follow-redirects": "^1.16.0",
"form-data": "^4.0.5", "form-data": "^4.0.5",
"proxy-from-env": "^2.1.0" "proxy-from-env": "^2.1.0"
} }

View File

@@ -10,6 +10,7 @@
"build": "surfer build", "build": "surfer build",
"build:ui": "surfer build --ui", "build:ui": "surfer build --ui",
"start": "cd engine && python3 ./mach run --noprofile", "start": "cd engine && python3 ./mach run --noprofile",
"start:bloat": "XPCOM_MEM_BLOAT_LOG=1 npm start",
"import": "npm run ffprefs && npm run import:dumps && surfer import", "import": "npm run ffprefs && npm run import:dumps && surfer import",
"import:dumps": "python3 scripts/update_service_dumps.py", "import:dumps": "python3 scripts/update_service_dumps.py",
"export": "surfer export", "export": "surfer export",
@@ -27,6 +28,7 @@
"surfer": "surfer", "surfer": "surfer",
"test": "python3 scripts/run_tests.py", "test": "python3 scripts/run_tests.py",
"test:dbg": "python3 scripts/run_tests.py --jsdebugger --debug-on-failure", "test:dbg": "python3 scripts/run_tests.py --jsdebugger --debug-on-failure",
"test:gtest": "cd engine && ./mach gtest",
"ffprefs": "cd tools/ffprefs && cargo run --bin ffprefs -- ../../", "ffprefs": "cd tools/ffprefs && cargo run --bin ffprefs -- ../../",
"lc": "surfer license-check", "lc": "surfer license-check",
"lc:fix": "surfer license-check --fix", "lc:fix": "surfer license-check --fix",

View File

@@ -1,16 +0,0 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# Fullscreen API preferences
- name: full-screen-api.transition-duration.enter
value: "0 0"
- name: full-screen-api.transition-duration.leave
value: "0 0"
- name: full-screen-api.warning.delay
value: -1
- name: full-screen-api.warning.timeout
value: 0

22
prefs/zen/boosts.yaml Normal file
View File

@@ -0,0 +1,22 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
- name: zen.boosts.enabled
value: true
- name: zen.boosts.dissolve-on-zap
value: true
- name: zen.boosts.invert-channel-floor
value: 15
cpptype: uint32_t
mirror: once
type: static
- name: zen.boosts.disable-on-anonymous-content
value: true
cpptype: bool
mirror: once
type: static

View File

@@ -0,0 +1,6 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
- name: zen.live-folders.github.skip-new-pr-ui-check
value: false

View File

@@ -12,9 +12,6 @@
value: "@cond" value: "@cond"
condition: "defined(MOZILLA_OFFICIAL)" condition: "defined(MOZILLA_OFFICIAL)"
- name: zen.rice.share.notice.accepted
value: false
# === Mark: Site Injection === # === Mark: Site Injection ===
- name: zen.injections.match-urls - name: zen.injections.match-urls

View File

@@ -5,6 +5,9 @@
- name: zen.splitView.enable-tab-drop - name: zen.splitView.enable-tab-drop
value: true value: true
- name: zen.splitView.enable-tab-click-split
value: true
- name: zen.splitView.min-resize-width - name: zen.splitView.min-resize-width
value: 7 value: 7

View File

@@ -18,7 +18,7 @@
value: true value: true
- name: zen.theme.acrylic-elements - name: zen.theme.acrylic-elements
value: false value: "@IS_TWILIGHT@"
- name: zen.theme.disable-lightweight - name: zen.theme.disable-lightweight
value: true value: true

View File

@@ -59,7 +59,10 @@
value: true value: true
- name: zen.view.overflow-webext-toolbar - name: zen.view.overflow-webext-toolbar
value: "@IS_TWILIGHT@" value: true
- name: zen.view.overflow-webext-toolbar-threshold
value: 55
- name: zen.view.enable-loading-indicator - name: zen.view.enable-loading-indicator
value: true value: true

View File

@@ -17,6 +17,12 @@
- name: zen.workspaces.swipe-actions - name: zen.workspaces.swipe-actions
value: true value: true
- name: zen.workspaces.swipe-actions.delta-multiplier
value: 100
- name: zen.workspaces.switch-animation-duration
value: 200
- name: zen.workspaces.wrap-around-navigation - name: zen.workspaces.wrap-around-navigation
value: true value: true

View File

@@ -39,3 +39,6 @@
- name: zen.urlbar.suggestions.quick-actions - name: zen.urlbar.suggestions.quick-actions
value: true value: true
- name: browser.urlbar.shortcuts.workspaces
value: true

View File

@@ -1,8 +1,8 @@
diff --git a/.prettierignore b/.prettierignore diff --git a/.prettierignore b/.prettierignore
index 4c6d186c501f7e1b029db186d387f73d97dfed1e..81d0f7dc7f412151256c13ed93bd34d7bd872681 100644 index de2efe413e5696a3b8d0467a3a9e668dfadd8a1a..01c76d8e639d5630fca9cccb55d415fc4e903e91 100644
--- a/.prettierignore --- a/.prettierignore
+++ b/.prettierignore +++ b/.prettierignore
@@ -1806,3 +1806,12 @@ tools/ts/test/baselines/ @@ -1805,3 +1805,12 @@ tools/ts/test/baselines/
try_task_config.json try_task_config.json
xpcom/idl-parser/xpidl/fixtures/xpctest.d.json xpcom/idl-parser/xpidl/fixtures/xpctest.d.json
**/package-lock.json **/package-lock.json

View File

@@ -1,8 +1,8 @@
diff --git a/browser/actors/EncryptedMediaParent.sys.mjs b/browser/actors/EncryptedMediaParent.sys.mjs diff --git a/browser/actors/EncryptedMediaParent.sys.mjs b/browser/actors/EncryptedMediaParent.sys.mjs
index 9d3d3db9761cf5b2fde1f70992e82b1733241863..3dc64dc395d5237bf2c290cb8588cf467fb8729a 100644 index 492dce93d3cc7c6ec16db047c9e47b175ef3a0fe..757e5543e0e6900c414db6d7a96d511608c1e50a 100644
--- a/browser/actors/EncryptedMediaParent.sys.mjs --- a/browser/actors/EncryptedMediaParent.sys.mjs
+++ b/browser/actors/EncryptedMediaParent.sys.mjs +++ b/browser/actors/EncryptedMediaParent.sys.mjs
@@ -200,6 +200,7 @@ export class EncryptedMediaParent extends JSWindowActorParent { @@ -199,6 +199,7 @@ export class EncryptedMediaParent extends JSWindowActorParent {
"drmContentPlaying", "drmContentPlaying",
aBrowser aBrowser
) )

View File

@@ -1,5 +1,5 @@
diff --git a/browser/actors/WebRTCParent.sys.mjs b/browser/actors/WebRTCParent.sys.mjs diff --git a/browser/actors/WebRTCParent.sys.mjs b/browser/actors/WebRTCParent.sys.mjs
index e8b762b4c8f71ddafc090415abfe97674401dbc2..5dda5fe9c9bc02ebe7713f7bd21315fe4ba8b8cd 100644 index b743bd83529c4cd01a6bc820967186dbe41b6144..e24c48bac0f4ae3d4b26087b7e0cac7910019d0e 100644
--- a/browser/actors/WebRTCParent.sys.mjs --- a/browser/actors/WebRTCParent.sys.mjs
+++ b/browser/actors/WebRTCParent.sys.mjs +++ b/browser/actors/WebRTCParent.sys.mjs
@@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent { @@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/app/splash.rc b/browser/app/splash.rc diff --git a/browser/app/splash.rc b/browser/app/splash.rc
index 259a8068c3aa256b8c50487a04f1844292b90b2e..8b9c792e1484bb801246b06b6ce43fb6d6271ee8 100644 index 04c1d3e1db7d067d579512999a08de85a0aa212c..4e04eb5008ca1701c731c3109ba184ccf465b51b 100644
--- a/browser/app/splash.rc --- a/browser/app/splash.rc
+++ b/browser/app/splash.rc +++ b/browser/app/splash.rc
@@ -6,6 +6,9 @@ @@ -5,6 +5,9 @@
#include <windows.h> #include <windows.h>
#include "nsNativeAppSupportWin.h" #include "nsNativeAppSupportWin.h"

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-addons.js b/browser/base/content/browser-addons.js diff --git a/browser/base/content/browser-addons.js b/browser/base/content/browser-addons.js
index 098cf2408bc462f61fb547716754a3af832ffa1e..d062d03f7d258b66740d785cc30abe7932eaea41 100644 index 853d3c9dd9dd806d49a3c5a44304dd7370f0c90e..ea927b05213981fbfa5494d8d22bce05f45bce08 100644
--- a/browser/base/content/browser-addons.js --- a/browser/base/content/browser-addons.js
+++ b/browser/base/content/browser-addons.js +++ b/browser/base/content/browser-addons.js
@@ -1061,7 +1061,7 @@ var gXPInstallObserver = { @@ -1060,7 +1060,7 @@ var gXPInstallObserver = {
persistent: true, persistent: true,
hideClose: true, hideClose: true,
popupOptions: { popupOptions: {
@@ -11,7 +11,7 @@ index 098cf2408bc462f61fb547716754a3af832ffa1e..d062d03f7d258b66740d785cc30abe79
}, },
}; };
@@ -1283,7 +1283,7 @@ var gXPInstallObserver = { @@ -1282,7 +1282,7 @@ var gXPInstallObserver = {
hideClose: true, hideClose: true,
timeout: Date.now() + 30000, timeout: Date.now() + 30000,
popupOptions: { popupOptions: {
@@ -20,7 +20,7 @@ index 098cf2408bc462f61fb547716754a3af832ffa1e..d062d03f7d258b66740d785cc30abe79
}, },
}; };
@@ -2210,7 +2210,7 @@ var gUnifiedExtensions = { @@ -2209,7 +2209,7 @@ var gUnifiedExtensions = {
// If the new ID is not added in NOTIFICATION_IDS, consider handling the case // If the new ID is not added in NOTIFICATION_IDS, consider handling the case
// in the "PopupNotificationsBeforeAnchor" handler elsewhere in this file. // in the "PopupNotificationsBeforeAnchor" handler elsewhere in this file.
getPopupAnchorID(aBrowser, aWindow) { getPopupAnchorID(aBrowser, aWindow) {
@@ -29,7 +29,7 @@ index 098cf2408bc462f61fb547716754a3af832ffa1e..d062d03f7d258b66740d785cc30abe79
const attr = anchorID + "popupnotificationanchor"; const attr = anchorID + "popupnotificationanchor";
if (!aBrowser[attr]) { if (!aBrowser[attr]) {
@@ -2221,7 +2221,7 @@ var gUnifiedExtensions = { @@ -2220,7 +2220,7 @@ var gUnifiedExtensions = {
anchorID anchorID
// Anchor on the toolbar icon to position the popup right below the // Anchor on the toolbar icon to position the popup right below the
// button. // button.
@@ -38,7 +38,7 @@ index 098cf2408bc462f61fb547716754a3af832ffa1e..d062d03f7d258b66740d785cc30abe79
} }
return anchorID; return anchorID;
@@ -2546,7 +2546,7 @@ var gUnifiedExtensions = { @@ -2545,7 +2545,7 @@ var gUnifiedExtensions = {
requestAnimationFrame(() => this.updateAttention()); requestAnimationFrame(() => this.updateAttention());
}, },
@@ -47,7 +47,7 @@ index 098cf2408bc462f61fb547716754a3af832ffa1e..d062d03f7d258b66740d785cc30abe79
// A list of extension widget IDs (possibly empty). // A list of extension widget IDs (possibly empty).
let widgetIDs; let widgetIDs;
@@ -2560,7 +2560,7 @@ var gUnifiedExtensions = { @@ -2559,7 +2559,7 @@ var gUnifiedExtensions = {
} }
// The list of overflowed extensions in the extensions panel. // The list of overflowed extensions in the extensions panel.
@@ -56,7 +56,7 @@ index 098cf2408bc462f61fb547716754a3af832ffa1e..d062d03f7d258b66740d785cc30abe79
"#overflowed-extensions-list" "#overflowed-extensions-list"
); );
@@ -2661,37 +2661,41 @@ var gUnifiedExtensions = { @@ -2660,37 +2660,41 @@ var gUnifiedExtensions = {
); );
template.replaceWith(template.content); template.replaceWith(template.content);
this._panel = document.getElementById("unified-extensions-panel"); this._panel = document.getElementById("unified-extensions-panel");
@@ -123,7 +123,7 @@ index 098cf2408bc462f61fb547716754a3af832ffa1e..d062d03f7d258b66740d785cc30abe79
if (!CustomizationHandler.isCustomizing()) { if (!CustomizationHandler.isCustomizing()) {
if (aEvent) { if (aEvent) {
if ( if (
@@ -2713,6 +2717,7 @@ var gUnifiedExtensions = { @@ -2712,6 +2716,7 @@ var gUnifiedExtensions = {
// and no alternative content is available for display in the panel. // and no alternative content is available for display in the panel.
const policies = this.getActivePolicies(); const policies = this.getActivePolicies();
if ( if (
@@ -131,7 +131,7 @@ index 098cf2408bc462f61fb547716754a3af832ffa1e..d062d03f7d258b66740d785cc30abe79
policies.length && policies.length &&
!this.hasExtensionsInPanel(policies) && !this.hasExtensionsInPanel(policies) &&
!this.isPrivateWindowMissingExtensionsWithoutPBMAccess() && !this.isPrivateWindowMissingExtensionsWithoutPBMAccess() &&
@@ -2728,32 +2733,30 @@ var gUnifiedExtensions = { @@ -2727,32 +2732,30 @@ var gUnifiedExtensions = {
this.blocklistAttentionInfo = this.blocklistAttentionInfo =
await AddonManager.getBlocklistAttentionInfo(); await AddonManager.getBlocklistAttentionInfo();
@@ -170,7 +170,7 @@ index 098cf2408bc462f61fb547716754a3af832ffa1e..d062d03f7d258b66740d785cc30abe79
triggerEvent: aEvent, triggerEvent: aEvent,
}); });
} }
@@ -2948,18 +2951,20 @@ var gUnifiedExtensions = { @@ -2947,18 +2950,20 @@ var gUnifiedExtensions = {
this._maybeMoveWidgetNodeBack(widgetId); this._maybeMoveWidgetNodeBack(widgetId);
} }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-commands.js b/browser/base/content/browser-commands.js diff --git a/browser/base/content/browser-commands.js b/browser/base/content/browser-commands.js
index e7f88f69fcc22efca4c7fc0363b9fe2729e1be6f..d7c4063d38576a34545b9af06c37937dc9090628 100644 index 2d9f5591c9ffdd5948298555c461850521c0b45f..c46072ca4e96b419987f7e782e26b3de71d7c8e3 100644
--- a/browser/base/content/browser-commands.js --- a/browser/base/content/browser-commands.js
+++ b/browser/base/content/browser-commands.js +++ b/browser/base/content/browser-commands.js
@@ -14,6 +14,10 @@ var BrowserCommands = { @@ -13,6 +13,10 @@ var BrowserCommands = {
const where = BrowserUtils.whereToOpenLink(aEvent, false, true); const where = BrowserUtils.whereToOpenLink(aEvent, false, true);
if (where == "current") { if (where == "current") {
@@ -13,7 +13,7 @@ index e7f88f69fcc22efca4c7fc0363b9fe2729e1be6f..d7c4063d38576a34545b9af06c37937d
try { try {
gBrowser.goBack(); gBrowser.goBack();
} catch (ex) {} } catch (ex) {}
@@ -229,6 +233,10 @@ var BrowserCommands = { @@ -234,6 +238,10 @@ var BrowserCommands = {
} }
} }
@@ -24,7 +24,7 @@ index e7f88f69fcc22efca4c7fc0363b9fe2729e1be6f..d7c4063d38576a34545b9af06c37937d
// A notification intended to be useful for modular peformance tracking // A notification intended to be useful for modular peformance tracking
// starting as close as is reasonably possible to the time when the user // starting as close as is reasonably possible to the time when the user
// expressed the intent to open a new tab. Since there are a lot of // expressed the intent to open a new tab. Since there are a lot of
@@ -313,6 +321,14 @@ var BrowserCommands = { @@ -318,6 +326,14 @@ var BrowserCommands = {
return; return;
} }
@@ -39,7 +39,7 @@ index e7f88f69fcc22efca4c7fc0363b9fe2729e1be6f..d7c4063d38576a34545b9af06c37937d
// Keyboard shortcuts that would close a tab that is pinned select the first // Keyboard shortcuts that would close a tab that is pinned select the first
// unpinned tab instead. // unpinned tab instead.
if ( if (
@@ -320,8 +336,8 @@ var BrowserCommands = { @@ -325,8 +341,8 @@ var BrowserCommands = {
(event.ctrlKey || event.metaKey || event.altKey) && (event.ctrlKey || event.metaKey || event.altKey) &&
gBrowser.selectedTab.pinned gBrowser.selectedTab.pinned
) { ) {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-fullScreenAndPointerLock.js b/browser/base/content/browser-fullScreenAndPointerLock.js diff --git a/browser/base/content/browser-fullScreenAndPointerLock.js b/browser/base/content/browser-fullScreenAndPointerLock.js
index cd46701e9f4b672f392533c9ecc1c8570c3b2c5a..beb992702ea90e0b81f7bda4a6c0522932e84dfe 100644 index 1eaf79a4f6788c518a4759bbce81175fd5fba220..6fde5e944ad4a847180ca83a9e6f4fde20aa7b42 100644
--- a/browser/base/content/browser-fullScreenAndPointerLock.js --- a/browser/base/content/browser-fullScreenAndPointerLock.js
+++ b/browser/base/content/browser-fullScreenAndPointerLock.js +++ b/browser/base/content/browser-fullScreenAndPointerLock.js
@@ -464,8 +464,6 @@ var FullScreen = { @@ -501,8 +501,6 @@ var FullScreen = {
// don't need that kind of precision in our CSS. // don't need that kind of precision in our CSS.
shiftSize = shiftSize.toFixed(2); shiftSize = shiftSize.toFixed(2);
let translate = shiftSize > 0 ? `0 ${shiftSize}px` : ""; let translate = shiftSize > 0 ? `0 ${shiftSize}px` : "";

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
index b64d2f52ed1eb3d0b8aa86700bc082d3fc95152b..dd8636148d0646f6949d6279d70e20c09d8c7c17 100644 index d09cf65931eda253b2a71131f42883ccf6eb5724..f617863dac8e07def02d1d4ef7e5ade1caf50df1 100644
--- a/browser/base/content/browser-init.js --- a/browser/base/content/browser-init.js
+++ b/browser/base/content/browser-init.js +++ b/browser/base/content/browser-init.js
@@ -252,6 +252,7 @@ var gBrowserInit = { @@ -302,6 +302,7 @@ var gBrowserInit = {
}, },
onLoad() { onLoad() {
@@ -10,7 +10,7 @@ index b64d2f52ed1eb3d0b8aa86700bc082d3fc95152b..dd8636148d0646f6949d6279d70e20c0
gBrowser.addEventListener("DOMUpdateBlockedPopups", e => gBrowser.addEventListener("DOMUpdateBlockedPopups", e =>
PopupAndRedirectBlockerObserver.handleEvent(e) PopupAndRedirectBlockerObserver.handleEvent(e)
); );
@@ -446,6 +447,7 @@ var gBrowserInit = { @@ -496,6 +497,7 @@ var gBrowserInit = {
this._handleURIToLoad(); this._handleURIToLoad();

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 942bb5688e98f66ad71560fb32e1ca26a8081edf..25ba741c35c49afbf4e6053df3a0a7296d3040d8 100644 index d1ab42d59f05513ec60a7578b7acab44875c544c..8c3cd75704991b8572d3f13a936fddd2616b2946 100644
--- a/browser/base/content/browser.js --- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js +++ b/browser/base/content/browser.js
@@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, { @@ -34,6 +34,7 @@ ChromeUtils.defineESModuleGetters(this, {
"resource://gre/modules/ContextualIdentityService.sys.mjs", "resource://gre/modules/ContextualIdentityService.sys.mjs",
CustomizableUI: CustomizableUI:
"moz-src:///browser/components/customizableui/CustomizableUI.sys.mjs", "moz-src:///browser/components/customizableui/CustomizableUI.sys.mjs",
@@ -24,7 +24,7 @@ index 942bb5688e98f66ad71560fb32e1ca26a8081edf..25ba741c35c49afbf4e6053df3a0a729
if (backDisabled) { if (backDisabled) {
backCommand.removeAttribute("disabled"); backCommand.removeAttribute("disabled");
} else { } else {
@@ -3830,7 +3836,7 @@ function warnAboutClosingWindow() { @@ -3715,7 +3721,7 @@ function warnAboutClosingWindow() {
if (!isPBWindow && !toolbar.visible) { if (!isPBWindow && !toolbar.visible) {
return gBrowser.warnAboutClosingTabs( return gBrowser.warnAboutClosingTabs(
@@ -33,7 +33,7 @@ index 942bb5688e98f66ad71560fb32e1ca26a8081edf..25ba741c35c49afbf4e6053df3a0a729
gBrowser.closingTabsEnum.ALL gBrowser.closingTabsEnum.ALL
); );
} }
@@ -3870,7 +3876,7 @@ function warnAboutClosingWindow() { @@ -3755,7 +3761,7 @@ function warnAboutClosingWindow() {
return ( return (
isPBWindow || isPBWindow ||
gBrowser.warnAboutClosingTabs( gBrowser.warnAboutClosingTabs(
@@ -42,7 +42,7 @@ index 942bb5688e98f66ad71560fb32e1ca26a8081edf..25ba741c35c49afbf4e6053df3a0a729
gBrowser.closingTabsEnum.ALL gBrowser.closingTabsEnum.ALL
) )
); );
@@ -3895,7 +3901,7 @@ function warnAboutClosingWindow() { @@ -3780,7 +3786,7 @@ function warnAboutClosingWindow() {
AppConstants.platform != "macosx" || AppConstants.platform != "macosx" ||
isPBWindow || isPBWindow ||
gBrowser.warnAboutClosingTabs( gBrowser.warnAboutClosingTabs(
@@ -51,7 +51,7 @@ index 942bb5688e98f66ad71560fb32e1ca26a8081edf..25ba741c35c49afbf4e6053df3a0a729
gBrowser.closingTabsEnum.ALL gBrowser.closingTabsEnum.ALL
) )
); );
@@ -4835,6 +4841,9 @@ var ConfirmationHint = { @@ -4720,6 +4726,9 @@ var ConfirmationHint = {
} }
document.l10n.setAttributes(this._message, messageId, options.l10nArgs); document.l10n.setAttributes(this._message, messageId, options.l10nArgs);

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser-places.js b/browser/base/content/browser-places.js diff --git a/browser/base/content/browser-places.js b/browser/base/content/browser-places.js
index 543630b89bc4f1d40eda7e4e7ae68a3c9f45e1e7..fac68af45985ad2feeb1daebd470d028b49d1dde 100644 index e3feaebc551bfe7127b9701a7f76996022516af0..460b39f2a9f1f36d4b821c693951214098b644f7 100644
--- a/browser/base/content/browser-places.js --- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js +++ b/browser/base/content/browser-places.js
@@ -261,6 +261,8 @@ var StarUI = { @@ -261,6 +261,8 @@ var StarUI = {
@@ -33,7 +33,7 @@ index 543630b89bc4f1d40eda7e4e7ae68a3c9f45e1e7..fac68af45985ad2feeb1daebd470d028
removeBookmarkButtonCommand: function SU_removeBookmarkButtonCommand() { removeBookmarkButtonCommand: function SU_removeBookmarkButtonCommand() {
this._removeBookmarksOnPopupHidden = true; this._removeBookmarksOnPopupHidden = true;
this.panel.hidePopup(); this.panel.hidePopup();
@@ -1811,6 +1828,7 @@ var BookmarkingUI = { @@ -1815,6 +1832,7 @@ var BookmarkingUI = {
document.getElementById("context-bookmarkpage"), document.getElementById("context-bookmarkpage"),
PanelMultiView.getViewNode(document, "panelMenuBookmarkThisPage"), PanelMultiView.getViewNode(document, "panelMenuBookmarkThisPage"),
document.getElementById("pageAction-panel-bookmark"), document.getElementById("pageAction-panel-bookmark"),

View File

@@ -0,0 +1,9 @@
diff --git a/browser/base/content/browser-sets.inc.xhtml b/browser/base/content/browser-sets.inc.xhtml
index 1263856344c4613ea58639a64e747fd0c3f771f7..c83ed7dd6a2482354c5bd37ce2e2cbf88ee6cf60 100644
--- a/browser/base/content/browser-sets.inc.xhtml
+++ b/browser/base/content/browser-sets.inc.xhtml
@@ -418,3 +418,4 @@
internal="true"/>
#endif
</keyset>
+#include zen-keysets.inc.xhtml

View File

@@ -1,9 +0,0 @@
diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc
index 8871fc984acccfd9c54c7aef9f91934d81ba00c0..923ab3bda423eae77518f437221c32ca4990f5ce 100644
--- a/browser/base/content/browser-sets.inc
+++ b/browser/base/content/browser-sets.inc
@@ -415,3 +415,4 @@
internal="true"/>
#endif
</keyset>
+#include zen-keysets.inc.xhtml

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-sets.js b/browser/base/content/browser-sets.js diff --git a/browser/base/content/browser-sets.js b/browser/base/content/browser-sets.js
index d9ab2ad00b862d56ea7aa8e2469d050d8df7f5dc..2efb25ff9cfd3a224724fffadfa0aee693ddf47d 100644 index 8b153dfac9421f0cce716ed399f33ec9b25eb311..5e461b0fc89455d38869ac70a7ce6a3b20ffd26b 100644
--- a/browser/base/content/browser-sets.js --- a/browser/base/content/browser-sets.js
+++ b/browser/base/content/browser-sets.js +++ b/browser/base/content/browser-sets.js
@@ -272,7 +272,7 @@ document.addEventListener( @@ -285,7 +285,7 @@ document.addEventListener(
} }
}); });
@@ -11,7 +11,7 @@ index d9ab2ad00b862d56ea7aa8e2469d050d8df7f5dc..2efb25ff9cfd3a224724fffadfa0aee6
const SIDEBAR_REVAMP_PREF = "sidebar.revamp"; const SIDEBAR_REVAMP_PREF = "sidebar.revamp";
const SIDEBAR_REVAMP_ENABLED = Services.prefs.getBoolPref( const SIDEBAR_REVAMP_ENABLED = Services.prefs.getBoolPref(
SIDEBAR_REVAMP_PREF, SIDEBAR_REVAMP_PREF,
@@ -310,6 +310,8 @@ document.addEventListener( @@ -323,6 +323,8 @@ document.addEventListener(
panel: SidebarController.currentID, panel: SidebarController.currentID,
opened: SidebarController._state.launcherExpanded, opened: SidebarController._state.launcherExpanded,
}); });

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index b42287485c2baeabe831b0d54c6f09330b0caabd..e404c2e028e24eb4fa9b97f143ba476c1b1461fd 100644 index d8ed09dca6c8ae99ed1a84cef22462a0d7b517fe..dcb65c4268913fdf32302c9b4ac723131187922e 100644
--- a/browser/base/content/browser.xhtml --- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml +++ b/browser/base/content/browser.xhtml
@@ -19,6 +19,7 @@ @@ -18,6 +18,7 @@
sizemode="normal" sizemode="normal"
retargetdocumentfocus="urlbar-input" retargetdocumentfocus="urlbar-input"
scrolling="false" scrolling="false"
@@ -10,7 +10,7 @@ index b42287485c2baeabe831b0d54c6f09330b0caabd..e404c2e028e24eb4fa9b97f143ba476c
persist="screenX screenY width height sizemode" persist="screenX screenY width height sizemode"
data-l10n-sync="true"> data-l10n-sync="true">
<head> <head>
@@ -101,8 +102,10 @@ @@ -100,8 +101,10 @@
<title data-l10n-id="browser-main-window-default-title"></title> <title data-l10n-id="browser-main-window-default-title"></title>
@@ -21,7 +21,7 @@ index b42287485c2baeabe831b0d54c6f09330b0caabd..e404c2e028e24eb4fa9b97f143ba476c
</head> </head>
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
# All sets except for popupsets (commands, keys, and stringbundles) # All sets except for popupsets (commands, keys, and stringbundles)
@@ -135,9 +138,10 @@ @@ -134,9 +137,10 @@
</vbox> </vbox>
</html:template> </html:template>

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
index edeb473e46b3aa4b12eb4b59ce62e5ae48edd2a1..d2c6c8c150e732b77d65420520ca4905a9d3ea4d 100644 index b4abfb868fc7c13e789acb57b44e386de6d31bf0..ad917f5362ed4f3ba0149c214fb53d3f087bbfcf 100644
--- a/browser/base/content/navigator-toolbox.inc.xhtml --- a/browser/base/content/navigator-toolbox.inc.xhtml
+++ b/browser/base/content/navigator-toolbox.inc.xhtml +++ b/browser/base/content/navigator-toolbox.inc.xhtml
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
@@ -11,8 +11,8 @@ index edeb473e46b3aa4b12eb4b59ce62e5ae48edd2a1..d2c6c8c150e732b77d65420520ca4905
<script src="chrome://browser/content/navigator-toolbox.js" /> <script src="chrome://browser/content/navigator-toolbox.js" />
<!-- Menu --> <!-- Menu -->
@@ -18,9 +18,12 @@ @@ -18,9 +18,13 @@
#include browser-menubar.inc #include browser-menubar.inc.xhtml
</toolbaritem> </toolbaritem>
<spacer flex="1" skipintoolbarset="true" style="order: 1000;"/> <spacer flex="1" skipintoolbarset="true" style="order: 1000;"/>
-#include titlebar-items.inc.xhtml -#include titlebar-items.inc.xhtml
@@ -22,14 +22,14 @@ index edeb473e46b3aa4b12eb4b59ce62e5ae48edd2a1..d2c6c8c150e732b77d65420520ca4905
+ <html:div id="zen-toolbar-background" class="zen-toolbar-background zen-browser-generic-background"> + <html:div id="zen-toolbar-background" class="zen-toolbar-background zen-browser-generic-background">
+ <html:div class="zen-browser-grain" /> + <html:div class="zen-browser-grain" />
+ </html:div> + </html:div>
+ <box id="zen-overflow-extensions-list" skipintoolbarset="true" contextmenu="toolbar-context-menu" />
<toolbar id="TabsToolbar" <toolbar id="TabsToolbar"
class="browser-toolbar browser-titlebar" class="browser-toolbar browser-titlebar"
fullscreentoolbar="true" fullscreentoolbar="true"
@@ -62,6 +65,9 @@ @@ -62,6 +66,8 @@
<html:sidebar-pins-promo id="drag-to-pin-promo-card"></html:sidebar-pins-promo> <html:sidebar-pins-promo id="drag-to-pin-promo-card"></html:sidebar-pins-promo>
<arrowscrollbox id="pinned-tabs-container" orient="horizontal" clicktoscroll=""></arrowscrollbox> <arrowscrollbox id="pinned-tabs-container" orient="horizontal" clicktoscroll=""></arrowscrollbox>
<splitter orient="vertical" id="vertical-pinned-tabs-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/> <splitter orient="vertical" id="vertical-pinned-tabs-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
+<html:div id="zen-overflow-extensions-list" skipintoolbarset="true"></html:div>
+<html:div id="zen-essentials" skipintoolbarset="true"></html:div> +<html:div id="zen-essentials" skipintoolbarset="true"></html:div>
+<html:div id="zen-tabs-wrapper"> +<html:div id="zen-tabs-wrapper">
<hbox class="tab-drop-indicator" hidden="true"/> <hbox class="tab-drop-indicator" hidden="true"/>
@@ -43,7 +43,7 @@ index edeb473e46b3aa4b12eb4b59ce62e5ae48edd2a1..d2c6c8c150e732b77d65420520ca4905
</tabs> </tabs>
<toolbarbutton id="new-tab-button" <toolbarbutton id="new-tab-button"
@@ -114,9 +121,10 @@ @@ -115,9 +122,10 @@
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/> <toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/navigator-toolbox.js b/browser/base/content/navigator-toolbox.js diff --git a/browser/base/content/navigator-toolbox.js b/browser/base/content/navigator-toolbox.js
index 362a85c20d8f0633fa78f85578e4cf015fdd0e44..ef7d6ff9e0e9876bc1918e365fd0addcd177cecb 100644 index 1982ebadbd2df5ea309db487a4f30288f1af43e5..926c681d4733c84768a23407d60ca05859408b6d 100644
--- a/browser/base/content/navigator-toolbox.js --- a/browser/base/content/navigator-toolbox.js
+++ b/browser/base/content/navigator-toolbox.js +++ b/browser/base/content/navigator-toolbox.js
@@ -11,7 +11,7 @@ ChromeUtils.defineESModuleGetters(this, { @@ -10,7 +10,7 @@ ChromeUtils.defineESModuleGetters(this, {
document.addEventListener( document.addEventListener(
"DOMContentLoaded", "DOMContentLoaded",
() => { () => {
@@ -11,7 +11,7 @@ index 362a85c20d8f0633fa78f85578e4cf015fdd0e44..ef7d6ff9e0e9876bc1918e365fd0addc
const widgetOverflow = document.getElementById("widget-overflow"); const widgetOverflow = document.getElementById("widget-overflow");
function onPopupShowing(event) { function onPopupShowing(event) {
@@ -189,6 +189,7 @@ document.addEventListener( @@ -188,6 +188,7 @@ document.addEventListener(
#forward-button, #forward-button,
#reload-button , #reload-button ,
#reader-mode-button, #reader-mode-button,
@@ -19,7 +19,7 @@ index 362a85c20d8f0633fa78f85578e4cf015fdd0e44..ef7d6ff9e0e9876bc1918e365fd0addc
#picture-in-picture-button, #picture-in-picture-button,
#urlbar-zoom-button, #urlbar-zoom-button,
#star-button-box, #star-button-box,
@@ -215,6 +216,17 @@ document.addEventListener( @@ -214,6 +215,17 @@ document.addEventListener(
gBrowser.handleNewTabMiddleClick(element, event); gBrowser.handleNewTabMiddleClick(element, event);
break; break;
@@ -37,7 +37,7 @@ index 362a85c20d8f0633fa78f85578e4cf015fdd0e44..ef7d6ff9e0e9876bc1918e365fd0addc
case "back-button": case "back-button":
case "forward-button": case "forward-button":
case "reload-button": case "reload-button":
@@ -330,6 +342,7 @@ document.addEventListener( @@ -329,6 +341,7 @@ document.addEventListener(
#downloads-button, #downloads-button,
#fxa-toolbar-menu-button, #fxa-toolbar-menu-button,
#unified-extensions-button, #unified-extensions-button,
@@ -45,7 +45,7 @@ index 362a85c20d8f0633fa78f85578e4cf015fdd0e44..ef7d6ff9e0e9876bc1918e365fd0addc
#library-button, #library-button,
#split-view-button, #split-view-button,
#smartwindow-ask-button #smartwindow-ask-button
@@ -414,6 +427,16 @@ document.addEventListener( @@ -413,6 +426,16 @@ document.addEventListener(
gUnifiedExtensions.togglePanel(event); gUnifiedExtensions.togglePanel(event);
break; break;

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs
index 5ee0ee4246d1c267b75328666a7f7f54e6f93246..ae778b88e1d295cdae2d0433d943ac467081b126 100644 index 97cb36e2ed48d00454e169fb0470b47ac994b883..1811a92885620c8a916937f467ebb7d0eb0d3a0e 100644
--- a/browser/base/content/nsContextMenu.sys.mjs --- a/browser/base/content/nsContextMenu.sys.mjs
+++ b/browser/base/content/nsContextMenu.sys.mjs +++ b/browser/base/content/nsContextMenu.sys.mjs
@@ -370,6 +370,9 @@ export class nsContextMenu { @@ -369,6 +369,9 @@ export class nsContextMenu {
this.initTextFragmentItems(); this.initTextFragmentItems();
this.pdfjsContextMenu.initItems(); this.pdfjsContextMenu.initItems();

View File

@@ -18,4 +18,5 @@
#include ../../../zen/images/jar.inc.mn #include ../../../zen/images/jar.inc.mn
#include ../../../zen/vendor/jar.inc.mn #include ../../../zen/vendor/jar.inc.mn
#include ../../../zen/fonts/jar.inc.mn #include ../../../zen/fonts/jar.inc.mn
#include ../../../zen/boosts/jar.inc.mn
#include ../../../zen/live-folders/jar.inc.mn #include ../../../zen/live-folders/jar.inc.mn

View File

@@ -9,5 +9,6 @@
<link rel="localization" href="browser/zen-menubar.ftl"/> <link rel="localization" href="browser/zen-menubar.ftl"/>
<link rel="localization" href="browser/zen-vertical-tabs.ftl"/> <link rel="localization" href="browser/zen-vertical-tabs.ftl"/>
<link rel="localization" href="browser/zen-folders.ftl"/> <link rel="localization" href="browser/zen-folders.ftl"/>
<link rel="localization" href="browser/zen-boosts.ftl"/>
<link rel="localization" href="browser/zen-live-folders.ftl"/> <link rel="localization" href="browser/zen-live-folders.ftl"/>
</linkset> </linkset>

View File

@@ -75,6 +75,14 @@
data-l10n-id="unified-extensions-manage-extensions" data-l10n-id="unified-extensions-manage-extensions"
hidden="true" /> hidden="true" />
</vbox> </vbox>
<vbox class="zen-site-data-section">
<hbox class="zen-site-data-section-header">
<label data-l10n-id="zen-site-data-boosts" flex="1" />
</hbox>
<vbox id="zen-site-data-boost-list">
<!-- settings will be inserted here -->
</vbox>
</vbox>
<vbox class="zen-site-data-section"> <vbox class="zen-site-data-section">
<hbox class="zen-site-data-section-header"> <hbox class="zen-site-data-section-header">
<label data-l10n-id="zen-site-data-settings" flex="1" /> <label data-l10n-id="zen-site-data-settings" flex="1" />
@@ -87,6 +95,8 @@
<hbox id="zen-site-data-footer"> <hbox id="zen-site-data-footer">
<toolbarbutton id="zen-site-data-security-info" <toolbarbutton id="zen-site-data-security-info"
class="subviewbutton zen-interactive-button" /> class="subviewbutton zen-interactive-button" />
<toolbarbutton id="zen-site-data-boost" data-l10n-id="zen-site-data-create-boost"
class="subviewbutton zen-interactive-button" />
<toolbarbutton id="zen-site-data-actions" <toolbarbutton id="zen-site-data-actions"
class="subviewbutton zen-interactive-button" class="subviewbutton zen-interactive-button"
closemenu="none" closemenu="none"

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/moz.build b/browser/base/moz.build diff --git a/browser/base/moz.build b/browser/base/moz.build
index 086b462e706bb46727d0fed85b4c98debaeaf721..44a4fcb9b8181678667ee11b0443eed681dd2a43 100644 index 286e17552e2ab2d7e44c6ba99c84630cadd24e94..076f813aea971db1e1c1429fc0b64c1784a22722 100644
--- a/browser/base/moz.build --- a/browser/base/moz.build
+++ b/browser/base/moz.build +++ b/browser/base/moz.build
@@ -82,3 +82,5 @@ DEFINES["MOZ_APP_VERSION_DISPLAY"] = CONFIG["MOZ_APP_VERSION_DISPLAY"] @@ -78,3 +78,5 @@ DEFINES["MOZ_APP_VERSION_DISPLAY"] = CONFIG["MOZ_APP_VERSION_DISPLAY"]
DEFINES["APP_LICENSE_BLOCK"] = "%s/content/overrides/app-license.html" % SRCDIR DEFINES["APP_LICENSE_BLOCK"] = "%s/content/overrides/app-license.html" % SRCDIR
JAR_MANIFESTS += ["jar.mn"] JAR_MANIFESTS += ["jar.mn"]

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs
index 2152327b42c884456785ef065422e3ca6cc8c50b..932150495d23c0a63987abf14b3dc8a12eb42d6c 100644 index 430c6877c81824d8ab318cacc997d4eda4cb6a11..e8a195e1fe09952b90a0d73d13c6c15da2006bd4 100644
--- a/browser/components/BrowserContentHandler.sys.mjs --- a/browser/components/BrowserContentHandler.sys.mjs
+++ b/browser/components/BrowserContentHandler.sys.mjs +++ b/browser/components/BrowserContentHandler.sys.mjs
@@ -603,6 +603,28 @@ nsBrowserContentHandler.prototype = { @@ -603,6 +603,28 @@ nsBrowserContentHandler.prototype = {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs
index 75cdab491d35dc30be6c0a4ec6ab88e6fb4239aa..9c26fb1d6032bdecd6c552bd25694f45e3822d50 100644 index af635211046f9f1b2d473a14e8170837cd0d93cd..f07514a7e3ab55aa3321f0a7c0c092e91c2961ce 100644
--- a/browser/components/BrowserGlue.sys.mjs --- a/browser/components/BrowserGlue.sys.mjs
+++ b/browser/components/BrowserGlue.sys.mjs +++ b/browser/components/BrowserGlue.sys.mjs
@@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs"; @@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
@@ -10,7 +10,7 @@ index 75cdab491d35dc30be6c0a4ec6ab88e6fb4239aa..9c26fb1d6032bdecd6c552bd25694f45
AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs", AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs",
AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs", AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs",
ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs", ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs",
@@ -1457,7 +1458,7 @@ BrowserGlue.prototype = { @@ -1458,7 +1459,7 @@ BrowserGlue.prototype = {
windowcount++; windowcount++;
let tabbrowser = win.gBrowser; let tabbrowser = win.gBrowser;
if (tabbrowser) { if (tabbrowser) {
@@ -19,7 +19,7 @@ index 75cdab491d35dc30be6c0a4ec6ab88e6fb4239aa..9c26fb1d6032bdecd6c552bd25694f45
} }
} }
@@ -1622,6 +1623,8 @@ BrowserGlue.prototype = { @@ -1623,6 +1624,8 @@ BrowserGlue.prototype = {
} else if (profileDataVersion < APP_DATA_VERSION) { } else if (profileDataVersion < APP_DATA_VERSION) {
lazy.ProfileDataUpgrader.upgrade(profileDataVersion, APP_DATA_VERSION); lazy.ProfileDataUpgrader.upgrade(profileDataVersion, APP_DATA_VERSION);
} }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/aboutwelcome/content/aboutwelcome.css b/browser/components/aboutwelcome/content/aboutwelcome.css diff --git a/browser/components/aboutwelcome/content/aboutwelcome.css b/browser/components/aboutwelcome/content/aboutwelcome.css
index e5bbb4c217ae7b05a2da79b332d72cc5429f061f..ea44d83dd0825a3bc950f6005025498644c7fc67 100644 index 98497769b135efd3200607ee2cf50e82d06ed3fd..68e0778cfc4dc70935a3d48e79542b4133b293d2 100644
--- a/browser/components/aboutwelcome/content/aboutwelcome.css --- a/browser/components/aboutwelcome/content/aboutwelcome.css
+++ b/browser/components/aboutwelcome/content/aboutwelcome.css +++ b/browser/components/aboutwelcome/content/aboutwelcome.css
@@ -331,6 +331,11 @@ panel#feature-callout { @@ -330,6 +330,11 @@ panel#feature-callout {
--panel-shadow-margin: 6px; --panel-shadow-margin: 6px;
--panel-arrow-space: calc(var(--panel-shadow-margin) + var(--arrow-visible-height) - 1.5px); --panel-arrow-space: calc(var(--panel-shadow-margin) + var(--arrow-visible-height) - 1.5px);
--panel-margin-offset: calc(-1 * (var(--panel-shadow-margin) + var(--arrow-corner-distance) + (var(--arrow-width) / 2))); --panel-margin-offset: calc(-1 * (var(--panel-shadow-margin) + var(--arrow-corner-distance) + (var(--arrow-width) / 2)));
@@ -14,7 +14,7 @@ index e5bbb4c217ae7b05a2da79b332d72cc5429f061f..ea44d83dd0825a3bc950f60050254986
} }
panel#feature-callout::part(content) { panel#feature-callout::part(content) {
@@ -518,6 +523,12 @@ div#feature-callout.hidden { @@ -517,6 +522,12 @@ div#feature-callout.hidden {
width: 25em; width: 25em;
gap: 16px; gap: 16px;
background: var(--fc-background); background: var(--fc-background);
@@ -27,7 +27,7 @@ index e5bbb4c217ae7b05a2da79b332d72cc5429f061f..ea44d83dd0825a3bc950f60050254986
} }
#feature-callout .screen[pos=callout] .section-main .main-content .main-content-inner { #feature-callout .screen[pos=callout] .section-main .main-content .main-content-inner {
gap: 12px; gap: 12px;
@@ -850,6 +861,10 @@ panel#feature-callout::part(content) { @@ -933,6 +944,10 @@ panel#feature-callout::part(content) {
overflow: visible; overflow: visible;
transform: rotate(45deg); transform: rotate(45deg);
transform-style: preserve-3d; transform-style: preserve-3d;

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs b/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs diff --git a/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs b/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs
index 4081f59d041e91291d5e6b6b8c9ad96db5b6b2dc..d420a2fe4ca552b7f24ce9fbefc5f7302d7f2c8e 100644 index 97710ab0570a1a477ef4ed74a78c16448dfb7674..7d8ba5b1f2f330175fb57b906bb572fd7e1d36c8 100644
--- a/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs --- a/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs
+++ b/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs +++ b/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs
@@ -269,6 +269,7 @@ export const AIWindow = { @@ -277,6 +277,7 @@ export const AIWindow = {
}, },
_updateToolbarButtonPositions(win, { isToggling = false } = {}) { _updateToolbarButtonPositions(win, { isToggling = false } = {}) {

View File

@@ -1,8 +1,8 @@
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 db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f535e9d9e 100644 index 5905271a3343efa04b45f5d1a63bfca3de342755..af76922c1ba0b35a0072ec044f7d0860f9295d9d 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
@@ -14,6 +14,7 @@ ChromeUtils.defineESModuleGetters(lazy, { @@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
BrowserUsageTelemetry: "resource:///modules/BrowserUsageTelemetry.sys.mjs", BrowserUsageTelemetry: "resource:///modules/BrowserUsageTelemetry.sys.mjs",
CustomizableWidgets: CustomizableWidgets:
"moz-src:///browser/components/customizableui/CustomizableWidgets.sys.mjs", "moz-src:///browser/components/customizableui/CustomizableWidgets.sys.mjs",
@@ -10,7 +10,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
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 = { @@ -347,7 +348,7 @@ var CustomizableUIInternal = {
{ {
type: CustomizableUI.TYPE_PANEL, type: CustomizableUI.TYPE_PANEL,
defaultPlacements: [], defaultPlacements: [],
@@ -19,7 +19,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
}, },
false false
); );
@@ -358,20 +359,15 @@ var CustomizableUIInternal = { @@ -357,20 +358,15 @@ var CustomizableUIInternal = {
"back-button", "back-button",
"forward-button", "forward-button",
"stop-reload-button", "stop-reload-button",
@@ -41,7 +41,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
this.registerArea( this.registerArea(
CustomizableUI.AREA_NAVBAR, CustomizableUI.AREA_NAVBAR,
{ {
@@ -379,8 +375,6 @@ var CustomizableUIInternal = { @@ -378,8 +374,6 @@ var CustomizableUIInternal = {
overflowable: true, overflowable: true,
defaultPlacements: navbarPlacements, defaultPlacements: navbarPlacements,
verticalTabsDefaultPlacements: [ verticalTabsDefaultPlacements: [
@@ -50,7 +50,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
], ],
defaultCollapsed: false, defaultCollapsed: false,
}, },
@@ -404,10 +398,7 @@ var CustomizableUIInternal = { @@ -403,10 +397,7 @@ var CustomizableUIInternal = {
{ {
type: CustomizableUI.TYPE_TOOLBAR, type: CustomizableUI.TYPE_TOOLBAR,
defaultPlacements: [ defaultPlacements: [
@@ -61,7 +61,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
], ],
verticalTabsDefaultPlacements: [], verticalTabsDefaultPlacements: [],
defaultCollapsed: null, defaultCollapsed: null,
@@ -489,6 +480,7 @@ var CustomizableUIInternal = { @@ -486,6 +477,7 @@ var CustomizableUIInternal = {
CustomizableUI.AREA_NAVBAR, CustomizableUI.AREA_NAVBAR,
CustomizableUI.AREA_BOOKMARKS, CustomizableUI.AREA_BOOKMARKS,
CustomizableUI.AREA_TABSTRIP, CustomizableUI.AREA_TABSTRIP,
@@ -69,7 +69,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
]); ]);
if (AppConstants.platform != "macosx") { if (AppConstants.platform != "macosx") {
toolbars.add(CustomizableUI.AREA_MENUBAR); toolbars.add(CustomizableUI.AREA_MENUBAR);
@@ -1265,6 +1257,9 @@ var CustomizableUIInternal = { @@ -1262,6 +1254,9 @@ var CustomizableUIInternal = {
placements = gPlacements.get(area); placements = gPlacements.get(area);
} }
@@ -79,7 +79,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
// 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 (
@@ -1772,7 +1767,6 @@ var CustomizableUIInternal = { @@ -1769,7 +1764,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
); );
@@ -87,7 +87,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
} }
this.notifyDOMChange(widgetNode, null, container, true, () => { this.notifyDOMChange(widgetNode, null, container, true, () => {
@@ -1782,7 +1776,7 @@ var CustomizableUIInternal = { @@ -1779,7 +1773,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)) {
@@ -96,7 +96,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
} else { } else {
window.gNavToolbox.palette.appendChild(widgetNode); window.gNavToolbox.palette.appendChild(widgetNode);
} }
@@ -1950,16 +1944,16 @@ var CustomizableUIInternal = { @@ -1947,16 +1941,16 @@ var CustomizableUIInternal = {
elem.setAttribute("skipintoolbarset", "true"); elem.setAttribute("skipintoolbarset", "true");
} }
} }
@@ -116,7 +116,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
// 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
@@ -2201,6 +2195,10 @@ var CustomizableUIInternal = { @@ -2198,6 +2192,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) {
@@ -127,7 +127,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
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);
@@ -4565,7 +4563,7 @@ var CustomizableUIInternal = { @@ -4562,7 +4560,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.
*/ */
@@ -136,7 +136,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
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;
@@ -4576,7 +4574,7 @@ var CustomizableUIInternal = { @@ -4573,7 +4571,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.ownerGlobal; let win = areaNode.ownerGlobal;
@@ -145,7 +145,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
win.setToolbarVisibility( win.setToolbarVisibility(
areaNode, areaNode,
typeof defaultCollapsed == "string" typeof defaultCollapsed == "string"
@@ -5867,6 +5865,7 @@ export var CustomizableUI = { @@ -5864,6 +5862,7 @@ export var CustomizableUI = {
unregisterArea(aName, aDestroyPlacements) { unregisterArea(aName, aDestroyPlacements) {
CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements); CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements);
}, },
@@ -153,7 +153,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
/** /**
* 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,
@@ -7830,7 +7829,9 @@ class OverflowableToolbar { @@ -7827,7 +7826,9 @@ class OverflowableToolbar {
); );
if (webExtList && CustomizableUI.isWebExtensionWidget(child.id)) { if (webExtList && CustomizableUI.isWebExtensionWidget(child.id)) {
@@ -163,7 +163,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
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);
@@ -7890,7 +7891,7 @@ class OverflowableToolbar { @@ -7887,7 +7888,7 @@ class OverflowableToolbar {
) { ) {
continue; continue;
} }
@@ -172,7 +172,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
if (child != aExceptChild) { if (child != aExceptChild) {
sum += getInlineSize(child); sum += getInlineSize(child);
} }
@@ -7914,11 +7915,11 @@ class OverflowableToolbar { @@ -7911,11 +7912,11 @@ class OverflowableToolbar {
parseFloat(style.paddingLeft) - parseFloat(style.paddingLeft) -
parseFloat(style.paddingRight) - parseFloat(style.paddingRight) -
toolbarChildrenWidth; toolbarChildrenWidth;
@@ -186,11 +186,34 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
}); });
lazy.log.debug( lazy.log.debug(
@@ -7933,7 +7934,14 @@ class OverflowableToolbar { @@ -7930,7 +7931,37 @@ class OverflowableToolbar {
Math.max(targetWidth, targetChildrenWidth) Math.max(targetWidth, targetChildrenWidth)
); );
totalAvailWidth = Math.ceil(totalAvailWidth); totalAvailWidth = Math.ceil(totalAvailWidth);
- let isOverflowing = targetContentWidth > totalAvailWidth; - let isOverflowing = targetContentWidth > totalAvailWidth;
+ if (this.#target.id == 'nav-bar-customization-target' &&
+ win.gZenVerticalTabsManager._hasSetSingleToolbar &&
+ Services.prefs.getBoolPref("zen.view.overflow-webext-toolbar", true) &&
+ !win.gURLBar.hasAttribute("breakout-extend")) {
+ const availSelectors = ":is(#page-action-buttons, #zen-copy-url-button, .unified-extensions-item)";
+ const width = [
+ ...win.gURLBar._inputContainer.querySelectorAll(availSelectors),
+ ...win.document.getElementById("zen-overflow-extensions-list").querySelectorAll(availSelectors)
+ ].length * 26;
+ const urlbarWidth = win.document.getElementById("urlbar-container").getBoundingClientRect().width;
+ let overflowing = width > urlbarWidth * (Services.prefs.getIntPref("zen.view.overflow-webext-toolbar-threshold", 60) / 100);
+ let wasOverflowing = win.gURLBar._isOverflowingItems;
+ win.gURLBar._isOverflowingItems = overflowing;
+ if (wasOverflowing !== overflowing) {
+ const items = gPlacements.get("nav-bar");
+ for (let item of items) {
+ let [, node] = CustomizableUIInternal.getWidgetNode(item, win);
+ if (node?.hasAttribute("data-extensionid")) {
+ win.gZenVerticalTabsManager.appendCustomizableItem(win.document.getElementById("zen-sidebar-top-buttons-customization-target"), node);
+ }
+ }
+ }
+ }
+ if (win.gZenVerticalTabsManager._hasSetSingleToolbar && this.#toolbar.id == 'nav-bar') return { isOverflowing: false, targetContentWidth, totalAvailWidth }; + if (win.gZenVerticalTabsManager._hasSetSingleToolbar && this.#toolbar.id == 'nav-bar') return { isOverflowing: false, targetContentWidth, totalAvailWidth };
+ let isOverflowing = targetContentWidth + (win.gZenVerticalTabsManager._hasSetSingleToolbar ? 0.1 : 0) > totalAvailWidth; + let isOverflowing = targetContentWidth + (win.gZenVerticalTabsManager._hasSetSingleToolbar ? 0.1 : 0) > totalAvailWidth;
+ if (win.gZenVerticalTabsManager._hasSetSingleToolbar && + if (win.gZenVerticalTabsManager._hasSetSingleToolbar &&
@@ -202,7 +225,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
return { isOverflowing, targetContentWidth, totalAvailWidth }; return { isOverflowing, targetContentWidth, totalAvailWidth };
} }
@@ -7994,7 +8002,11 @@ class OverflowableToolbar { @@ -7991,7 +8022,11 @@ class OverflowableToolbar {
return; return;
} }
} }
@@ -215,7 +238,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
lazy.log.debug( lazy.log.debug(
`Need ${minSize} but width is ${totalAvailWidth} so bailing` `Need ${minSize} but width is ${totalAvailWidth} so bailing`
); );
@@ -8027,7 +8039,7 @@ class OverflowableToolbar { @@ -8024,7 +8059,7 @@ class OverflowableToolbar {
} }
} }
if (!inserted) { if (!inserted) {
@@ -224,7 +247,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
} }
child.removeAttribute("cui-anchorid"); child.removeAttribute("cui-anchorid");
child.removeAttribute("overflowedItem"); child.removeAttribute("overflowedItem");
@@ -8153,6 +8165,9 @@ class OverflowableToolbar { @@ -8150,6 +8185,9 @@ class OverflowableToolbar {
* if no such list exists. * if no such list exists.
*/ */
get #webExtList() { get #webExtList() {
@@ -234,7 +257,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
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) {
@@ -8164,6 +8179,9 @@ class OverflowableToolbar { @@ -8161,6 +8199,9 @@ class OverflowableToolbar {
let win = this.#toolbar.ownerGlobal; let win = this.#toolbar.ownerGlobal;
let { panel } = win.gUnifiedExtensions; let { panel } = win.gUnifiedExtensions;
this.#webExtListRef = panel.querySelector(`#${targetID}`); this.#webExtListRef = panel.querySelector(`#${targetID}`);
@@ -244,7 +267,7 @@ index db617c65b89643015d91b0f6a20eab7d7a1b598f..9acef640800bdc75f477a8e14e73f08f
} }
return this.#webExtListRef; return this.#webExtListRef;
} }
@@ -8372,7 +8390,7 @@ class OverflowableToolbar { @@ -8369,7 +8410,7 @@ class OverflowableToolbar {
break; break;
} }
case "mousedown": { case "mousedown": {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js
index 5056ff7fba62f8340c58cbaa30833aad12b4fc70..32dbd206cbc8576ec5a5f958f43670fa90c050b8 100644 index 5a469ce153dada011144fb4b66747c41e778ff1e..83bedb74df5b4064e8a0580f8b2ee9c0c27f81a8 100644
--- a/browser/components/customizableui/content/panelUI.js --- a/browser/components/customizableui/content/panelUI.js
+++ b/browser/components/customizableui/content/panelUI.js +++ b/browser/components/customizableui/content/panelUI.js
@@ -647,10 +647,12 @@ const PanelUI = { @@ -666,10 +666,12 @@ const PanelUI = {
if (hasKids && !this.navbar.hasAttribute("nonemptyoverflow")) { if (hasKids && !this.navbar.hasAttribute("nonemptyoverflow")) {
this.navbar.setAttribute("nonemptyoverflow", "true"); this.navbar.setAttribute("nonemptyoverflow", "true");
this.overflowPanel.setAttribute("hasfixeditems", "true"); this.overflowPanel.setAttribute("hasfixeditems", "true");
@@ -15,7 +15,7 @@ index 5056ff7fba62f8340c58cbaa30833aad12b4fc70..32dbd206cbc8576ec5a5f958f43670fa
} }
}, },
@@ -998,7 +1000,7 @@ const PanelUI = { @@ -1017,7 +1019,7 @@ const PanelUI = {
el.removeAttribute("data-lazy-l10n-id"); el.removeAttribute("data-lazy-l10n-id");
}); });

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/extensions/parent/ext-browser.js b/browser/components/extensions/parent/ext-browser.js diff --git a/browser/components/extensions/parent/ext-browser.js b/browser/components/extensions/parent/ext-browser.js
index 3ce6ae3271bb0b3873118a94363a9552877559f8..9e62181986d039cc171dfe87de1d95c1f5aacd8c 100644 index d1209bc2c828a19ade8cc027cdea6f42007f0de6..0a2def2f3c32618304cd8a263906b0c6e040dcbc 100644
--- a/browser/components/extensions/parent/ext-browser.js --- a/browser/components/extensions/parent/ext-browser.js
+++ b/browser/components/extensions/parent/ext-browser.js +++ b/browser/components/extensions/parent/ext-browser.js
@@ -354,6 +354,7 @@ class TabTracker extends TabTrackerBase { @@ -352,6 +352,7 @@ class TabTracker extends TabTrackerBase {
} }
getId(nativeTab) { getId(nativeTab) {
@@ -10,7 +10,7 @@ index 3ce6ae3271bb0b3873118a94363a9552877559f8..9e62181986d039cc171dfe87de1d95c1
let id = this._tabs.get(nativeTab); let id = this._tabs.get(nativeTab);
if (id) { if (id) {
return id; return id;
@@ -388,6 +389,7 @@ class TabTracker extends TabTrackerBase { @@ -386,6 +387,7 @@ class TabTracker extends TabTrackerBase {
if (nativeTab.ownerGlobal.closed) { if (nativeTab.ownerGlobal.closed) {
throw new Error("Cannot attach ID to a tab in a closed window."); throw new Error("Cannot attach ID to a tab in a closed window.");
} }
@@ -18,7 +18,7 @@ index 3ce6ae3271bb0b3873118a94363a9552877559f8..9e62181986d039cc171dfe87de1d95c1
this._tabs.set(nativeTab, id); this._tabs.set(nativeTab, id);
if (nativeTab.linkedBrowser) { if (nativeTab.linkedBrowser) {
@@ -1278,6 +1280,10 @@ class TabManager extends TabManagerBase { @@ -1276,6 +1278,10 @@ class TabManager extends TabManagerBase {
} }
canAccessTab(nativeTab) { canAccessTab(nativeTab) {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/extensions/parent/ext-tabs.js b/browser/components/extensions/parent/ext-tabs.js diff --git a/browser/components/extensions/parent/ext-tabs.js b/browser/components/extensions/parent/ext-tabs.js
index ae004ad48e86aae9d13fc6aa5f77f3095763f829..1e3d14a5c6fcbebbc677e0e57ef2b2176a141a3c 100644 index 636e0f8cd1d489658833cf101152576e9fdb52af..e7578a059504b89a852061be037c323a107fe5ce 100644
--- a/browser/components/extensions/parent/ext-tabs.js --- a/browser/components/extensions/parent/ext-tabs.js
+++ b/browser/components/extensions/parent/ext-tabs.js +++ b/browser/components/extensions/parent/ext-tabs.js
@@ -516,6 +516,7 @@ this.tabs = class extends ExtensionAPIPersistent { @@ -514,6 +514,7 @@ this.tabs = class extends ExtensionAPIPersistent {
} }
let tab = tabManager.getWrapper(updatedTab); let tab = tabManager.getWrapper(updatedTab);
@@ -10,7 +10,7 @@ index ae004ad48e86aae9d13fc6aa5f77f3095763f829..1e3d14a5c6fcbebbc677e0e57ef2b217
let changeInfo = {}; let changeInfo = {};
for (let prop of needed) { for (let prop of needed) {
@@ -881,6 +882,7 @@ this.tabs = class extends ExtensionAPIPersistent { @@ -883,6 +884,7 @@ this.tabs = class extends ExtensionAPIPersistent {
}); });
} }

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/places/PlacesUIUtils.sys.mjs b/browser/components/places/PlacesUIUtils.sys.mjs diff --git a/browser/components/places/PlacesUIUtils.sys.mjs b/browser/components/places/PlacesUIUtils.sys.mjs
index 2db11dad245dccca246cc8429a7498af9f143d5f..980ec44d9e92639b249bc83f59ea3bfae40dd921 100644 index b21f7721dea2d485ccba1fd6fd7e65e17480e3d3..89048d9ea2b4edf2b0cab77f661c07f4d9453c3f 100644
--- a/browser/components/places/PlacesUIUtils.sys.mjs --- a/browser/components/places/PlacesUIUtils.sys.mjs
+++ b/browser/components/places/PlacesUIUtils.sys.mjs +++ b/browser/components/places/PlacesUIUtils.sys.mjs
@@ -61,6 +61,7 @@ class BookmarkState { @@ -61,6 +61,7 @@ class BookmarkState {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/places/content/browserPlacesViews.js b/browser/components/places/content/browserPlacesViews.js diff --git a/browser/components/places/content/browserPlacesViews.js b/browser/components/places/content/browserPlacesViews.js
index 384d599c58cefbf80f5a50489fc401df0c8de8a5..aa85972946c3ff7866fbea86b0372432fb02cd6f 100644 index 463913926c58e6c622e0fcc60534921f02814829..0143c48c48e132464226db810f4ea4d2720c3c49 100644
--- a/browser/components/places/content/browserPlacesViews.js --- a/browser/components/places/content/browserPlacesViews.js
+++ b/browser/components/places/content/browserPlacesViews.js +++ b/browser/components/places/content/browserPlacesViews.js
@@ -328,12 +328,23 @@ class PlacesViewBase { @@ -328,12 +328,23 @@ class PlacesViewBase {
@@ -37,7 +37,7 @@ index 384d599c58cefbf80f5a50489fc401df0c8de8a5..aa85972946c3ff7866fbea86b0372432
} else if (PlacesUtils.containerTypes.includes(type)) { } else if (PlacesUtils.containerTypes.includes(type)) {
element = document.createXULElement("menu"); element = document.createXULElement("menu");
element.setAttribute("container", "true"); element.setAttribute("container", "true");
@@ -1015,25 +1027,33 @@ class PlacesToolbar extends PlacesViewBase { @@ -1058,25 +1070,33 @@ class PlacesToolbar extends PlacesViewBase {
this._rootElt.firstChild.remove(); this._rootElt.firstChild.remove();
} }
@@ -82,7 +82,7 @@ index 384d599c58cefbf80f5a50489fc401df0c8de8a5..aa85972946c3ff7866fbea86b0372432
); );
++startIndex; ++startIndex;
if (elt.localName != "toolbarseparator") { if (elt.localName != "toolbarseparator") {
@@ -1041,15 +1061,12 @@ class PlacesToolbar extends PlacesViewBase { @@ -1084,15 +1104,12 @@ class PlacesToolbar extends PlacesViewBase {
} }
} }
if (!elt) { if (!elt) {
@@ -101,7 +101,7 @@ index 384d599c58cefbf80f5a50489fc401df0c8de8a5..aa85972946c3ff7866fbea86b0372432
}); });
}); });
@@ -1059,7 +1076,7 @@ class PlacesToolbar extends PlacesViewBase { @@ -1102,7 +1119,7 @@ class PlacesToolbar extends PlacesViewBase {
let fragment = document.createDocumentFragment(); let fragment = document.createDocumentFragment();
for (let i = startIndex; i < limit; ++i) { for (let i = startIndex; i < limit; ++i) {
@@ -110,7 +110,7 @@ index 384d599c58cefbf80f5a50489fc401df0c8de8a5..aa85972946c3ff7866fbea86b0372432
} }
await new Promise(resolve => window.requestAnimationFrame(resolve)); await new Promise(resolve => window.requestAnimationFrame(resolve));
if (!this._isAlive) { if (!this._isAlive) {
@@ -1122,6 +1139,8 @@ class PlacesToolbar extends PlacesViewBase { @@ -1165,6 +1182,8 @@ class PlacesToolbar extends PlacesViewBase {
"scheme", "scheme",
PlacesUIUtils.guessUrlSchemeForUI(aChild.uri) PlacesUIUtils.guessUrlSchemeForUI(aChild.uri)
); );
@@ -119,7 +119,7 @@ index 384d599c58cefbf80f5a50489fc401df0c8de8a5..aa85972946c3ff7866fbea86b0372432
} }
} }
@@ -2314,7 +2333,7 @@ this.PlacesPanelview = class PlacesPanelview extends PlacesViewBase { @@ -2359,7 +2378,7 @@ this.PlacesPanelview = class PlacesPanelview extends PlacesViewBase {
PlacesUIUtils.guessUrlSchemeForUI(placesNode.uri) PlacesUIUtils.guessUrlSchemeForUI(placesNode.uri)
); );
element.setAttribute("label", PlacesUIUtils.getBestTitle(placesNode)); element.setAttribute("label", PlacesUIUtils.getBestTitle(placesNode));

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/dialogs/syncChooseWhatToSync.xhtml b/browser/components/preferences/dialogs/syncChooseWhatToSync.xhtml diff --git a/browser/components/preferences/dialogs/syncChooseWhatToSync.xhtml b/browser/components/preferences/dialogs/syncChooseWhatToSync.xhtml
index ef127a1bc2e3ea4221b641156c38a74edb3b44ae..acd39fe7f6dc7ec03ea50928e2d002791b834dcf 100644 index a893c5ec3d007820d98f5d92dd039640faa2c181..9cbd00102e44ccf98b37845474d92d57bac0842d 100644
--- a/browser/components/preferences/dialogs/syncChooseWhatToSync.xhtml --- a/browser/components/preferences/dialogs/syncChooseWhatToSync.xhtml
+++ b/browser/components/preferences/dialogs/syncChooseWhatToSync.xhtml +++ b/browser/components/preferences/dialogs/syncChooseWhatToSync.xhtml
@@ -27,6 +27,10 @@ @@ -26,6 +26,10 @@
rel="localization" rel="localization"
href="browser/preferences/preferences.ftl" href="browser/preferences/preferences.ftl"
/> />
@@ -13,7 +13,7 @@ index ef127a1bc2e3ea4221b641156c38a74edb3b44ae..acd39fe7f6dc7ec03ea50928e2d00279
</linkset> </linkset>
<script src="chrome://global/content/preferencesBindings.js" /> <script src="chrome://global/content/preferencesBindings.js" />
<script src="chrome://browser/content/preferences/dialogs/syncChooseWhatToSync.js" /> <script src="chrome://browser/content/preferences/dialogs/syncChooseWhatToSync.js" />
@@ -87,6 +91,12 @@ @@ -86,6 +90,12 @@
preference="services.sync.engine.prefs" preference="services.sync.engine.prefs"
/> />
</html:div> </html:div>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn
index b2d65603ec714b49249789d0e48b0b677c9eaea6..6cea34be90e2f181fd3e5770f7e2fd99c483b8d8 100644 index 78e38f98c1f69df31459fd4b6a119c93f6509c02..33abd46566146272da9f561e11ffa290d7000111 100644
--- a/browser/components/preferences/jar.mn --- a/browser/components/preferences/jar.mn
+++ b/browser/components/preferences/jar.mn +++ b/browser/components/preferences/jar.mn
@@ -51,3 +51,5 @@ browser.jar: @@ -54,3 +54,5 @@ browser.jar:
content/browser/preferences/widgets/sync-device-name.mjs (widgets/sync-device-name/sync-device-name.mjs) content/browser/preferences/widgets/sync-device-name.mjs (widgets/sync-device-name/sync-device-name.mjs)
content/browser/preferences/widgets/sync-engines-list.mjs (widgets/sync-engine-list/sync-engines-list.mjs) content/browser/preferences/widgets/sync-engines-list.mjs (widgets/sync-engine-list/sync-engines-list.mjs)
content/browser/preferences/widgets/sync-engines-list.css (widgets/sync-engine-list/sync-engines-list.css) content/browser/preferences/widgets/sync-engines-list.css (widgets/sync-engine-list/sync-engines-list.css)

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml
index 7d6bbc54d21bf149dd1b99a38ca803654e6908eb..4da0e5fc921bb0ee24ace443c0c119fdd2707fc9 100644 index 6b96ff01e43087f8c609df17204441616b7013f3..df85ec789c54146b3a702169f33adf36c11b85da 100644
--- a/browser/components/preferences/main.inc.xhtml --- a/browser/components/preferences/main.inc.xhtml
+++ b/browser/components/preferences/main.inc.xhtml +++ b/browser/components/preferences/main.inc.xhtml
@@ -96,6 +96,7 @@ @@ -96,6 +96,7 @@

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
index 8f8da3c4cabb4a05b50431b1feeff8f1f1abcf6e..e57102247eb739ed431bd838a3004b353342defb 100644 index 6f4cb34d1639ac76a6d4ca40f0d33ae6fb6bf565..1f336a09d6f2e367effdf26e8baf58b5686d252d 100644
--- a/browser/components/preferences/main.js --- a/browser/components/preferences/main.js
+++ b/browser/components/preferences/main.js +++ b/browser/components/preferences/main.js
@@ -2658,6 +2658,11 @@ function createStartupConfig(hidden = false) { @@ -2537,6 +2537,11 @@ function createStartupConfig(hidden = false) {
id: "browserRestoreSession", id: "browserRestoreSession",
l10nId: "startup-restore-windows-and-tabs", l10nId: "startup-restore-windows-and-tabs",
}, },
@@ -14,16 +14,16 @@ index 8f8da3c4cabb4a05b50431b1feeff8f1f1abcf6e..e57102247eb739ed431bd838a3004b35
{ {
id: "windowsLaunchOnLogin", id: "windowsLaunchOnLogin",
l10nId: "windows-launch-on-login", l10nId: "windows-launch-on-login",
@@ -2755,7 +2760,7 @@ SettingGroupManager.registerGroups({ @@ -2578,7 +2583,7 @@ function createStartupConfig(hidden = false) {
}, SettingGroupManager.registerGroups({
defaultBrowser: createDefaultBrowserConfig(), defaultBrowser: createDefaultBrowserConfig(),
startup: createStartupConfig( startup: createStartupConfig(
- Services.prefs.getBoolPref("browser.settings-redesign.enabled", false) - Services.prefs.getBoolPref("browser.settings-redesign.enabled", false)
+ false + false
), ),
importBrowserData: { zoom: {
l10nId: "preferences-data-migration-group", l10nId: "preferences-zoom-header2",
@@ -5174,7 +5179,7 @@ function getBundleForLocales(newLocales) { @@ -3393,7 +3398,7 @@ function getBundleForLocales(newLocales) {
]) ])
); );
return new Localization( return new Localization(

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
index 2d6cba7fac0c7de6d7c4a819f2c7ad20ce10bb33..15434dac6b501cf6f7a6968c6363c59288043c3e 100644 index 9d13733318e7a147adee1e44f96570c94f4948df..fb625d8da021dc0cebd7a14ca47446a0632e8e7a 100644
--- a/browser/components/preferences/preferences.js --- a/browser/components/preferences/preferences.js
+++ b/browser/components/preferences/preferences.js +++ b/browser/components/preferences/preferences.js
@@ -121,6 +121,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () { @@ -121,6 +121,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
@@ -10,7 +10,7 @@ index 2d6cba7fac0c7de6d7c4a819f2c7ad20ce10bb33..15434dac6b501cf6f7a6968c6363c592
], ],
resizeCallback: async ({ title, frame }) => { resizeCallback: async ({ title, frame }) => {
// Search within main document and highlight matched keyword. // Search within main document and highlight matched keyword.
@@ -324,6 +325,10 @@ function init_all() { @@ -398,6 +399,10 @@ function init_all() {
register_module("paneSearch", gSearchPane); register_module("paneSearch", gSearchPane);
register_module("panePrivacy", gPrivacyPane); register_module("panePrivacy", gPrivacyPane);
register_module("paneContainers", gContainersPane); register_module("paneContainers", gContainersPane);
@@ -19,5 +19,5 @@ index 2d6cba7fac0c7de6d7c4a819f2c7ad20ce10bb33..15434dac6b501cf6f7a6968c6363c592
+ register_module("paneZenCKS", gZenCKSSettings); + register_module("paneZenCKS", gZenCKSSettings);
+ register_module("paneZenMarketplace", gZenMarketplaceManager); + register_module("paneZenMarketplace", gZenMarketplaceManager);
let redesignEnabled = Services.prefs.getBoolPref( if (ExperimentAPI.labsEnabled) {
"browser.settings-redesign.enabled" // Set hidden based on previous load's hidden value or if Nimbus is

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index b006d5e5e64c418fbf930c010401e4ea3a3647a3..ed75c48a2cdf47dd957b0598282fb211ca2fb1b5 100644 index 3c4b3225c672bcb172e7f946bc5f98d424e21e84..d10824470c564b6631333f197de897c21ccc19f5 100644
--- a/browser/components/preferences/preferences.xhtml --- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml +++ b/browser/components/preferences/preferences.xhtml
@@ -42,6 +42,8 @@ @@ -42,6 +42,8 @@
@@ -11,58 +11,34 @@ index b006d5e5e64c418fbf930c010401e4ea3a3647a3..ed75c48a2cdf47dd957b0598282fb211
<link rel="localization" href="branding/brand.ftl"/> <link rel="localization" href="branding/brand.ftl"/>
<link rel="localization" href="browser/browser.ftl"/> <link rel="localization" href="browser/browser.ftl"/>
<!-- Used by fontbuilder.js --> <!-- Used by fontbuilder.js -->
@@ -124,6 +126,50 @@ @@ -126,6 +128,26 @@
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label> iconsrc="chrome://browser/skin/preferences/category-general.svg"
</richlistitem> data-l10n-id="pane-general-title">
</html:moz-page-nav-button>
+ <richlistitem id="category-zen-looks" + <html:moz-page-nav-button id="category-zen-looks"
+ class="category" + view="paneZenLooks"
+ value="paneZenLooks" + iconsrc="chrome://browser/skin/customize.svg"
+ helpTopic="prefs-main" + data-l10n-id="pane-zen-looks-title">
+ data-l10n-id="category-zen-looks" + </html:moz-page-nav-button>
+ data-l10n-attrs="tooltiptext" + <html:moz-page-nav-button id="category-zen-tabs-management"
+ align="center"> + view="paneZenTabManagement"
+ <image class="category-icon"/> + iconsrc="chrome://browser/skin/window.svg"
+ <label class="category-name" flex="1" data-l10n-id="pane-zen-looks-title"></label> + data-l10n-id="pane-zen-tabs-title">
+ </richlistitem> + </html:moz-page-nav-button>
+ + <html:moz-page-nav-button id="category-zen-CKS"
+ <richlistitem id="category-zen-tabs-management" + view="paneZenCKS"
+ class="category" + iconsrc="chrome://browser/skin/quickactions.svg"
+ value="paneZenTabManagement" + data-l10n-id="pane-zen-CKS-title">
+ helpTopic="prefs-main" + </html:moz-page-nav-button>
+ data-l10n-id="category-zen-workspaces" + <html:moz-page-nav-button id="category-zen-marketplace"
+ data-l10n-attrs="tooltiptext" + view="paneZenMarketplace"
+ align="center"> + iconsrc="chrome://mozapps/skin/extensions/category-themes.svg"
+ <image class="category-icon"/> + data-l10n-id="pane-zen-marketplace-title">
+ <label class="category-name" flex="1" data-l10n-id="pane-zen-tabs-title"></label> + </html:moz-page-nav-button>
+ </richlistitem> <html:moz-page-nav-button id="category-home"
+ view="paneHome"
+ <richlistitem id="category-zen-CKS" iconsrc="chrome://browser/skin/home.svg"
+ class="category" @@ -218,6 +240,10 @@
+ value="paneZenCKS"
+ helpTopic="prefs-main"
+ data-l10n-id="category-zen-CKS"
+ data-l10n-attrs="tooltiptext"
+ align="center">
+ <image class="category-icon"/>
+ <label class="category-name" flex="1" data-l10n-id="pane-zen-CKS-title"></label>
+ </richlistitem>
+
+ <richlistitem id="category-zen-marketplace"
+ class="category"
+ value="paneZenMarketplace"
+ helpTopic="prefs-main"
+ data-l10n-id="category-zen-marketplace"
+ data-l10n-attrs="tooltiptext"
+ align="center">
+ <image class="category-icon"/>
+ <label class="category-name" flex="1" data-l10n-id="pane-zen-marketplace-title"></label>
+ </richlistitem>
+
<richlistitem id="category-home"
class="category"
value="paneHome"
@@ -266,6 +312,10 @@
#include sync.inc.xhtml #include sync.inc.xhtml
#include experimental.inc.xhtml #include experimental.inc.xhtml
#include moreFromMozilla.inc.xhtml #include moreFromMozilla.inc.xhtml

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/sync.inc.xhtml b/browser/components/preferences/sync.inc.xhtml diff --git a/browser/components/preferences/sync.inc.xhtml b/browser/components/preferences/sync.inc.xhtml
index b889d42301de3c4f845105bf09d19b052dca9eae..015b751bd46f2499a93e328c903475ce2d60d079 100644 index c379e1a5f82692406a92d9fcd3bca2769dfac5b2..af037dd3d995813d966524ac44a3795d0c227071 100644
--- a/browser/components/preferences/sync.inc.xhtml --- a/browser/components/preferences/sync.inc.xhtml
+++ b/browser/components/preferences/sync.inc.xhtml +++ b/browser/components/preferences/sync.inc.xhtml
@@ -223,6 +223,10 @@ @@ -224,6 +224,10 @@
<image class="sync-engine-image sync-engine-prefs" alt=""/> <image class="sync-engine-image sync-engine-prefs" alt=""/>
<label data-l10n-id="sync-currently-syncing-settings"/> <label data-l10n-id="sync-currently-syncing-settings"/>
</html:div> </html:div>

View File

@@ -1124,7 +1124,7 @@ var gZenCKSSettings = {
this._hasSafed = false; this._hasSafed = false;
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-invalid`); input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-invalid`);
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-not-set`); input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-not-set`);
input.value = modifiers.toDisplayString() + shortcut; input.value = modifiers.toDisplayString() + gZenKeyboardShortcutsManager.getKeyDisplay(shortcut);
this._latestValidKey = shortcut; this._latestValidKey = shortcut;
}, },
}; };

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
index 71921cec2b6aa0f103856c31254fd6c4affefccb..ed13d7e2aa5ff1199872fedbc26494aae463ace4 100644 index 95f4960c3d8a2a4ca9bce24bcc54971877ee55ca..5bef8eeeb7cc26c930e3884e6eede6ea30f7d70a 100644
--- a/browser/components/sessionstore/SessionStore.sys.mjs --- a/browser/components/sessionstore/SessionStore.sys.mjs
+++ b/browser/components/sessionstore/SessionStore.sys.mjs +++ b/browser/components/sessionstore/SessionStore.sys.mjs
@@ -129,6 +129,9 @@ const TAB_EVENTS = [ @@ -129,6 +129,9 @@ const TAB_EVENTS = [
@@ -358,7 +358,7 @@ index 71921cec2b6aa0f103856c31254fd6c4affefccb..ed13d7e2aa5ff1199872fedbc26494aa
Glean.sessionRestore.shutdownFlushAllOutcomes.timed_out.add(1); Glean.sessionRestore.shutdownFlushAllOutcomes.timed_out.add(1);
deferred.resolve(); deferred.resolve();
} }
@@ -8552,6 +8614,7 @@ var SessionStoreInternal = { @@ -8554,6 +8616,7 @@ var SessionStoreInternal = {
if ( if (
!savedTabGroupState.tabs.length || !savedTabGroupState.tabs.length ||
this.getSavedTabGroup(savedTabGroupState.id) this.getSavedTabGroup(savedTabGroupState.id)

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js
index ae85009ad8f0a1cc6d3f3a890b27178df99e5ece..a432f7ee5d3f92bf623ff6d00d5b68ab7a6ecbe7 100644 index 2c13f19ec4f962ce3ecaface0ae5d00c50ca913f..eb696819a1af4cfae6352fc5696fd95590bed342 100644
--- a/browser/components/sidebar/browser-sidebar.js --- a/browser/components/sidebar/browser-sidebar.js
+++ b/browser/components/sidebar/browser-sidebar.js +++ b/browser/components/sidebar/browser-sidebar.js
@@ -807,7 +807,7 @@ var SidebarController = { @@ -834,7 +834,7 @@ var SidebarController = {
setPosition() { setPosition() {
// First reset all ordinals to match DOM ordering. // First reset all ordinals to match DOM ordering.
let contentArea = document.getElementById("tabbrowser-tabbox"); let contentArea = document.getElementById("tabbrowser-tabbox");

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs b/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs diff --git a/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs b/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs
index 9c5e92fbd555d328ce09c0cf0ff8078584f68478..2af7a428bc830d8c12b3d3c0af375c97e6942994 100644 index eebff0f59df42d3ef075f3eea1bd9269c47ba80d..6ab43a810f4cb61eedc02bb42026f6b5e282e785 100644
--- a/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs --- a/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs
+++ b/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs +++ b/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs
@@ -939,6 +939,7 @@ export class AsyncTabSwitcher { @@ -938,6 +938,7 @@ export class AsyncTabSwitcher {
this.tabbrowser._printPreviewBrowsers.has(browser) || this.tabbrowser._printPreviewBrowsers.has(browser) ||
this.tabbrowser.splitViewBrowsers.includes(browser) || this.tabbrowser.splitViewBrowsers.includes(browser) ||
lazy.PictureInPicture.isOriginatingBrowser(browser) lazy.PictureInPicture.isOriginatingBrowser(browser)

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/tabbrowser/TabUnloader.sys.mjs b/browser/components/tabbrowser/TabUnloader.sys.mjs diff --git a/browser/components/tabbrowser/TabUnloader.sys.mjs b/browser/components/tabbrowser/TabUnloader.sys.mjs
index aefccef39f0b81176a5710a794e8a5e2650d6507..53c838b3bc322cadee4ef9b411d02fc0af8c35e5 100644 index a6d6c5405f98c839b7c0f2007e053e874bb7ce07..9d8c6066ce917e15fbf9e19284a3db50aa5a3815 100644
--- a/browser/components/tabbrowser/TabUnloader.sys.mjs --- a/browser/components/tabbrowser/TabUnloader.sys.mjs
+++ b/browser/components/tabbrowser/TabUnloader.sys.mjs +++ b/browser/components/tabbrowser/TabUnloader.sys.mjs
@@ -52,7 +52,7 @@ let CRITERIA_WEIGHT = 1; @@ -51,7 +51,7 @@ let CRITERIA_WEIGHT = 1;
*/ */
let DefaultTabUnloaderMethods = { let DefaultTabUnloaderMethods = {
isNonDiscardable(tab, weight) { isNonDiscardable(tab, weight) {
@@ -11,7 +11,7 @@ index aefccef39f0b81176a5710a794e8a5e2650d6507..53c838b3bc322cadee4ef9b411d02fc0
return weight; return weight;
} }
@@ -106,7 +106,7 @@ let DefaultTabUnloaderMethods = { @@ -105,7 +105,7 @@ let DefaultTabUnloaderMethods = {
*iterateTabs() { *iterateTabs() {
for (let win of Services.wm.getEnumerator("navigator:browser")) { for (let win of Services.wm.getEnumerator("navigator:browser")) {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/browser-ctrlTab.js b/browser/components/tabbrowser/content/browser-ctrlTab.js diff --git a/browser/components/tabbrowser/content/browser-ctrlTab.js b/browser/components/tabbrowser/content/browser-ctrlTab.js
index b435917892ac77fb433ea709f2524db2f2347a1d..fcbfeb92f3ae4effbfd3333514ed4d412e3063c6 100644 index 727e21f1754b0842080d8f3e29060baad445df66..ee9df3a311fc72954e064a2cbc56b716d116314a 100644
--- a/browser/components/tabbrowser/content/browser-ctrlTab.js --- a/browser/components/tabbrowser/content/browser-ctrlTab.js
+++ b/browser/components/tabbrowser/content/browser-ctrlTab.js +++ b/browser/components/tabbrowser/content/browser-ctrlTab.js
@@ -252,7 +252,8 @@ var ctrlTab = { @@ -252,7 +252,8 @@ var ctrlTab = {
@@ -30,7 +30,7 @@ index b435917892ac77fb433ea709f2524db2f2347a1d..fcbfeb92f3ae4effbfd3333514ed4d41
return; return;
} }
@@ -751,7 +752,7 @@ var ctrlTab = { @@ -759,7 +760,7 @@ var ctrlTab = {
_initRecentlyUsedTabs() { _initRecentlyUsedTabs() {
this._recentlyUsedTabs = Array.prototype.filter.call( this._recentlyUsedTabs = Array.prototype.filter.call(
gBrowser.tabs, gBrowser.tabs,

View File

@@ -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 b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad3229ebdc2d2 100644 index ea4f83fad1757f073ea1bbe5c93a4ebe5ecc0abe..904e604e28c96757fabf0dd3a749c85280e74993 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 @@
@@ -47,7 +47,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
event.stopPropagation(); event.stopPropagation();
+ if (draggedTab && dropEffect == "move") { + if (draggedTab && dropEffect == "move") {
+ this.handle_drop_transition?.(draggedTab._dragData.dropElement, draggedTab, movingTabs, draggedTab._dragData.dropBefore); + this.handle_drop_transition?.(draggedTab._dragData.dropElement, draggedTab, movingTabs, draggedTab._dragData.dropBefore);
+ gZenPinnedTabManager.moveToAnotherTabContainerIfNecessary(event, draggedTab, movingTabs, this._getDropIndex(event)); + [draggedTab, movingTabs] = gZenPinnedTabManager.moveToAnotherTabContainerIfNecessary(event, draggedTab, movingTabs, this._getDropIndex(event));
+ } + }
if (draggedTab && dropEffect == "copy") { if (draggedTab && dropEffect == "copy") {
let duplicatedDraggedTab; let duplicatedDraggedTab;
@@ -73,7 +73,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
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
@@ -390,11 +401,13 @@ @@ -392,11 +403,13 @@
this._dragToPinPromoCard, this._dragToPinPromoCard,
]; ];
let shouldPin = let shouldPin =
@@ -87,7 +87,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
isTab(draggedTab) && isTab(draggedTab) &&
draggedTab.pinned && draggedTab.pinned &&
this._tabbrowserTabs.arrowScrollbox.contains(event.target); this._tabbrowserTabs.arrowScrollbox.contains(event.target);
@@ -458,6 +471,7 @@ @@ -466,6 +479,7 @@
} }
} }
@@ -95,7 +95,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
if (shouldTranslate) { if (shouldTranslate) {
let translationPromises = []; let translationPromises = [];
for (let item of movingTabs) { for (let item of movingTabs) {
@@ -469,7 +483,7 @@ @@ -477,7 +491,7 @@
item.removeAttribute("tabdrop-samewindow"); item.removeAttribute("tabdrop-samewindow");
resolve(); resolve();
}; };
@@ -104,7 +104,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
postTransitionCleanup(); postTransitionCleanup();
} else { } else {
let onTransitionEnd = transitionendEvent => { let onTransitionEnd = transitionendEvent => {
@@ -544,7 +558,7 @@ @@ -552,7 +566,7 @@
if (tab.selected) { if (tab.selected) {
selectedTab = tab; selectedTab = tab;
indexForSelectedTab = newIndex; indexForSelectedTab = newIndex;
@@ -113,7 +113,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
const droppedIntoPinnedArea = dropIndex < gBrowser.pinnedTabCount; const droppedIntoPinnedArea = dropIndex < gBrowser.pinnedTabCount;
const newSplitView = gBrowser.adoptSplitView(tab, { const newSplitView = gBrowser.adoptSplitView(tab, {
elementIndex: droppedIntoPinnedArea elementIndex: droppedIntoPinnedArea
@@ -569,7 +583,7 @@ @@ -577,7 +591,7 @@
} }
} }
} }
@@ -122,7 +122,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
const newTab = gBrowser.adoptTab(selectedTab, { const newTab = gBrowser.adoptTab(selectedTab, {
elementIndex: indexForSelectedTab, elementIndex: indexForSelectedTab,
selectTab: selectedTab == draggedTab, selectTab: selectedTab == draggedTab,
@@ -603,10 +617,6 @@ @@ -611,10 +625,6 @@
this._tabbrowserTabs.dragAndDropElements[ this._tabbrowserTabs.dragAndDropElements[
gBrowser.pinnedTabCount + unpinnedSplitViews.length - 1 gBrowser.pinnedTabCount + unpinnedSplitViews.length - 1
]; ];
@@ -133,7 +133,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
} }
} }
} else { } else {
@@ -655,6 +665,7 @@ @@ -664,6 +674,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,7 +141,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
gBrowser.loadTabs(urls, { gBrowser.loadTabs(urls, {
inBackground, inBackground,
replace, replace,
@@ -696,7 +707,16 @@ @@ -705,7 +716,16 @@
this._expandGroupOnDrop(draggedTab); this._expandGroupOnDrop(draggedTab);
} }
this._resetTabsAfterDrop(draggedTab.ownerDocument); this._resetTabsAfterDrop(draggedTab.ownerDocument);
@@ -159,7 +159,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
if ( if (
dt.mozUserCancelled || dt.mozUserCancelled ||
dt.dropEffect != "none" || dt.dropEffect != "none" ||
@@ -909,11 +929,10 @@ @@ -918,11 +938,10 @@
return this.#getHorizontalScrollboxDragTarget(event, ignoreSides); return this.#getHorizontalScrollboxDragTarget(event, ignoreSides);
} }
while (target) { while (target) {
@@ -175,7 +175,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
break; break;
} }
target = target.parentNode; target = target.parentNode;
@@ -943,6 +962,9 @@ @@ -952,6 +971,9 @@
return null; return null;
} }
} }
@@ -185,7 +185,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
return target; return target;
} }
@@ -1002,7 +1024,8 @@ @@ -1011,7 +1033,8 @@
isTabGroupLabel(draggedTab) && isTabGroupLabel(draggedTab) &&
draggedTab._dragData?.expandGroupOnDrop draggedTab._dragData?.expandGroupOnDrop
) { ) {
@@ -195,7 +195,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
} }
} }
@@ -1186,7 +1209,6 @@ @@ -1195,7 +1218,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 +203,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
}; };
} else { } else {
// Create a panel to use it in setDragImage // Create a panel to use it in setDragImage
@@ -1224,7 +1246,6 @@ @@ -1233,7 +1255,6 @@
); );
dragImageOffset = dragImageOffset * scale; dragImageOffset = dragImageOffset * scale;
} }
@@ -211,7 +211,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
// _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
@@ -1243,7 +1264,7 @@ @@ -1252,7 +1273,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 +220,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
tab._dragData = { tab._dragData = {
offsetX: this._tabbrowserTabs.verticalMode offsetX: this._tabbrowserTabs.verticalMode
@@ -1253,7 +1274,7 @@ @@ -1262,7 +1283,7 @@
? event.screenY - window.screenY - tabOffset ? event.screenY - window.screenY - tabOffset
: event.screenY - window.screenY, : event.screenY - window.screenY,
scrollPos: scrollPos:
@@ -229,7 +229,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
? this._tabbrowserTabs.pinnedTabsContainer.scrollPosition ? this._tabbrowserTabs.pinnedTabsContainer.scrollPosition
: this._tabbrowserTabs.arrowScrollbox.scrollPosition, : this._tabbrowserTabs.arrowScrollbox.scrollPosition,
screenX: event.screenX, screenX: event.screenX,
@@ -1300,6 +1321,7 @@ @@ -1309,6 +1330,7 @@
if (tabStripItemElement.hasAttribute("dragtarget")) { if (tabStripItemElement.hasAttribute("dragtarget")) {
return; return;
} }
@@ -237,7 +237,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
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);
@@ -1666,23 +1688,6 @@ @@ -1675,23 +1697,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 +261,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
// 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 (
@@ -1731,7 +1736,6 @@ @@ -1740,7 +1745,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 +269,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
item.removeAttribute("multiselected-move-together"); item.removeAttribute("multiselected-move-together");
} }
} }
@@ -2578,7 +2582,6 @@ @@ -2587,7 +2591,6 @@
tab.style.top = ""; tab.style.top = "";
tab.style.maxWidth = ""; tab.style.maxWidth = "";
tab.style.pointerEvents = ""; tab.style.pointerEvents = "";
@@ -277,7 +277,7 @@ index b93a8fcc8b76ed888524959cbe7d6865fe830f2f..fa192837d06e28bb847acbbd462ad322
tab.removeAttribute("small-stack"); tab.removeAttribute("small-stack");
tab.removeAttribute("big-stack"); tab.removeAttribute("big-stack");
} }
@@ -2587,11 +2590,9 @@ @@ -2596,11 +2599,9 @@
)) { )) {
label.style.width = ""; label.style.width = "";
label.style.maxWidth = ""; label.style.maxWidth = "";

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
index 2e02bad1a7c89b4c3b5aee1e14c13bb953a64eb6..3ac8d2facb224ae39d2199f2c5ec08b77e0c1dfd 100644 index b9381999a77ecacdb95c69494ac8972e9f13d14d..a210b53bb46373f8bab532a00b25301d645641cd 100644
--- a/browser/components/tabbrowser/content/tab.js --- a/browser/components/tabbrowser/content/tab.js
+++ b/browser/components/tabbrowser/content/tab.js +++ b/browser/components/tabbrowser/content/tab.js
@@ -21,6 +21,7 @@ @@ -21,6 +21,7 @@
@@ -140,7 +140,16 @@ index 2e02bad1a7c89b4c3b5aee1e14c13bb953a64eb6..3ac8d2facb224ae39d2199f2c5ec08b7
event.target.classList.contains("tab-icon-overlay") || event.target.classList.contains("tab-icon-overlay") ||
event.target.classList.contains("tab-audio-button") event.target.classList.contains("tab-audio-button")
) { ) {
@@ -594,6 +629,10 @@ @@ -572,7 +607,7 @@
}
} else if (
event.altKey &&
- Services.prefs.getBoolPref("browser.tabs.splitView.enabled", false)
+ true
) {
eventMaySelectTab = false;
} else if (!this.selected && this.multiselected) {
@@ -597,6 +632,10 @@
this.style.MozUserFocus = ""; this.style.MozUserFocus = "";
} }
@@ -151,7 +160,7 @@ index 2e02bad1a7c89b4c3b5aee1e14c13bb953a64eb6..3ac8d2facb224ae39d2199f2c5ec08b7
on_click(event) { on_click(event) {
if (event.button != 0) { if (event.button != 0) {
return; return;
@@ -617,14 +656,23 @@ @@ -620,14 +659,31 @@
trigger: "alt_click", trigger: "alt_click",
}); });
} }
@@ -159,9 +168,17 @@ index 2e02bad1a7c89b4c3b5aee1e14c13bb953a64eb6..3ac8d2facb224ae39d2199f2c5ec08b7
+ !event.target.classList.contains("tab-close-button") && + !event.target.classList.contains("tab-close-button") &&
+ !event.target.classList.contains("tab-icon-overlay") && + !event.target.classList.contains("tab-icon-overlay") &&
+ !event.target.classList.contains("tab-audio-button") && + !event.target.classList.contains("tab-audio-button") &&
+ !this.splitView + Services.prefs.getBoolPref("zen.splitView.enable-tab-click-split", false)
+ ) { + ) {
+ gZenViewSplitter.contextSplitTabs(this); + if (!this.splitView) {
+ gZenViewSplitter.contextSplitTabs(this);
+ } else {
+ gBrowser.selectedTab = this;
+ gZenViewSplitter.removeTabFromGroup(this, undefined, {
+ forUnsplit: true,
+ changeTab: false
+ });
+ }
+ } + }
return; return;
} }
@@ -176,7 +193,7 @@ index 2e02bad1a7c89b4c3b5aee1e14c13bb953a64eb6..3ac8d2facb224ae39d2199f2c5ec08b7
gBrowser.multiSelectedTabsCount > 0 && gBrowser.multiSelectedTabsCount > 0 &&
!event.target.classList.contains("tab-close-button") && !event.target.classList.contains("tab-close-button") &&
!event.target.classList.contains("tab-icon-overlay") && !event.target.classList.contains("tab-icon-overlay") &&
@@ -636,8 +684,9 @@ @@ -639,8 +695,9 @@
} }
if ( if (
@@ -188,7 +205,7 @@ index 2e02bad1a7c89b4c3b5aee1e14c13bb953a64eb6..3ac8d2facb224ae39d2199f2c5ec08b7
) { ) {
if (this.activeMediaBlocked) { if (this.activeMediaBlocked) {
if (this.multiselected) { if (this.multiselected) {
@@ -655,7 +704,7 @@ @@ -658,7 +715,7 @@
return; return;
} }
@@ -197,7 +214,7 @@ index 2e02bad1a7c89b4c3b5aee1e14c13bb953a64eb6..3ac8d2facb224ae39d2199f2c5ec08b7
if (this.multiselected) { if (this.multiselected) {
gBrowser.removeMultiSelectedTabs( gBrowser.removeMultiSelectedTabs(
lazy.TabMetrics.userTriggeredContext( lazy.TabMetrics.userTriggeredContext(
@@ -675,6 +724,14 @@ @@ -678,6 +735,14 @@
// (see tabbrowser-tabs 'click' handler). // (see tabbrowser-tabs 'click' handler).
gBrowser.tabContainer._blockDblClick = true; gBrowser.tabContainer._blockDblClick = true;
} }
@@ -212,7 +229,7 @@ index 2e02bad1a7c89b4c3b5aee1e14c13bb953a64eb6..3ac8d2facb224ae39d2199f2c5ec08b7
} }
on_dblclick(event) { on_dblclick(event) {
@@ -698,6 +755,8 @@ @@ -701,6 +766,8 @@
animate: true, animate: true,
triggeringEvent: event, triggeringEvent: event,
}); });

View File

@@ -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 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff606d98f1e 100644 index 43fb79a3060e20f671ae6ffc26350c7abf497702..146b1559b8430773bd4ec173a8f4fe88f4eec282 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
@@ -413,6 +413,7 @@ @@ -502,6 +502,7 @@
* @type {MozBrowser[]} * @type {MozBrowser[]}
*/ */
get splitViewBrowsers() { get splitViewBrowsers() {
@@ -10,7 +10,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
const browsers = []; const browsers = [];
if (this.#activeSplitView) { if (this.#activeSplitView) {
for (const tab of this.#activeSplitView.tabs) { for (const tab of this.#activeSplitView.tabs) {
@@ -486,15 +487,66 @@ @@ -575,15 +576,66 @@
return this.tabContainer.visibleTabs; return this.tabContainer.visibleTabs;
} }
@@ -79,7 +79,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
set selectedTab(val) { set selectedTab(val) {
if ( if (
gSharedTabWarning.willShowSharedTabWarning(val) || gSharedTabWarning.willShowSharedTabWarning(val) ||
@@ -570,6 +622,10 @@ @@ -659,6 +711,10 @@
userContextId = parseInt(tabArgument.getAttribute("usercontextid"), 10); userContextId = parseInt(tabArgument.getAttribute("usercontextid"), 10);
} }
@@ -90,7 +90,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
if (tabArgument && tabArgument.linkedBrowser) { if (tabArgument && tabArgument.linkedBrowser) {
remoteType = tabArgument.linkedBrowser.remoteType; remoteType = tabArgument.linkedBrowser.remoteType;
initialBrowsingContextGroupId = initialBrowsingContextGroupId =
@@ -662,6 +718,8 @@ @@ -751,6 +807,8 @@
this.tabpanels.appendChild(panel); this.tabpanels.appendChild(panel);
let tab = this.tabs[0]; let tab = this.tabs[0];
@@ -99,7 +99,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
tab.linkedPanel = uniqueId; tab.linkedPanel = uniqueId;
this._selectedTab = tab; this._selectedTab = tab;
this._selectedBrowser = browser; this._selectedBrowser = browser;
@@ -1032,13 +1090,18 @@ @@ -1121,13 +1179,18 @@
} }
this.showTab(aTab); this.showTab(aTab);
@@ -119,7 +119,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
aTab.setAttribute("pinned", "true"); aTab.setAttribute("pinned", "true");
this._updateTabBarForPinnedTabs(); this._updateTabBarForPinnedTabs();
@@ -1051,11 +1114,19 @@ @@ -1140,11 +1203,19 @@
} }
this.#handleTabMove(aTab, () => { this.#handleTabMove(aTab, () => {
@@ -140,7 +140,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
}); });
aTab.style.marginInlineStart = ""; aTab.style.marginInlineStart = "";
@@ -1232,6 +1303,9 @@ @@ -1321,6 +1392,9 @@
let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"]; let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"];
@@ -150,7 +150,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
if ( if (
aIconURL && aIconURL &&
!LOCAL_PROTOCOLS.some(protocol => aIconURL.startsWith(protocol)) !LOCAL_PROTOCOLS.some(protocol => aIconURL.startsWith(protocol))
@@ -1241,6 +1315,9 @@ @@ -1330,6 +1404,9 @@
); );
return; return;
} }
@@ -160,7 +160,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
let browser = this.getBrowserForTab(aTab); let browser = this.getBrowserForTab(aTab);
browser.mIconURL = aIconURL; browser.mIconURL = aIconURL;
@@ -1563,7 +1640,6 @@ @@ -1652,7 +1729,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) {
@@ -168,7 +168,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} }
let lastRelatedTab = this._lastRelatedTabMap.get(oldTab); let lastRelatedTab = this._lastRelatedTabMap.get(oldTab);
@@ -1654,6 +1730,7 @@ @@ -1743,6 +1819,7 @@
if (!this._previewMode) { if (!this._previewMode) {
newTab.recordTimeFromUnloadToReload(); newTab.recordTimeFromUnloadToReload();
newTab.updateLastAccessed(); newTab.updateLastAccessed();
@@ -176,7 +176,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
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.ownerGlobal == BrowserWindowTracker.getTopWindow()) { if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) {
@@ -1868,6 +1945,9 @@ @@ -1957,6 +2034,9 @@
} }
let activeEl = document.activeElement; let activeEl = document.activeElement;
@@ -186,7 +186,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
// 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();
@@ -1906,7 +1986,7 @@ @@ -1995,7 +2075,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.
@@ -195,7 +195,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
let selectURL = () => { let selectURL = () => {
if (this._asyncTabSwitching) { if (this._asyncTabSwitching) {
// Set _awaitingSetURI flag to suppress popup notification // Set _awaitingSetURI flag to suppress popup notification
@@ -2194,7 +2274,12 @@ @@ -2283,7 +2363,12 @@
return this._setTabLabel(aTab, aLabel); return this._setTabLabel(aTab, aLabel);
} }
@@ -206,10 +206,10 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
+ } + }
+ aLabel = (typeof aTab.zenStaticLabel === "string" && aTab.zenStaticLabel) ? aTab.zenStaticLabel : aLabel; + aLabel = (typeof aTab.zenStaticLabel === "string" && aTab.zenStaticLabel) ? aTab.zenStaticLabel : aLabel;
+ gZenPinnedTabManager.onTabLabelChanged(aTab); + gZenPinnedTabManager.onTabLabelChanged(aTab);
if (!aLabel || aLabel.includes("about:reader?")) { if (!aLabel || (isURL && /^about:reader\?url=/.test(aLabel))) {
return false; return false;
} }
@@ -2319,7 +2404,7 @@ @@ -2408,7 +2493,7 @@
newIndex = this.selectedTab._tPos + 1; newIndex = this.selectedTab._tPos + 1;
} }
@@ -218,7 +218,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
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"
@@ -2599,6 +2684,7 @@ @@ -2685,6 +2770,7 @@
uriIsAboutBlank, uriIsAboutBlank,
userContextId, userContextId,
skipLoad, skipLoad,
@@ -226,7 +226,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} = {}) { } = {}) {
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
@@ -2672,8 +2758,7 @@ @@ -2758,8 +2844,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);
} }
@@ -236,7 +236,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
b.setAttribute("transparent", "true"); b.setAttribute("transparent", "true");
} }
@@ -2843,7 +2928,7 @@ @@ -2929,7 +3014,7 @@
let panel = this.getPanel(browser); let panel = this.getPanel(browser);
let uniqueId = this._generateUniquePanelID(); let uniqueId = this._generateUniquePanelID();
@@ -245,7 +245,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
aTab.linkedPanel = uniqueId; aTab.linkedPanel = uniqueId;
// Inject the <browser> into the DOM if necessary. // Inject the <browser> into the DOM if necessary.
@@ -2903,8 +2988,8 @@ @@ -2989,8 +3074,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) {
@@ -256,7 +256,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} else { } else {
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1; aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
} }
@@ -3089,7 +3174,6 @@ @@ -3175,7 +3260,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,
@@ -264,7 +264,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
focusUrlBar: true, focusUrlBar: true,
}); });
resolve(this.selectedBrowser); resolve(this.selectedBrowser);
@@ -3199,6 +3283,9 @@ @@ -3285,6 +3369,9 @@
schemelessInput, schemelessInput,
hasValidUserGestureActivation = false, hasValidUserGestureActivation = false,
textDirectiveUserActivation = false, textDirectiveUserActivation = false,
@@ -274,7 +274,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} = {} } = {}
) { ) {
// all callers of addTab that pass a params object need to pass // all callers of addTab that pass a params object need to pass
@@ -3209,10 +3296,17 @@ @@ -3295,10 +3382,17 @@
); );
} }
@@ -292,7 +292,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
// 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;
@@ -3220,6 +3314,7 @@ @@ -3306,6 +3400,7 @@
if (this.selectedTab.owner) { if (this.selectedTab.owner) {
this.selectedTab.owner = null; this.selectedTab.owner = null;
} }
@@ -300,7 +300,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
// 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
@@ -3272,6 +3367,22 @@ @@ -3358,6 +3453,22 @@
noInitialLabel, noInitialLabel,
skipBackgroundNotify, skipBackgroundNotify,
}); });
@@ -323,7 +323,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
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, {
@@ -3280,6 +3391,7 @@ @@ -3366,6 +3477,7 @@
ownerTab, ownerTab,
openerTab, openerTab,
pinned, pinned,
@@ -331,7 +331,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
bulkOrderedOpen, bulkOrderedOpen,
tabGroup: tabGroup ?? openerTab?.group, tabGroup: tabGroup ?? openerTab?.group,
}); });
@@ -3298,6 +3410,7 @@ @@ -3384,6 +3496,7 @@
openWindowInfo, openWindowInfo,
skipLoad, skipLoad,
triggeringRemoteType, triggeringRemoteType,
@@ -339,7 +339,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
})); }));
if (focusUrlBar) { if (focusUrlBar) {
@@ -3422,6 +3535,12 @@ @@ -3508,6 +3621,12 @@
} }
} }
@@ -352,7 +352,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
// Additionally send pinned tab events // Additionally send pinned tab events
if (pinned) { if (pinned) {
this.#notifyPinnedStatus(t); this.#notifyPinnedStatus(t);
@@ -3729,6 +3848,7 @@ @@ -3750,6 +3869,7 @@
isAdoptingGroup = false, isAdoptingGroup = false,
isUserTriggered = false, isUserTriggered = false,
telemetryUserCreateSource = "unknown", telemetryUserCreateSource = "unknown",
@@ -360,7 +360,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} = {} } = {}
) { ) {
if ( if (
@@ -3739,9 +3859,6 @@ @@ -3760,9 +3880,6 @@
!this.isSplitViewWrapper(tabOrSplitView) !this.isSplitViewWrapper(tabOrSplitView)
) )
) { ) {
@@ -370,7 +370,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} }
if (!color) { if (!color) {
@@ -3762,9 +3879,14 @@ @@ -3783,9 +3900,14 @@
label, label,
isAdoptingGroup isAdoptingGroup
); );
@@ -387,7 +387,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
); );
group.addTabs(tabsAndSplitViews); group.addTabs(tabsAndSplitViews);
@@ -3885,7 +4007,7 @@ @@ -3906,7 +4028,7 @@
} }
this.#handleTabMove(tab, () => this.#handleTabMove(tab, () =>
@@ -396,7 +396,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
); );
} }
@@ -3969,6 +4091,7 @@ @@ -3990,6 +4112,7 @@
color: group.color, color: group.color,
insertBefore: newTabs[0], insertBefore: newTabs[0],
isAdoptingGroup: true, isAdoptingGroup: true,
@@ -404,7 +404,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
}); });
} }
@@ -4179,6 +4302,7 @@ @@ -4200,6 +4323,7 @@
openWindowInfo, openWindowInfo,
skipLoad, skipLoad,
triggeringRemoteType, triggeringRemoteType,
@@ -412,7 +412,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} }
) { ) {
// 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
@@ -4248,6 +4372,7 @@ @@ -4269,6 +4393,7 @@
openWindowInfo, openWindowInfo,
name, name,
skipLoad, skipLoad,
@@ -420,7 +420,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
}); });
} }
@@ -4461,9 +4586,9 @@ @@ -4482,9 +4607,9 @@
} }
// Add a new tab if needed. // Add a new tab if needed.
@@ -432,7 +432,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
let url = "about:blank"; let url = "about:blank";
if (tabData.entries?.length) { if (tabData.entries?.length) {
@@ -4500,8 +4625,10 @@ @@ -4521,8 +4646,10 @@
insertTab: false, insertTab: false,
skipLoad: true, skipLoad: true,
preferredRemoteType, preferredRemoteType,
@@ -444,7 +444,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
if (select) { if (select) {
tabToSelect = tab; tabToSelect = tab;
} }
@@ -4523,7 +4650,8 @@ @@ -4544,7 +4671,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, {});
@@ -454,7 +454,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
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
@@ -4543,7 +4671,10 @@ @@ -4564,7 +4692,10 @@
tabGroup.stateData.id, tabGroup.stateData.id,
tabGroup.stateData.color, tabGroup.stateData.color,
tabGroup.stateData.collapsed, tabGroup.stateData.collapsed,
@@ -466,7 +466,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
); );
tabsFragment.appendChild(tabGroup.node); tabsFragment.appendChild(tabGroup.node);
} }
@@ -4598,9 +4729,23 @@ @@ -4619,9 +4750,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;
@@ -482,15 +482,13 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
+ gZenWorkspaces._initialTab._shouldRemove = true; + gZenWorkspaces._initialTab._shouldRemove = true;
+ } + }
+ } + }
+ } else {
+ gZenWorkspaces._keepSelectedTab = !window.__isNewZenWindow;
} }
+ delete window.__isNewZenWindow; + delete window.__isNewZenWindow;
+ this._hasAlreadyInitializedZenSessionStore = true; + this._hasAlreadyInitializedZenSessionStore = true;
if (tabs.length > 1 || !tabs[0].selected) { if (tabs.length > 1 || !tabs[0].selected) {
this._updateTabsAfterInsert(); this._updateTabsAfterInsert();
@@ -4791,11 +4936,14 @@ @@ -4812,11 +4955,14 @@
if (ownerTab) { if (ownerTab) {
tab.owner = ownerTab; tab.owner = ownerTab;
} }
@@ -506,7 +504,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
if ( if (
!bulkOrderedOpen && !bulkOrderedOpen &&
((openerTab && ((openerTab &&
@@ -4807,7 +4955,7 @@ @@ -4828,7 +4974,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;
@@ -515,7 +513,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
tabGroup = previousTab.group; tabGroup = previousTab.group;
} }
if ( if (
@@ -4823,7 +4971,7 @@ @@ -4844,7 +4990,7 @@
previousTab.splitview previousTab.splitview
) + 1; ) + 1;
} else if (previousTab.visible) { } else if (previousTab.visible) {
@@ -524,7 +522,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} else if (previousTab == FirefoxViewHandler.tab) { } else if (previousTab == FirefoxViewHandler.tab) {
elementIndex = 0; elementIndex = 0;
} }
@@ -4851,14 +4999,14 @@ @@ -4872,14 +5018,14 @@
} }
// Ensure index is within bounds. // Ensure index is within bounds.
if (tab.pinned) { if (tab.pinned) {
@@ -543,7 +541,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
if (pinned && !itemAfter?.pinned) { if (pinned && !itemAfter?.pinned) {
itemAfter = null; itemAfter = null;
@@ -4875,7 +5023,7 @@ @@ -4896,7 +5042,7 @@
this.tabContainer._invalidateCachedTabs(); this.tabContainer._invalidateCachedTabs();
@@ -552,7 +550,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
if ( if (
(this.isTab(itemAfter) && itemAfter.group == tabGroup) || (this.isTab(itemAfter) && itemAfter.group == tabGroup) ||
this.isSplitViewWrapper(itemAfter) this.isSplitViewWrapper(itemAfter)
@@ -4906,7 +5054,11 @@ @@ -4927,7 +5073,11 @@
const tabContainer = pinned const tabContainer = pinned
? this.tabContainer.pinnedTabsContainer ? this.tabContainer.pinnedTabsContainer
: this.tabContainer; : this.tabContainer;
@@ -564,7 +562,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} }
if (tab.group?.collapsed) { if (tab.group?.collapsed) {
@@ -4921,6 +5073,7 @@ @@ -4942,6 +5092,7 @@
if (pinned) { if (pinned) {
this._updateTabBarForPinnedTabs(); this._updateTabBarForPinnedTabs();
} }
@@ -572,7 +570,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
TabBarVisibility.update(); TabBarVisibility.update();
} }
@@ -5469,6 +5622,7 @@ @@ -5490,6 +5641,7 @@
telemetrySource, telemetrySource,
} = {} } = {}
) { ) {
@@ -580,7 +578,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
// 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 (
@@ -5558,6 +5712,7 @@ @@ -5579,6 +5731,7 @@
if (lastToClose) { if (lastToClose) {
this.removeTab(lastToClose, aParams); this.removeTab(lastToClose, aParams);
} }
@@ -588,7 +586,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} }
@@ -5603,6 +5758,14 @@ @@ -5624,6 +5777,14 @@
return; return;
} }
@@ -603,7 +601,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
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
@@ -5610,6 +5773,9 @@ @@ -5631,6 +5792,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);
@@ -613,7 +611,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
if ( if (
!this._beginRemoveTab(aTab, { !this._beginRemoveTab(aTab, {
closeWindowFastpath: true, closeWindowFastpath: true,
@@ -5621,13 +5787,14 @@ @@ -5642,13 +5806,14 @@
telemetrySource, telemetrySource,
}) })
) { ) {
@@ -629,7 +627,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
let lockTabSizing = let lockTabSizing =
!this.tabContainer.verticalMode && !this.tabContainer.verticalMode &&
!aTab.pinned && !aTab.pinned &&
@@ -5658,7 +5825,13 @@ @@ -5679,7 +5844,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;
@@ -644,7 +642,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
return; return;
} }
@@ -5792,7 +5965,7 @@ @@ -5813,7 +5984,7 @@
closeWindowWithLastTab != null closeWindowWithLastTab != null
? closeWindowWithLastTab ? closeWindowWithLastTab
: !window.toolbar.visible || : !window.toolbar.visible ||
@@ -653,7 +651,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
if (closeWindow) { if (closeWindow) {
// We've already called beforeunload on all the relevant tabs if we get here, // We've already called beforeunload on all the relevant tabs if we get here,
@@ -5816,6 +5989,7 @@ @@ -5837,6 +6008,7 @@
newTab = true; newTab = true;
} }
@@ -661,7 +659,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
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.
@@ -5856,13 +6030,7 @@ @@ -5877,13 +6049,7 @@
aTab._mouseleave(); aTab._mouseleave();
if (newTab) { if (newTab) {
@@ -676,7 +674,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} else { } else {
TabBarVisibility.update(); TabBarVisibility.update();
} }
@@ -5995,6 +6163,7 @@ @@ -6016,6 +6182,7 @@
this.tabs[i]._tPos = i; this.tabs[i]._tPos = i;
} }
@@ -684,7 +682,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
if (!this._windowIsClosing) { if (!this._windowIsClosing) {
// update tab close buttons state // update tab close buttons state
this.tabContainer._updateCloseButtons(); this.tabContainer._updateCloseButtons();
@@ -6180,6 +6349,7 @@ @@ -6201,6 +6368,7 @@
memory_after: await getTotalMemoryUsage(), memory_after: await getTotalMemoryUsage(),
time_to_unload_in_ms: timeElapsed, time_to_unload_in_ms: timeElapsed,
}); });
@@ -692,7 +690,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} }
/** /**
@@ -6225,6 +6395,7 @@ @@ -6246,6 +6414,7 @@
} }
let excludeTabs = new Set(aExcludeTabs); let excludeTabs = new Set(aExcludeTabs);
@@ -700,7 +698,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
// 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.
@@ -6237,15 +6408,22 @@ @@ -6258,15 +6427,22 @@
!excludeTabs.has(aTab.owner) && !excludeTabs.has(aTab.owner) &&
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose") Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
) { ) {
@@ -725,7 +723,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
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),
@@ -6259,7 +6437,7 @@ @@ -6280,7 +6456,7 @@
} }
if (tab) { if (tab) {
@@ -734,7 +732,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} }
// 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
@@ -6280,7 +6458,7 @@ @@ -6301,7 +6477,7 @@
}); });
} }
@@ -743,7 +741,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} }
_blurTab(aTab) { _blurTab(aTab) {
@@ -6291,7 +6469,7 @@ @@ -6312,7 +6488,7 @@
* @returns {boolean} * @returns {boolean}
* False if swapping isn't permitted, true otherwise. * False if swapping isn't permitted, true otherwise.
*/ */
@@ -752,7 +750,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
// 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 (
@@ -6345,6 +6523,7 @@ @@ -6366,6 +6542,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 (
@@ -760,7 +758,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
!remoteBrowser._beginRemoveTab(aOtherTab, { !remoteBrowser._beginRemoveTab(aOtherTab, {
adoptedByTab: aOurTab, adoptedByTab: aOurTab,
closeWindowWithLastTab: true, closeWindowWithLastTab: true,
@@ -6356,7 +6535,7 @@ @@ -6377,7 +6554,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.
@@ -769,7 +767,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
if (closeWindow) { if (closeWindow) {
let win = aOtherTab.ownerGlobal; let win = aOtherTab.ownerGlobal;
win.windowUtils.suppressAnimation(true); win.windowUtils.suppressAnimation(true);
@@ -6484,11 +6663,13 @@ @@ -6511,11 +6688,13 @@
} }
// Finish tearing down the tab that's going away. // Finish tearing down the tab that's going away.
@@ -783,7 +781,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
this.setTabTitle(aOurTab); this.setTabTitle(aOurTab);
@@ -6690,10 +6871,10 @@ @@ -6717,10 +6896,10 @@
SessionStore.deleteCustomTabValue(aTab, "hiddenBy"); SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
} }
@@ -796,7 +794,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
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.
@@ -6753,7 +6934,8 @@ @@ -6780,7 +6959,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.
*/ */
@@ -806,7 +804,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
if (this.tabs.length == 1) { if (this.tabs.length == 1) {
return null; return null;
} }
@@ -6770,7 +6952,7 @@ @@ -6797,7 +6977,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);
@@ -815,7 +813,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
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}`)
@@ -6778,6 +6960,8 @@ @@ -6805,6 +6985,8 @@
openerWindow: window, openerWindow: window,
args, args,
}); });
@@ -824,7 +822,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} }
/** /**
@@ -6890,7 +7074,7 @@ @@ -6917,7 +7099,7 @@
* `true` if element is a `<tab-group>` * `true` if element is a `<tab-group>`
*/ */
isTabGroup(element) { isTabGroup(element) {
@@ -833,7 +831,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} }
/** /**
@@ -6975,8 +7159,8 @@ @@ -7002,8 +7184,8 @@
} }
// Don't allow mixing pinned and unpinned tabs. // Don't allow mixing pinned and unpinned tabs.
@@ -844,7 +842,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} else { } else {
tabIndex = Math.max(tabIndex, this.pinnedTabCount); tabIndex = Math.max(tabIndex, this.pinnedTabCount);
} }
@@ -7005,13 +7189,19 @@ @@ -7049,8 +7231,8 @@
this.#handleTabMove( this.#handleTabMove(
element, element,
() => { () => {
@@ -855,7 +853,9 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
neighbor = neighbor.group; neighbor = neighbor.group;
} }
if (neighbor?.splitview) { if (neighbor?.splitview) {
neighbor = neighbor.splitview; @@ -7061,6 +7243,12 @@
return;
}
} }
+ if (element.group?.hasAttribute("split-view-group")) { + if (element.group?.hasAttribute("split-view-group")) {
+ element = element.group; + element = element.group;
@@ -863,10 +863,10 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
+ if (element.group?.hasAttribute("split-view-group") && neighbor == element.group) { + if (element.group?.hasAttribute("split-view-group") && neighbor == element.group) {
+ return; + return;
+ } + }
let useAfter = false;
if (this.isTab(element)) { if (movingForwards && neighbor) {
useAfter = neighbor && tabIndex > element._tPos; neighbor.after(element);
@@ -7076,23 +7266,31 @@ @@ -7119,23 +7307,31 @@
#moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) { #moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) {
if (this.isTabGroupLabel(targetElement)) { if (this.isTabGroupLabel(targetElement)) {
targetElement = targetElement.group; targetElement = targetElement.group;
@@ -904,7 +904,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} 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
@@ -7105,12 +7303,35 @@ @@ -7148,12 +7344,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.
@@ -941,7 +941,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
// 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.
@@ -7119,6 +7340,7 @@ @@ -7162,6 +7381,7 @@
} }
let getContainer = () => let getContainer = () =>
@@ -949,7 +949,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
element.pinned element.pinned
? this.tabContainer.pinnedTabsContainer ? this.tabContainer.pinnedTabsContainer
: this.tabContainer; : this.tabContainer;
@@ -7127,11 +7349,15 @@ @@ -7170,11 +7390,15 @@
element, element,
() => { () => {
if (moveBefore) { if (moveBefore) {
@@ -966,7 +966,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} }
}, },
metricsContext metricsContext
@@ -7205,11 +7431,15 @@ @@ -7248,11 +7472,15 @@
* @param {TabMetricsContext} [metricsContext] * @param {TabMetricsContext} [metricsContext]
*/ */
moveTabToExistingGroup(aTab, aGroup, metricsContext) { moveTabToExistingGroup(aTab, aGroup, metricsContext) {
@@ -985,7 +985,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} }
if (aTab.group && aTab.group.id === aGroup.id) { if (aTab.group && aTab.group.id === aGroup.id) {
return; return;
@@ -7281,6 +7511,7 @@ @@ -7324,6 +7552,7 @@
let state = { let state = {
tabIndex: tab._tPos, tabIndex: tab._tPos,
@@ -993,7 +993,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
}; };
if (tab.visible) { if (tab.visible) {
state.elementIndex = tab.elementIndex; state.elementIndex = tab.elementIndex;
@@ -7312,7 +7543,7 @@ @@ -7355,7 +7584,7 @@
let changedSplitView = let changedSplitView =
previousTabState.splitViewId != currentTabState.splitViewId; previousTabState.splitViewId != currentTabState.splitViewId;
@@ -1002,7 +1002,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
tab.dispatchEvent( tab.dispatchEvent(
new CustomEvent("TabMove", { new CustomEvent("TabMove", {
bubbles: true, bubbles: true,
@@ -7354,6 +7585,10 @@ @@ -7402,6 +7631,10 @@
moveActionCallback(); moveActionCallback();
@@ -1013,7 +1013,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
// 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();
@@ -7404,7 +7639,22 @@ @@ -7452,7 +7685,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.
*/ */
@@ -1037,7 +1037,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
// 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
@@ -7447,6 +7697,8 @@ @@ -7495,6 +7743,8 @@
} }
params.skipLoad = true; params.skipLoad = true;
let newTab = this.addWebTab("about:blank", params); let newTab = this.addWebTab("about:blank", params);
@@ -1046,7 +1046,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
aTab.container.tabDragAndDrop.finishAnimateTabMove(); aTab.container.tabDragAndDrop.finishAnimateTabMove();
@@ -8149,7 +8401,7 @@ @@ -8205,7 +8455,7 @@
// preventDefault(). It will still raise the window if appropriate. // preventDefault(). It will still raise the window if appropriate.
return; return;
} }
@@ -1055,7 +1055,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
window.focus(); window.focus();
aEvent.preventDefault(); aEvent.preventDefault();
} }
@@ -8166,7 +8418,6 @@ @@ -8222,7 +8472,6 @@
on_TabGroupCollapse(aEvent) { on_TabGroupCollapse(aEvent) {
aEvent.target.tabs.forEach(tab => { aEvent.target.tabs.forEach(tab => {
@@ -1063,7 +1063,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
}); });
} }
@@ -8500,7 +8751,9 @@ @@ -8556,7 +8805,9 @@
let filter = this._tabFilters.get(tab); let filter = this._tabFilters.get(tab);
if (filter) { if (filter) {
@@ -1073,7 +1073,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
let listener = this._tabListeners.get(tab); let listener = this._tabListeners.get(tab);
if (listener) { if (listener) {
@@ -9306,6 +9559,7 @@ @@ -9359,6 +9610,7 @@
aWebProgress.isTopLevel aWebProgress.isTopLevel
) { ) {
this.mTab.setAttribute("busy", "true"); this.mTab.setAttribute("busy", "true");
@@ -1081,7 +1081,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
gBrowser._tabAttrModified(this.mTab, ["busy"]); gBrowser._tabAttrModified(this.mTab, ["busy"]);
this.mTab._notselectedsinceload = !this.mTab.selected; this.mTab._notselectedsinceload = !this.mTab.selected;
} }
@@ -9386,6 +9640,7 @@ @@ -9439,6 +9691,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 =
@@ -1089,7 +1089,7 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
!this.mBrowser.mIconURL && !this.mBrowser.mIconURL &&
!ignoreBlank && !ignoreBlank &&
!(originalLocation.spec in FAVICON_DEFAULTS); !(originalLocation.spec in FAVICON_DEFAULTS);
@@ -9560,13 +9815,6 @@ @@ -9613,13 +9866,6 @@
this.mBrowser.originalURI = aRequest.originalURI; this.mBrowser.originalURI = aRequest.originalURI;
} }
@@ -1103,11 +1103,12 @@ index 2643e1a2aa14ba5cb4a64a92e1c2dfa5f07d242f..d16fe62c8a67913dd1499b2665a22ff6
} }
let userContextId = this.mBrowser.getAttribute("usercontextid") || 0; let userContextId = this.mBrowser.getAttribute("usercontextid") || 0;
@@ -10450,7 +10698,7 @@ var TabContextMenu = { @@ -10507,7 +10753,8 @@ var TabContextMenu = {
); );
contextUnpinSelectedTabs.hidden = contextUnpinSelectedTabs.hidden =
!this.contextTab.pinned || !this.multiselected; !this.contextTab.pinned || !this.multiselected;
- -
+ gZenViewSplitter.updateContextMenuItems();
+ gZenPinnedTabManager.updatePinnedTabContextMenu(this.contextTab); + gZenPinnedTabManager.updatePinnedTabContextMenu(this.contextTab);
// Build Ask Chat items // Build Ask Chat items
TabContextMenu.GenAI.buildTabMenu( TabContextMenu.GenAI.buildTabMenu(

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js
index 65c89aab0902cb33ad33fc523d3e0b954618778e..b42298457fdd2f8df6ff202c804122ffc999d409 100644 index d1be14df27d76a191eaff05502c030fd68c46738..e9b5e90e39b594a6119081c8d707fb4a064fea9b 100644
--- a/browser/components/tabbrowser/content/tabgroup.js --- a/browser/components/tabbrowser/content/tabgroup.js
+++ b/browser/components/tabbrowser/content/tabgroup.js +++ b/browser/components/tabbrowser/content/tabgroup.js
@@ -14,11 +14,11 @@ @@ -14,11 +14,11 @@
@@ -147,7 +147,7 @@ index 65c89aab0902cb33ad33fc523d3e0b954618778e..b42298457fdd2f8df6ff202c804122ff
}); });
} }
@@ -478,13 +511,65 @@ @@ -478,13 +511,68 @@
* @returns {MozTabbrowserTab[]} * @returns {MozTabbrowserTab[]}
*/ */
get tabs() { get tabs() {
@@ -162,8 +162,9 @@ index 65c89aab0902cb33ad33fc523d3e0b954618778e..b42298457fdd2f8df6ff202c804122ff
+ tabsCollect.push(item); + tabsCollect.push(item);
+ if (gBrowser.isTabGroup(item)) { + if (gBrowser.isTabGroup(item)) {
+ tabsCollect.push(...item.tabs); + tabsCollect.push(...item.tabs);
+ } }
+ } }
- return childrenArray.filter(node => node.matches("tab"));
+ return tabsCollect.filter(node => node.matches("tab")); + return tabsCollect.filter(node => node.matches("tab"));
+ } + }
+ +
@@ -189,9 +190,8 @@ index 65c89aab0902cb33ad33fc523d3e0b954618778e..b42298457fdd2f8df6ff202c804122ff
+ result.push(labelContainer); + result.push(labelContainer);
+ } + }
+ result.push(...item.childGroupsAndTabs); + result.push(...item.childGroupsAndTabs);
} + }
} + }
- return childrenArray.filter(node => node.matches("tab"));
+ return result; + return result;
+ } + }
+ +
@@ -210,6 +210,9 @@ index 65c89aab0902cb33ad33fc523d3e0b954618778e..b42298457fdd2f8df6ff202c804122ff
+ return false; + return false;
+ } + }
+ } + }
+ if (this.pinned && gZenWorkspaces.activeWorkspaceElement?.hasCollapsedPinnedTabs) {
+ return false;
+ }
+ return true; + return true;
+ } + }
+ +
@@ -218,7 +221,7 @@ index 65c89aab0902cb33ad33fc523d3e0b954618778e..b42298457fdd2f8df6ff202c804122ff
} }
/** /**
@@ -592,7 +677,6 @@ @@ -592,7 +680,6 @@
); );
} else { } else {
if (tabOrSplitView.pinned) { if (tabOrSplitView.pinned) {
@@ -226,7 +229,7 @@ index 65c89aab0902cb33ad33fc523d3e0b954618778e..b42298457fdd2f8df6ff202c804122ff
} }
let tabToMove = let tabToMove =
this.ownerGlobal === tabOrSplitView.ownerGlobal this.ownerGlobal === tabOrSplitView.ownerGlobal
@@ -661,7 +745,7 @@ @@ -661,7 +748,7 @@
*/ */
on_click(event) { on_click(event) {
let isToggleElement = let isToggleElement =
@@ -235,7 +238,7 @@ index 65c89aab0902cb33ad33fc523d3e0b954618778e..b42298457fdd2f8df6ff202c804122ff
event.target === this.#overflowCountLabel; event.target === this.#overflowCountLabel;
if (isToggleElement && event.button === 0) { if (isToggleElement && event.button === 0) {
event.preventDefault(); event.preventDefault();
@@ -740,5 +824,6 @@ @@ -740,5 +827,6 @@
} }
} }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/UrlbarController.sys.mjs b/browser/components/urlbar/UrlbarController.sys.mjs diff --git a/browser/components/urlbar/UrlbarController.sys.mjs b/browser/components/urlbar/UrlbarController.sys.mjs
index da0a9c73118886d535d574810de8141cb96e54ba..104062e2c0142bd08a4498e7ca282fc46cda09be 100644 index bb0189fbfc91b3fc3b399b077a35f7b60a3f985f..c4dd60c6fb6d7eb2288a033708836f9983530e2c 100644
--- a/browser/components/urlbar/UrlbarController.sys.mjs --- a/browser/components/urlbar/UrlbarController.sys.mjs
+++ b/browser/components/urlbar/UrlbarController.sys.mjs +++ b/browser/components/urlbar/UrlbarController.sys.mjs
@@ -304,7 +304,6 @@ export class UrlbarController { @@ -305,7 +305,6 @@ export class UrlbarController {
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 da0a9c73118886d535d574810de8141cb96e54ba..104062e2c0142bd08a4498e7ca282fc4
this.view.isOpen && this.view.isOpen &&
event.ctrlKey && event.ctrlKey &&
(event.key == "n" || event.key == "p") (event.key == "n" || event.key == "p")
@@ -455,6 +454,8 @@ export class UrlbarController { @@ -456,6 +455,8 @@ export class UrlbarController {
}); });
} }
event.preventDefault(); event.preventDefault();

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs diff --git a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
index 136c66310f37bda3229b82eef32a4a22a716a0b0..4ca15850002cefda0484179839280e58eaf42cfa 100644 index 16041c10755adced9d665539796737a9f55712de..2232bdcc02e20dbb384ca0529a8bd8ce73dc6284 100644
--- a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs --- a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
+++ b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs +++ b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
@@ -837,11 +837,16 @@ class MuxerUnifiedComplete extends UrlbarMuxer { @@ -837,11 +837,16 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
@@ -19,7 +19,7 @@ index 136c66310f37bda3229b82eef32a4a22a716a0b0..4ca15850002cefda0484179839280e58
// Discard the result if a tab-to-search result was added already. // Discard the result if a tab-to-search result was added already.
if (!state.canAddTabToSearch) { if (!state.canAddTabToSearch) {
return false; return false;
@@ -1490,7 +1495,9 @@ class MuxerUnifiedComplete extends UrlbarMuxer { @@ -1491,7 +1496,9 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
usedLimits.maxResultCount++; usedLimits.maxResultCount++;
} }

View File

@@ -1,12 +1,21 @@
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 2d21248256c6c2bfb8dac958133c10e3251ef564..6645211ef09518b41cb737e3186fbd0162ecf700 100644 index 2d21248256c6c2bfb8dac958133c10e3251ef564..f788bd10ec2c08e4b27b77cd3bb0489fb04e8b7a 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
@@ -799,6 +799,7 @@ function makeDefaultResultGroups({ showSearchSuggestionsFirst }) { @@ -462,6 +462,7 @@ const PREF_URLBAR_DEFAULTS = /** @type {PreferenceDefinition[]} */ ([
["shortcuts.tabs", true],
["shortcuts.history", true],
["shortcuts.actions", true],
+ ["shortcuts.workspaces", true],
// Boolean to determine if the providers defined in `exposureResults`
// should be displayed in search results. This can be set by a
@@ -799,6 +800,8 @@ function makeDefaultResultGroups({ showSearchSuggestionsFirst }) {
*/ */
let rootGroup = { let rootGroup = {
children: [ children: [
+ { children: [{ group: lazy.UrlbarUtils.RESULT_GROUP.ZEN_ACTION }] }, + { children: [{ group: lazy.UrlbarUtils.RESULT_GROUP.ZEN_ACTION }] },
+ { children: [{ group: lazy.UrlbarUtils.RESULT_GROUP.ZEN_WORKSPACE }] },
// heuristic // heuristic
{ {
maxResultCount: 1, maxResultCount: 1,

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs diff --git a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
index 08455d8d5da233639ccebc0e77c0810fb4f674c3..78d0e875978b568b79646489c28b125a44ea79fa 100644 index d9048a3b8b1f18745c01e40e12f529db3cfaa79e..1ba124a710fcf734ea11f7ccfd4f2f6ebe53e7d2 100644
--- a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs --- a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
+++ b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs +++ b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
@@ -913,6 +913,7 @@ export class Query { @@ -913,6 +913,7 @@ export class Query {
@@ -10,3 +10,26 @@ index 08455d8d5da233639ccebc0e77c0810fb4f674c3..78d0e875978b568b79646489c28b125a
(!this.context.trimmedSearchString || (!this.context.trimmedSearchString ||
(!this.context.searchMode.engineName && !result.autofill)) (!this.context.searchMode.engineName && !result.autofill))
) { ) {
@@ -1043,6 +1044,7 @@ function updateSourcesIfEmpty(context) {
lazy.UrlbarTokenizer.TYPE.RESTRICT_TITLE,
lazy.UrlbarTokenizer.TYPE.RESTRICT_URL,
lazy.UrlbarTokenizer.TYPE.RESTRICT_ACTION,
+ lazy.UrlbarTokenizer.TYPE.RESTRICT_WORKSPACE,
].includes(t.type)
);
@@ -1100,6 +1102,14 @@ function updateSourcesIfEmpty(context) {
acceptedSources.push(source);
}
break;
+ case lazy.UrlbarUtils.RESULT_SOURCE.WORKSPACES:
+ if (
+ restrictTokenType === lazy.UrlbarTokenizer.TYPE.RESTRICT_WORKSPACE ||
+ !restrictTokenType
+ ) {
+ acceptedSources.push(source);
+ }
+ break;
case lazy.UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL:
case lazy.UrlbarUtils.RESULT_SOURCE.ADDON:
default:

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarResult.sys.mjs b/browser/components/urlbar/UrlbarResult.sys.mjs diff --git a/browser/components/urlbar/UrlbarResult.sys.mjs b/browser/components/urlbar/UrlbarResult.sys.mjs
index 65b8fb67b51c8959fe1d47b98efbb2bca591eafc..c52c50a87b37ca1c885c55b36e5beccc8dd7c5fb 100644 index 21f7938f76375e7230f9509e4932cafa4d0e57f2..ab96b160b6c65da3bf267d9fe2f1f35c7507466e 100644
--- a/browser/components/urlbar/UrlbarResult.sys.mjs --- a/browser/components/urlbar/UrlbarResult.sys.mjs
+++ b/browser/components/urlbar/UrlbarResult.sys.mjs +++ b/browser/components/urlbar/UrlbarResult.sys.mjs
@@ -181,6 +181,10 @@ export class UrlbarResult { @@ -181,6 +181,10 @@ export class UrlbarResult {

View File

@@ -0,0 +1,28 @@
diff --git a/browser/components/urlbar/UrlbarTokenizer.sys.mjs b/browser/components/urlbar/UrlbarTokenizer.sys.mjs
index d4af0ee5138a69139b94d898fb07e2345172f025..f750aae3f9f0a849ca009784510575b2b7119e6d 100644
--- a/browser/components/urlbar/UrlbarTokenizer.sys.mjs
+++ b/browser/components/urlbar/UrlbarTokenizer.sys.mjs
@@ -66,6 +66,7 @@ export var UrlbarTokenizer = {
// `looksLikeOrigin()` returned `LOOKS_LIKE_ORIGIN.OTHER` for this token. It
// may or may not be an origin.
POSSIBLE_ORIGIN_BUT_SEARCH_ALLOWED: 12,
+ RESTRICT_WORKSPACE: 13,
}),
// The special characters below can be typed into the urlbar to restrict
@@ -83,6 +84,7 @@ export var UrlbarTokenizer = {
TITLE: "#",
URL: "$",
ACTION: ">",
+ WORKSPACE: "`",
}),
// The keys of characters in RESTRICT that will enter search mode.
@@ -97,6 +99,7 @@ export var UrlbarTokenizer = {
if (lazy.UrlbarPrefs.get("scotchBonnet.enableOverride")) {
keys.push(this.RESTRICT.ACTION);
}
+ keys.push(this.RESTRICT.WORKSPACE);
return new Set(keys);
},

View File

@@ -1,29 +1,50 @@
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 64afd613f454edd7786fcc1e2f307a582e4d5f51..b4af9cc2fbddba2c5229e8ffee7b9c0c06c3e1d0 100644 index 62367c5a77614e5973791abacd068b39e0f3ab34..c930943b5bfa8a2e6dee43f0ec7a10274a7c7638 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
@@ -85,6 +85,7 @@ export var UrlbarUtils = { @@ -109,6 +109,8 @@ export var UrlbarUtils = {
RESTRICT_SEARCH_KEYWORD: "restrictSearchKeyword", RESTRICT_SEARCH_KEYWORD: "restrictSearchKeyword",
SUGGESTED_INDEX: "suggestedIndex", SUGGESTED_INDEX: "suggestedIndex",
TAIL_SUGGESTION: "tailSuggestion", TAIL_SUGGESTION: "tailSuggestion",
+ ZEN_ACTION: "zenAction", + ZEN_ACTION: "zenAction",
+ ZEN_WORKSPACE: "zenWorkspace",
}), }),
// Defines provider types. // Defines provider types.
@@ -146,6 +147,7 @@ export var UrlbarUtils = { @@ -170,6 +172,8 @@ export var UrlbarUtils = {
OTHER_NETWORK: 6, OTHER_NETWORK: 6,
ADDON: 7, ADDON: 7,
ACTIONS: 8, ACTIONS: 8,
+ ZEN_ACTIONS: 9, + ZEN_ACTIONS: 9,
+ WORKSPACES: 10,
}), }),
// Per-result exposure telemetry. // Per-result exposure telemetry.
@@ -587,6 +589,8 @@ export var UrlbarUtils = { @@ -319,6 +323,14 @@ export var UrlbarUtils = {
telemetryLabel: "actions",
uiLabel: "urlbar-searchmode-actions2",
},
+ {
+ source: this.RESULT_SOURCE.WORKSPACES,
+ restrict: lazy.UrlbarTokenizer.RESTRICT.WORKSPACE,
+ icon: "chrome://browser/skin/zen-icons/selectable/layers.svg",
+ pref: "shortcuts.workspaces",
+ telemetryLabel: "workspaces",
+ uiLabel: "urlbar-search-mode-workspaces",
+ },
]);
},
@@ -611,6 +623,12 @@ export var UrlbarUtils = {
return this.RESULT_GROUP.HEURISTIC_FALLBACK; return this.RESULT_GROUP.HEURISTIC_FALLBACK;
case "UrlbarProviderHistoryUrlHeuristic": case "UrlbarProviderHistoryUrlHeuristic":
return this.RESULT_GROUP.HEURISTIC_HISTORY_URL; return this.RESULT_GROUP.HEURISTIC_HISTORY_URL;
+ case "ZenUrlbarProviderGlobalActions": + case "ZenUrlbarProviderGlobalActions":
+ return this.RESULT_GROUP.ZEN_ACTION; + if (result.source == this.RESULT_SOURCE.WORKSPACES) {
+ return this.RESULT_GROUP.ZEN_WORKSPACE;
+ } else {
+ return this.RESULT_GROUP.ZEN_ACTION;
+ }
case "UrlbarProviderOmnibox": case "UrlbarProviderOmnibox":
return this.RESULT_GROUP.HEURISTIC_OMNIBOX; return this.RESULT_GROUP.HEURISTIC_OMNIBOX;
case "UrlbarProviderRestrictKeywordsAutofill": case "UrlbarProviderRestrictKeywordsAutofill":

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs diff --git a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
index f28d277764158566bc9406ce0e6160d92d346a63..82dd5f8568ec1b12e87676e5c2b243824628b5af 100644 index 344a9a5b969e679040a650dad311c7413f52bbbd..24111cef5e476253f4e69c4d99f6f220bfd8cd7e 100644
--- a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs --- a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
+++ b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs +++ b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
@@ -77,7 +77,7 @@ export class UrlbarValueFormatter { @@ -77,7 +77,7 @@ export class UrlbarValueFormatter {
@@ -11,7 +11,26 @@ index f28d277764158566bc9406ce0e6160d92d346a63..82dd5f8568ec1b12e87676e5c2b24382
}); });
} }
@@ -371,7 +371,7 @@ export class UrlbarValueFormatter { @@ -105,6 +105,18 @@ export class UrlbarValueFormatter {
}
#ensureFormattedHostVisible(urlMetaData) {
+ // Make sure the domain is visible even with long subdomains when the single sidebar is being used
+ if (
+ this.#window.gZenVerticalTabsManager?._hasSetSingleToolbar
+ && Services.prefs.getBoolPref("zen.urlbar.show-domain-only-in-sidebar")
+ ) {
+ // also compare the difference in width from this and the urlbar input, to avoid scrolling
+ // when urlbar buttons are showing.
+ const urlbarInputWidth = this.#window.windowUtils.getBoundsWithoutFlushing(this.#window.gURLBar).width;
+ const inputFieldWidth = this.#window.windowUtils.getBoundsWithoutFlushing(this.#inputField).width;
+ this.#inputField.scrollLeft = (this.#inputField.scrollLeftMax - (urlbarInputWidth - inputFieldWidth) );
+ return;
+ }
// Make sure the host is always visible. Since it is aligned on
// the first strong directional character, we set scrollLeft
// appropriately to ensure the domain stays visible in case of an
@@ -371,7 +383,7 @@ export class UrlbarValueFormatter {
* @returns {boolean} * @returns {boolean}
* True if formatting was applied and false if not. * True if formatting was applied and false if not.
*/ */
@@ -20,7 +39,7 @@ index f28d277764158566bc9406ce0e6160d92d346a63..82dd5f8568ec1b12e87676e5c2b24382
let urlMetaData = this.#getUrlMetaData(); let urlMetaData = this.#getUrlMetaData();
if (!urlMetaData) { if (!urlMetaData) {
return false; return false;
@@ -640,6 +640,7 @@ export class UrlbarValueFormatter { @@ -640,6 +652,7 @@ export class UrlbarValueFormatter {
this.#window.requestAnimationFrame(() => { this.#window.requestAnimationFrame(() => {
if (instance == this.#resizeInstance) { if (instance == this.#resizeInstance) {
this.#ensureFormattedHostVisible(); this.#ensureFormattedHostVisible();

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs
index b665adb1a1ce8bbae8df4cbea6c3248c3e4fb431..7a73907957d38caba5b650749abf80a01b51559d 100644 index b665adb1a1ce8bbae8df4cbea6c3248c3e4fb431..1de7f9461b8ccbd4680b917e6dd5ba3c02f69a94 100644
--- a/browser/components/urlbar/UrlbarView.sys.mjs --- a/browser/components/urlbar/UrlbarView.sys.mjs
+++ b/browser/components/urlbar/UrlbarView.sys.mjs +++ b/browser/components/urlbar/UrlbarView.sys.mjs
@@ -640,7 +640,7 @@ export class UrlbarView { @@ -640,7 +640,7 @@ export class UrlbarView {
@@ -11,7 +11,18 @@ index b665adb1a1ce8bbae8df4cbea6c3248c3e4fb431..7a73907957d38caba5b650749abf80a0
// 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.
@@ -2988,6 +2988,8 @@ export class UrlbarView { @@ -777,10 +777,6 @@ export class UrlbarView {
}
// If search mode isn't active, close the view.
- if (!this.input.searchMode) {
- this.close();
- return;
- }
// Search mode is active. If the one-offs should be shown, make sure they
// are enabled and show the view.
@@ -2988,6 +2984,8 @@ export class UrlbarView {
if (row?.hasAttribute("row-selectable")) { if (row?.hasAttribute("row-selectable")) {
row?.toggleAttribute("selected", true); row?.toggleAttribute("selected", true);
} }
@@ -20,7 +31,7 @@ index b665adb1a1ce8bbae8df4cbea6c3248c3e4fb431..7a73907957d38caba5b650749abf80a0
if (element != row) { if (element != row) {
row?.toggleAttribute("descendant-selected", true); row?.toggleAttribute("descendant-selected", true);
} }
@@ -3477,7 +3479,7 @@ export class UrlbarView { @@ -3477,7 +3475,7 @@ export class UrlbarView {
} }
#enableOrDisableRowWrap() { #enableOrDisableRowWrap() {

View File

@@ -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 b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f5c811a82 100644 index d6615ec5a29f3e3327ac4171f3fc5d9a69bd09fe..e1128b0d7f5accfd48af27f99e3b2e6463b45191 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
@@ -90,6 +90,13 @@ const lazy = XPCOMUtils.declareLazy({ @@ -98,6 +98,13 @@ const lazy = XPCOMUtils.declareLazy({
logger: () => lazy.UrlbarUtils.getLogger({ prefix: "Input" }), logger: () => lazy.UrlbarUtils.getLogger({ prefix: "Input" }),
}); });
@@ -16,7 +16,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
const UNLIMITED_MAX_RESULTS = 99; const UNLIMITED_MAX_RESULTS = 99;
let getBoundsWithoutFlushing = element => let getBoundsWithoutFlushing = element =>
@@ -708,7 +715,16 @@ export class UrlbarInput extends HTMLElement { @@ -743,7 +750,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 b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
this._suppressPrimaryAdjustment = false; this._suppressPrimaryAdjustment = false;
} }
@@ -782,6 +798,10 @@ export class UrlbarInput extends HTMLElement { @@ -817,6 +833,10 @@ ${
hideSearchTerms = false, hideSearchTerms = false,
isSameDocument = false, isSameDocument = false,
} = {}) { } = {}) {
@@ -44,7 +44,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
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"
@@ -1071,8 +1091,16 @@ export class UrlbarInput extends HTMLElement { @@ -1106,8 +1126,16 @@ ${
return; return;
} }
} }
@@ -62,7 +62,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
} }
/** /**
@@ -1496,7 +1524,11 @@ export class UrlbarInput extends HTMLElement { @@ -1551,7 +1579,11 @@ ${
} }
if (!this.#providesSearchMode(result)) { if (!this.#providesSearchMode(result)) {
@@ -75,7 +75,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
} }
if (isCanonized) { if (isCanonized) {
@@ -2696,6 +2728,42 @@ export class UrlbarInput extends HTMLElement { @@ -2858,6 +2890,42 @@ ${
await this.#updateLayoutBreakoutDimensions(); await this.#updateLayoutBreakoutDimensions();
} }
@@ -118,7 +118,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
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
@@ -2710,6 +2778,13 @@ export class UrlbarInput extends HTMLElement { @@ -2872,6 +2940,13 @@ ${
this.setAttribute("breakout-extend", "true"); this.setAttribute("breakout-extend", "true");
@@ -132,7 +132,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
// 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")) {
@@ -2729,6 +2804,27 @@ export class UrlbarInput extends HTMLElement { @@ -2891,6 +2966,27 @@ ${
return; return;
} }
@@ -160,7 +160,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
this.removeAttribute("breakout-extend"); this.removeAttribute("breakout-extend");
this.#updateTextboxPosition(); this.#updateTextboxPosition();
} }
@@ -2759,7 +2855,7 @@ export class UrlbarInput extends HTMLElement { @@ -2921,7 +3017,7 @@ ${
forceUnifiedSearchButtonAvailable = false forceUnifiedSearchButtonAvailable = false
) { ) {
let prevState = this.getAttribute("pageproxystate"); let prevState = this.getAttribute("pageproxystate");
@@ -169,7 +169,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
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);
@@ -3031,10 +3127,12 @@ export class UrlbarInput extends HTMLElement { @@ -3198,10 +3294,12 @@ ${
return; return;
} }
this.style.top = px( this.style.top = px(
@@ -182,7 +182,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
); );
} }
@@ -3093,9 +3191,10 @@ export class UrlbarInput extends HTMLElement { @@ -3260,9 +3358,10 @@ ${
return; return;
} }
@@ -194,7 +194,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
); );
this.style.setProperty( this.style.setProperty(
"--urlbar-height", "--urlbar-height",
@@ -3597,6 +3696,7 @@ export class UrlbarInput extends HTMLElement { @@ -3768,6 +3867,7 @@ ${
} }
_toggleActionOverride(event) { _toggleActionOverride(event) {
@@ -202,7 +202,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
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 ||
@@ -3709,8 +3809,8 @@ export class UrlbarInput extends HTMLElement { @@ -3880,8 +3980,8 @@ ${
if (!this.#isAddressbar) { if (!this.#isAddressbar) {
return val; return val;
} }
@@ -213,7 +213,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
: 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.
@@ -4006,6 +4106,7 @@ export class UrlbarInput extends HTMLElement { @@ -4180,6 +4280,7 @@ ${
resultDetails = null, resultDetails = null,
browser = this.window.gBrowser.selectedBrowser browser = this.window.gBrowser.selectedBrowser
) { ) {
@@ -221,7 +221,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
if (this.#isAddressbar) { if (this.#isAddressbar) {
this.#prepareAddressbarLoad( this.#prepareAddressbarLoad(
url, url,
@@ -4117,6 +4218,10 @@ export class UrlbarInput extends HTMLElement { @@ -4291,6 +4392,10 @@ ${
} }
reuseEmpty = true; reuseEmpty = true;
} }
@@ -232,7 +232,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
if ( if (
where == "tab" && where == "tab" &&
reuseEmpty && reuseEmpty &&
@@ -4124,6 +4229,9 @@ export class UrlbarInput extends HTMLElement { @@ -4298,6 +4403,9 @@ ${
) { ) {
where = "current"; where = "current";
} }
@@ -242,7 +242,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
return where; return where;
} }
@@ -4378,6 +4486,7 @@ export class UrlbarInput extends HTMLElement { @@ -4552,6 +4660,7 @@ ${
this.setResultForCurrentValue(null); this.setResultForCurrentValue(null);
this.handleCommand(); this.handleCommand();
this.controller.clearLastQueryContextCache(); this.controller.clearLastQueryContextCache();
@@ -250,7 +250,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
this._suppressStartQuery = false; this._suppressStartQuery = false;
}); });
@@ -4385,7 +4494,6 @@ export class UrlbarInput extends HTMLElement { @@ -4559,7 +4668,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.
@@ -258,7 +258,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
let controller = let controller =
this.document.commandDispatcher.getControllerForCommand("cmd_paste"); this.document.commandDispatcher.getControllerForCommand("cmd_paste");
@@ -4541,7 +4649,11 @@ export class UrlbarInput extends HTMLElement { @@ -4715,7 +4823,11 @@ ${
if (!engineName && !source && !this.hasAttribute("searchmode")) { if (!engineName && !source && !this.hasAttribute("searchmode")) {
return; return;
} }
@@ -271,7 +271,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
if (this._searchModeIndicatorTitle) { if (this._searchModeIndicatorTitle) {
this._searchModeIndicatorTitle.textContent = ""; this._searchModeIndicatorTitle.textContent = "";
this._searchModeIndicatorTitle.removeAttribute("data-l10n-id"); this._searchModeIndicatorTitle.removeAttribute("data-l10n-id");
@@ -4851,6 +4963,7 @@ export class UrlbarInput extends HTMLElement { @@ -5031,6 +5143,7 @@ ${
this.document.l10n.setAttributes( this.document.l10n.setAttributes(
this.inputField, this.inputField,
@@ -279,7 +279,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
l10nId, l10nId,
l10nId == "urlbar-placeholder-with-name" l10nId == "urlbar-placeholder-with-name"
? { name: engineName } ? { name: engineName }
@@ -4964,6 +5077,11 @@ export class UrlbarInput extends HTMLElement { @@ -5156,6 +5269,11 @@ ${
} }
_on_click(event) { _on_click(event) {
@@ -291,7 +291,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
switch (event.target) { switch (event.target) {
case this.inputField: case this.inputField:
case this._inputContainer: case this._inputContainer:
@@ -5042,7 +5160,7 @@ export class UrlbarInput extends HTMLElement { @@ -5242,7 +5360,7 @@ ${
} }
} }
@@ -300,7 +300,7 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
this.view.autoOpen({ event }); this.view.autoOpen({ event });
} else { } else {
if (this._untrimOnFocusAfterKeydown) { if (this._untrimOnFocusAfterKeydown) {
@@ -5082,9 +5200,16 @@ export class UrlbarInput extends HTMLElement { @@ -5282,9 +5400,16 @@ ${
} }
_on_mousedown(event) { _on_mousedown(event) {
@@ -318,27 +318,27 @@ index b23244f9d3278918b016bb3fcab19687bc2e292a..ade1f031bbb68202a37e6c9d3071a73f
if ( if (
event.composedTarget != this.inputField && event.composedTarget != this.inputField &&
event.composedTarget != this._inputContainer event.composedTarget != this._inputContainer
@@ -5094,6 +5219,10 @@ export class UrlbarInput extends HTMLElement { @@ -5294,6 +5419,10 @@ ${
this.focusedViaMousedown = !this.focused; this.focusedViaMousedown = !this.focused;
this._preventClickSelectsAll = this.focused; this.#preventClickSelectsAll = this.focused;
+ if (isProbablyFloating) { + if (isProbablyFloating) {
+ this.focusedViaMousedown = !this.hasAttribute("breakout-extend"); + this.focusedViaMousedown = !this.hasAttribute("breakout-extend");
+ this._preventClickSelectsAll = this.hasAttribute("breakout-extend"); + this.#preventClickSelectsAll = this.hasAttribute("breakout-extend");
+ } + }
// 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().
@@ -5129,7 +5258,7 @@ export class UrlbarInput extends HTMLElement { @@ -5329,7 +5458,7 @@ ${
} }
// Don't close the view when clicking on a tab; we may want to keep the // Don't close the view when clicking on a tab; we may want to keep the
// view open on tab switch, and the TabSelect event arrived earlier. // view open on tab switch, and the TabSelect event arrived earlier.
- if (event.target.closest("tab")) { - if (event.target.closest?.("tab")) {
+ if (event.target.closest("tab") || event.target.closest("#tabs-newtab-button")) { + if (event.target.closest?.("tab") || event.target.closest?.("#tabs-newtab-button")) {
break; break;
} }
@@ -5411,7 +5540,7 @@ export class UrlbarInput extends HTMLElement { @@ -5636,7 +5765,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 =

View File

@@ -0,0 +1,14 @@
diff --git a/browser/components/urlbar/content/enUS-searchFeatures.ftl b/browser/components/urlbar/content/enUS-searchFeatures.ftl
index e405f0f8844eea7081e4302cc35ccd8d8124aa90..90baec46971c6bd3ec738a338834af0351872d14 100644
--- a/browser/components/urlbar/content/enUS-searchFeatures.ftl
+++ b/browser/components/urlbar/content/enUS-searchFeatures.ftl
@@ -2,6 +2,9 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+urlbar-search-mode-workspaces = Spaces
+urlbar-search-mode-workspaces-en = Spaces
+
### These strings are related to the Firefox Suggest feature. Firefox Suggest
### shows recommended and sponsored third-party results in the address bar
### panel. It also shows headings/labels above different groups of results. For

View File

@@ -1,8 +1,8 @@
diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
index daf4e1dca839a6e882edf598bd82f13f1bf4eadd..ebb584e058c0a15f5a5fa0bd80bdce42636c9ba0 100644 index edb61ebece92f53d6edc8522c0dfea01159121dc..fd57751828254ebf9b05af13c26afa55ffa7ed00 100644
--- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs --- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs
+++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs +++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
@@ -287,7 +287,7 @@ export const PREFS_CONFIG = new Map([ @@ -347,7 +347,7 @@ export const PREFS_CONFIG = new Map([
"showSponsoredTopSites", "showSponsoredTopSites",
{ {
title: "Show sponsored top sites", title: "Show sponsored top sites",

View File

@@ -1,17 +1,8 @@
diff --git a/browser/installer/windows/nsis/defines.nsi.in b/browser/installer/windows/nsis/defines.nsi.in diff --git a/browser/installer/windows/nsis/defines.nsi.in b/browser/installer/windows/nsis/defines.nsi.in
index c6bb41695d70d17e5691e0d1856b79f7111d5026..8a9393a79a60aca23f80fc989fe2ae333ba54e39 100644 index a9bf2d67ce522054442be664bda1434c63609ea1..16e03732d78207ce602066a4bccc0d2c2385ca91 100644
--- a/browser/installer/windows/nsis/defines.nsi.in --- a/browser/installer/windows/nsis/defines.nsi.in
+++ b/browser/installer/windows/nsis/defines.nsi.in +++ b/browser/installer/windows/nsis/defines.nsi.in
@@ -90,7 +90,7 @@ @@ -147,7 +147,7 @@ VIAddVersionKey "ProductVersion" "${AppVersion}"
!define BETA_UPDATE_CHANNEL
!endif
-!define BaseURLStubPing "http://download-stats.mozilla.org/stub"
+!define BaseURLStubPing ""
# ARCH is used when it is necessary to differentiate the x64 registry keys from
# the x86 registry keys (e.g. the uninstall registry key).
@@ -152,7 +152,7 @@ VIAddVersionKey "ProductVersion" "${AppVersion}"
!define APPROXIMATE_REQUIRED_SPACE_MB "145" !define APPROXIMATE_REQUIRED_SPACE_MB "145"
# Constants for parts of the telemetry submission URL # Constants for parts of the telemetry submission URL

View File

@@ -1,20 +1,20 @@
diff --git a/browser/installer/windows/nsis/installer.nsi b/browser/installer/windows/nsis/installer.nsi diff --git a/browser/installer/windows/nsis/installer.nsi b/browser/installer/windows/nsis/installer.nsi
index b3459f8233b2509744e27bfe33884c6a92164e36..76b71e0882381f8f6becaf88bc4e3cc56f8d8ad4 100755 index 36fbee18edd138036c23ee77806f47cd10efce55..f70893700c54bdbc6d6fc5b760fd9a3654eb39e7 100755
--- a/browser/installer/windows/nsis/installer.nsi --- a/browser/installer/windows/nsis/installer.nsi
+++ b/browser/installer/windows/nsis/installer.nsi +++ b/browser/installer/windows/nsis/installer.nsi
@@ -842,7 +842,7 @@ Section "-InstallEndCleanup" @@ -845,7 +845,7 @@ Section "-InstallEndCleanup"
; When we're using the GUI, .onGUIEnd sends the ping, but of course that isn't ; When we're using the GUI, .onGUIEnd sends the ping, but of course that isn't
; invoked when we're running silently. ; invoked when we're running silently.
${If} ${Silent} ${If} ${Silent}
- Call SendPing - Call SendPingIfApplicable
+ ; Call SendPing + ; Call SendPingIfApplicable
${EndIf} ${EndIf}
SectionEnd SectionEnd
@@ -1978,5 +1978,5 @@ FunctionEnd @@ -1800,5 +1800,5 @@ FunctionEnd
Function .onGUIEnd Function .onGUIEnd
${OnEndCommon} ${OnEndCommon}
- Call SendPing - Call SendPingIfApplicable
+ ; Call SendPing + ; Call SendPingIfApplicable
FunctionEnd FunctionEnd

View File

@@ -1,10 +1,10 @@
diff --git a/browser/installer/windows/nsis/uninstaller.nsi b/browser/installer/windows/nsis/uninstaller.nsi diff --git a/browser/installer/windows/nsis/uninstaller.nsi b/browser/installer/windows/nsis/uninstaller.nsi
old mode 100755 old mode 100755
new mode 100644 new mode 100644
index a193a94e4893a8b07111d83ebdd2a6488a98be7a..ab7d84abbf6d9442cbc299194c4ffb74c5785723 index 0e2f7fa874b865b2a354c5ca612c5714f6ac5b69..0b1182279336972705bc3ff47e69353b997eb1bd
--- a/browser/installer/windows/nsis/uninstaller.nsi --- a/browser/installer/windows/nsis/uninstaller.nsi
+++ b/browser/installer/windows/nsis/uninstaller.nsi +++ b/browser/installer/windows/nsis/uninstaller.nsi
@@ -515,6 +515,7 @@ Section "Uninstall" @@ -516,6 +516,7 @@ Section "Uninstall"
${un.RegCleanFileHandler} ".svg" "FirefoxHTML-$AppUserModelID" ${un.RegCleanFileHandler} ".svg" "FirefoxHTML-$AppUserModelID"
${un.RegCleanFileHandler} ".webp" "FirefoxHTML-$AppUserModelID" ${un.RegCleanFileHandler} ".webp" "FirefoxHTML-$AppUserModelID"
${un.RegCleanFileHandler} ".avif" "FirefoxHTML-$AppUserModelID" ${un.RegCleanFileHandler} ".avif" "FirefoxHTML-$AppUserModelID"

View File

@@ -1,8 +1,8 @@
diff --git a/browser/modules/BrowserDOMWindow.sys.mjs b/browser/modules/BrowserDOMWindow.sys.mjs diff --git a/browser/modules/BrowserDOMWindow.sys.mjs b/browser/modules/BrowserDOMWindow.sys.mjs
index e951af5edb966718ee20422c8e46d868c177cd1c..cd41305a4da8e675417eca7df5cd4a1ecee90c3d 100644 index 29c5b1510696cfdd993388957115709b1a149d7c..6616edbc5f992ffdf3df65028cd26c17ef13f315 100644
--- a/browser/modules/BrowserDOMWindow.sys.mjs --- a/browser/modules/BrowserDOMWindow.sys.mjs
+++ b/browser/modules/BrowserDOMWindow.sys.mjs +++ b/browser/modules/BrowserDOMWindow.sys.mjs
@@ -437,7 +437,7 @@ export class BrowserDOMWindow { @@ -436,7 +436,7 @@ export class BrowserDOMWindow {
// Passing a null-URI to only create the content window, // Passing a null-URI to only create the content window,
// and pass true for aSkipLoad to prevent loading of // and pass true for aSkipLoad to prevent loading of
// about:blank // about:blank
@@ -11,7 +11,7 @@ index e951af5edb966718ee20422c8e46d868c177cd1c..cd41305a4da8e675417eca7df5cd4a1e
null, null,
aParams, aParams,
aWhere, aWhere,
@@ -445,6 +445,10 @@ export class BrowserDOMWindow { @@ -444,6 +444,10 @@ export class BrowserDOMWindow {
aName, aName,
true true
); );

View File

@@ -1,5 +1,5 @@
diff --git a/browser/modules/URILoadingHelper.sys.mjs b/browser/modules/URILoadingHelper.sys.mjs diff --git a/browser/modules/URILoadingHelper.sys.mjs b/browser/modules/URILoadingHelper.sys.mjs
index a005dbdf84609622ef8054f73f78c0c290e76125..d5bf6fb51c9af5e60f69a73612ee91598080730a 100644 index ed6b9fda700b2b4b35836a77a4da953377a72f4b..22acedcf1006f994ec8b6bf8991b4202e12a6f39 100644
--- a/browser/modules/URILoadingHelper.sys.mjs --- a/browser/modules/URILoadingHelper.sys.mjs
+++ b/browser/modules/URILoadingHelper.sys.mjs +++ b/browser/modules/URILoadingHelper.sys.mjs
@@ -224,6 +224,7 @@ function openInWindow(url, params, sourceWindow) { @@ -224,6 +224,7 @@ function openInWindow(url, params, sourceWindow) {
@@ -28,8 +28,8 @@ index a005dbdf84609622ef8054f73f78c0c290e76125..d5bf6fb51c9af5e60f69a73612ee9159
for (let i = 0; i < browsers.length; i++) { for (let i = 0; i < browsers.length; i++) {
let browser = browsers[i]; let browser = browsers[i];
let browserCompare = cleanURL( let browserCompare = cleanURL(
@@ -1030,7 +1031,7 @@ export const URILoadingHelper = { @@ -1026,7 +1027,7 @@ export const URILoadingHelper = {
); aSplitView.replaceTab(tabToReplace, tabToMove);
aSplitView.ownerGlobal.focus(); aSplitView.ownerGlobal.focus();
} else { } else {
- aWindow.gBrowser.tabContainer.selectedIndex = i; - aWindow.gBrowser.tabContainer.selectedIndex = i;

View File

@@ -1,12 +1,12 @@
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 b82fa7229ad637a08563c06fa2c2abdf99998d7c..b5ee3aa9679244222a0e9eed4be54a41ec6a11f9 100644 index a99181fc249a7086e9886d86d85e8650595a0a0c..dd59739078080738d28bf59a1bb26fc0783bcac6 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) { @media (prefers-color-scheme: light) {
- --urlbar-box-bgcolor: #fafafa; - --urlbar-box-background-color: #fafafa;
} }
} }
} }

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/osx/browser.css b/browser/themes/osx/browser.css diff --git a/browser/themes/osx/browser.css b/browser/themes/osx/browser.css
index 8fe643be3f60da00760775c918ba3228fbd2b610..d634c09685065b4096a74a93e0373e4942fd2a29 100644 index 92162e2893f7c8aea92c354f3a12cccf48f7576e..3189d75c8e47f3f76ddc1227d3cffee6b09402eb 100644
--- a/browser/themes/osx/browser.css --- a/browser/themes/osx/browser.css
+++ b/browser/themes/osx/browser.css +++ b/browser/themes/osx/browser.css
@@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@

View File

@@ -1,8 +1,8 @@
diff --git a/browser/themes/shared/browser-shared.css b/browser/themes/shared/browser-shared.css diff --git a/browser/themes/shared/browser-shared.css b/browser/themes/shared/browser-shared.css
index d1b11a65e527cf7c13f42b3f980f2f09592c5e53..44fb86b570c69f7d7003d3949e330e08722fbbb8 100644 index 70571d8f32d60d10e59e33cb83e38229de026fc6..8e420ed6f6838499553c55265a1e35f5c3801d35 100644
--- a/browser/themes/shared/browser-shared.css --- a/browser/themes/shared/browser-shared.css
+++ b/browser/themes/shared/browser-shared.css +++ b/browser/themes/shared/browser-shared.css
@@ -250,13 +250,13 @@ body { @@ -253,13 +253,13 @@ body {
@media (-moz-platform: macos) and (not (-moz-mac-rtl)) { @media (-moz-platform: macos) and (not (-moz-mac-rtl)) {
&:-moz-locale-dir(ltr) { &:-moz-locale-dir(ltr) {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/identity-block/identity-block.css b/browser/themes/shared/identity-block/identity-block.css diff --git a/browser/themes/shared/identity-block/identity-block.css b/browser/themes/shared/identity-block/identity-block.css
index c867b8602c5b3bdce335b932a3a1cd0c538e4ad6..2dc1cf17603bcdd9b8d81a6f46ed8b6ed75b2763 100644 index 72b6673094b80e9c109ae6f125cd25c3e00260ef..d116ab9671b02bbb05eddec8318e1f2835c29f32 100644
--- a/browser/themes/shared/identity-block/identity-block.css --- a/browser/themes/shared/identity-block/identity-block.css
+++ b/browser/themes/shared/identity-block/identity-block.css +++ b/browser/themes/shared/identity-block/identity-block.css
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
@@ -17,7 +17,7 @@ index c867b8602c5b3bdce335b932a3a1cd0c538e4ad6..2dc1cf17603bcdd9b8d81a6f46ed8b6e
-#identity-box[pageproxystate="valid"]:is(.notSecureText, .chromeUI, .extensionPage) > .identity-box-button, -#identity-box[pageproxystate="valid"]:is(.notSecureText, .chromeUI, .extensionPage) > .identity-box-button,
-#urlbar-label-box { -#urlbar-label-box {
- background-color: var(--urlbar-box-bgcolor); - background-color: var(--urlbar-box-background-color);
- color: var(--urlbar-box-text-color); - color: var(--urlbar-box-text-color);
- padding-inline: 8px; - padding-inline: 8px;
- border-radius: var(--urlbar-inner-border-radius); - border-radius: var(--urlbar-inner-border-radius);

View File

@@ -1,8 +1,8 @@
diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn
index 3a12a7a33c33cec463b3d38647bdf647827784f8..4844da4b56b3172b333f5c5eb31fcd74f43fd0b0 100644 index e59fb7f095161348e442626997bbb6dc4e1e999e..488c540b07e5ce73048cebec0d75dd33f9dcabd4 100644
--- a/browser/themes/shared/jar.inc.mn --- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn +++ b/browser/themes/shared/jar.inc.mn
@@ -334,3 +334,5 @@ @@ -343,3 +343,5 @@
skin/classic/browser/illustrations/market-opt-in.svg (../shared/illustrations/market-opt-in.svg) skin/classic/browser/illustrations/market-opt-in.svg (../shared/illustrations/market-opt-in.svg)
skin/classic/browser/illustrations/yelpRealtime-opt-in.svg (../shared/illustrations/yelpRealtime-opt-in.svg) skin/classic/browser/illustrations/yelpRealtime-opt-in.svg (../shared/illustrations/yelpRealtime-opt-in.svg)

View File

@@ -6,10 +6,6 @@
@namespace html "http://www.w3.org/1999/xhtml"; @namespace html "http://www.w3.org/1999/xhtml";
:root {
--in-content-box-background: var(--zen-colors-tertiary) !important;
}
.pane-container { .pane-container {
margin: auto; margin: auto;
} }
@@ -58,10 +54,6 @@ groupbox h2 {
font-size: 15px; font-size: 15px;
} }
#categories {
margin: 0 !important;
}
#categories > .category { #categories > .category {
margin-left: 0 !important; margin-left: 0 !important;
min-height: 40px !important; min-height: 40px !important;

View File

@@ -1,5 +1,5 @@
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 13403bf438be18b5bcc9f3d497c94636b5fb5f6f..0505582a7efa212813cf39835c12d34d4d38eb4e 100644 index 05c1261f0085794e5e81dc8c1ef24fe1a9c5ec82..d0a1938b629338184bc462b4da1e10e1a4d6a4e7 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
@@ -85,7 +85,6 @@ @@ -85,7 +85,6 @@
@@ -10,7 +10,7 @@ index 13403bf438be18b5bcc9f3d497c94636b5fb5f6f..0505582a7efa212813cf39835c12d34d
/* stylelint-disable-next-line media-query-no-invalid */ /* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("sidebar.revamp") { @media -moz-pref("sidebar.revamp") {
@@ -141,7 +140,6 @@ @@ -146,7 +145,6 @@
} }
browser:is([blank], [pendingpaint]) { browser:is([blank], [pendingpaint]) {
@@ -18,7 +18,7 @@ index 13403bf438be18b5bcc9f3d497c94636b5fb5f6f..0505582a7efa212813cf39835c12d34d
} }
/* Exclude browsers with smartwindow-content attribute which inherit /* Exclude browsers with smartwindow-content attribute which inherit
@@ -427,7 +425,7 @@ split-view-footer { @@ -440,7 +438,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,7 +27,7 @@ index 13403bf438be18b5bcc9f3d497c94636b5fb5f6f..0505582a7efa212813cf39835c12d34d
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 */
@@ -594,7 +592,7 @@ split-view-footer { @@ -607,7 +605,7 @@ split-view-footer {
.dialogOverlay[topmost="true"], .dialogOverlay[topmost="true"],
#window-modal-dialog::backdrop { #window-modal-dialog::backdrop {

View File

@@ -1,29 +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 203b546933842f4b0134188fda020c4db4dcd0d2..0d67deabac2984574636248a16e58d1669f2e1a4 100644 index 2ce8b135dcf087a2e2cb75c3417be8c9ba4178e6..3c297614afd323e210ebf0018d4aca22c000e105 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
@@ -24,7 +24,7 @@ @@ -25,7 +25,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-inner-inline-margin: var(--space-medium); --tab-pinned-min-width-expanded: calc(var(--tab-pinned-expanded-background-width) + 2 * var(--tab-pinned-margin-inline-expanded));
--tab-inline-padding: 8px; --tab-note-icon-end-margin: var(--dimension-4);
@@ -38,9 +38,9 @@ @@ -276,7 +276,6 @@ tab-split-view-wrapper[dragtarget] {
--tab-block-margin: 4px;
--tab-icon-end-margin: 5.5px;
--tab-label-line-height: 1.7;
- --tab-loading-fill: #0a84ff;
+ --tab-loading-fill: var(--zen-primary-color);
--tab-hover-background-color: color-mix(in srgb, currentColor 11%, transparent);
- --tab-selected-textcolor: var(--toolbar-color);
+ --tab-selected-textcolor: currentColor;
--tab-selected-bgcolor: var(--toolbar-bgcolor);
--tab-selected-color-scheme: var(--toolbar-color-scheme);
&[lwt-tab-selected="light"] {
@@ -298,7 +298,6 @@ tab-split-view-wrapper[dragtarget] {
} }
:root:not([uidensity="compact"], [sidebar-expand-on-hover]) &[pinned] { :root:not([uidensity="compact"], [sidebar-expand-on-hover]) &[pinned] {
@@ -31,7 +19,7 @@ index 203b546933842f4b0134188fda020c4db4dcd0d2..0d67deabac2984574636248a16e58d16
} }
&:is([selected], [multiselected]) { &:is([selected], [multiselected]) {
@@ -312,6 +311,7 @@ tab-split-view-wrapper[dragtarget] { @@ -290,6 +289,7 @@ tab-split-view-wrapper[dragtarget] {
border-radius: inherit; border-radius: inherit;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
@@ -39,7 +27,7 @@ index 203b546933842f4b0134188fda020c4db4dcd0d2..0d67deabac2984574636248a16e58d16
&::before { &::before {
position: absolute; position: absolute;
@@ -511,10 +511,6 @@ tab-split-view-wrapper[dragtarget] { @@ -489,10 +489,6 @@ tab-split-view-wrapper[dragtarget] {
/* stylelint-disable-next-line media-query-no-invalid */ /* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("browser.tabs.fadeOutUnloadedTabs") { @media -moz-pref("browser.tabs.fadeOutUnloadedTabs") {
&[pending] { &[pending] {
@@ -50,7 +38,7 @@ index 203b546933842f4b0134188fda020c4db4dcd0d2..0d67deabac2984574636248a16e58d16
opacity: 0.5; opacity: 0.5;
/* Fade the favicon out */ /* Fade the favicon out */
transition-property: filter, opacity; transition-property: filter, opacity;
@@ -531,10 +527,6 @@ tab-split-view-wrapper[dragtarget] { @@ -509,10 +505,6 @@ tab-split-view-wrapper[dragtarget] {
/* stylelint-disable-next-line media-query-no-invalid */ /* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("browser.tabs.fadeOutExplicitlyUnloadedTabs") { @media -moz-pref("browser.tabs.fadeOutExplicitlyUnloadedTabs") {
&[pending][discarded] { &[pending][discarded] {
@@ -61,7 +49,7 @@ index 203b546933842f4b0134188fda020c4db4dcd0d2..0d67deabac2984574636248a16e58d16
opacity: 0.5; opacity: 0.5;
/* Fade the favicon out */ /* Fade the favicon out */
transition-property: filter, opacity; transition-property: filter, opacity;
@@ -603,7 +595,7 @@ tab-split-view-wrapper[dragtarget] { @@ -581,7 +573,7 @@ tab-split-view-wrapper[dragtarget] {
z-index: 1; /* Overlay tab title */ z-index: 1; /* Overlay tab title */
#tabbrowser-tabs[orient="vertical"] & { #tabbrowser-tabs[orient="vertical"] & {
@@ -70,7 +58,7 @@ index 203b546933842f4b0134188fda020c4db4dcd0d2..0d67deabac2984574636248a16e58d16
} }
&[crashed] { &[crashed] {
@@ -611,7 +603,7 @@ tab-split-view-wrapper[dragtarget] { @@ -589,7 +581,7 @@ tab-split-view-wrapper[dragtarget] {
} }
#tabbrowser-tabs[orient="vertical"]:not([expanded]) &:not([crashed]), #tabbrowser-tabs[orient="vertical"]:not([expanded]) &:not([crashed]),
@@ -79,7 +67,7 @@ index 203b546933842f4b0134188fda020c4db4dcd0d2..0d67deabac2984574636248a16e58d16
&[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");
} }
@@ -666,7 +658,7 @@ tab-split-view-wrapper[dragtarget] { @@ -644,7 +636,7 @@ tab-split-view-wrapper[dragtarget] {
} }
} }
@@ -88,7 +76,7 @@ index 203b546933842f4b0134188fda020c4db4dcd0d2..0d67deabac2984574636248a16e58d16
&[crashed] { &[crashed] {
display: revert; display: revert;
} }
@@ -832,7 +824,7 @@ tab-split-view-wrapper[dragtarget] { @@ -810,7 +802,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]),
@@ -97,7 +85,7 @@ index 203b546933842f4b0134188fda020c4db4dcd0d2..0d67deabac2984574636248a16e58d16
&:is([soundplaying], [muted], [activemedia-blocked]) { &:is([soundplaying], [muted], [activemedia-blocked]) {
display: flex; display: flex;
} }
@@ -1048,7 +1040,6 @@ tab-split-view-wrapper[dragtarget] { @@ -1026,7 +1018,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]) {
@@ -105,16 +93,16 @@ index 203b546933842f4b0134188fda020c4db4dcd0d2..0d67deabac2984574636248a16e58d16
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;
@@ -1614,7 +1605,7 @@ tab-group { @@ -1635,7 +1626,7 @@ tab-group {
} }
#tabbrowser-tabs[orient="vertical"][expanded] { #tabbrowser-tabs[orient="vertical"][expanded] {
- tab-group > :is(.tab-group-label-container, .tabbrowser-tab), - tab-group > :is(.tab-group-label-container, .tabbrowser-tab),
+ tab-group > :is(.tab-group-label-container, .tab-group-container, .tabbrowser-tab), + tab-group > :is(.tab-group-label-container, .tab-group-container, .tabbrowser-tab),
&[movingtab][movingtab-addToGroup]:not([movingtab-group], [movingtab-ungroup]) tab-group > .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);
} }
@@ -2089,7 +2080,7 @@ tab-group { @@ -2128,7 +2119,7 @@ tab-group {
} }
} }
@@ -123,7 +111,7 @@ index 203b546933842f4b0134188fda020c4db4dcd0d2..0d67deabac2984574636248a16e58d16
#vertical-tabs-newtab-button { #vertical-tabs-newtab-button {
appearance: none; appearance: none;
min-height: var(--tab-min-height); min-height: var(--tab-min-height);
@@ -2100,7 +2091,7 @@ tab-group { @@ -2139,7 +2130,7 @@ tab-group {
margin-inline: var(--tab-inner-inline-margin); margin-inline: var(--tab-inner-inline-margin);
#tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text { #tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text {
@@ -132,7 +120,7 @@ index 203b546933842f4b0134188fda020c4db4dcd0d2..0d67deabac2984574636248a16e58d16
} }
&:hover { &:hover {
@@ -2124,7 +2115,7 @@ tab-group { @@ -2163,7 +2154,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.
*/ */
@@ -141,7 +129,7 @@ index 203b546933842f4b0134188fda020c4db4dcd0d2..0d67deabac2984574636248a16e58d16
margin-block: var(--tab-block-margin); margin-block: var(--tab-block-margin);
} }
@@ -2312,7 +2303,6 @@ tab-group { @@ -2351,7 +2342,6 @@ tab-group {
&:not([expanded]) { &:not([expanded]) {
.tabbrowser-tab[pinned] { .tabbrowser-tab[pinned] {
@@ -149,7 +137,7 @@ index 203b546933842f4b0134188fda020c4db4dcd0d2..0d67deabac2984574636248a16e58d16
} }
.tab-background { .tab-background {
@@ -2352,8 +2342,8 @@ tab-group { @@ -2391,8 +2381,8 @@ tab-group {
display: block; display: block;
position: absolute; position: absolute;
inset: auto; inset: auto;
@@ -160,17 +148,17 @@ index 203b546933842f4b0134188fda020c4db4dcd0d2..0d67deabac2984574636248a16e58d16
&:-moz-window-inactive { &:-moz-window-inactive {
background-image: background-image:
@@ -2438,9 +2428,6 @@ tab-group { @@ -2480,9 +2470,6 @@ tab-group {
~ #tabbrowser-tabs[orient="horizontal"]::before {
:root:not([privatebrowsingmode]) :is(toolbarbutton, toolbarpaletteitem) ~ #tabbrowser-tabs, display: flex;
:root[privatebrowsingmode] :is(toolbarbutton:not(#firefox-view-button), toolbarpaletteitem:not(#wrapper-firefox-view-button)) ~ #tabbrowser-tabs { content: "";
- border-inline-start: var(--tabstrip-inner-border); - border-inline-start: var(--tabstrip-inner-border);
- padding-inline-start: 2px; - padding-inline-start: 2px;
- margin-inline-start: 2px; - margin-inline-start: 2px;
}
} }
:root[privatebrowsingmode] :is(#firefox-view-button, #menu_openFirefoxView) { @@ -2515,7 +2502,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
@@ -2472,7 +2459,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);
} }

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/toolbarbuttons.css b/browser/themes/shared/toolbarbuttons.css diff --git a/browser/themes/shared/toolbarbuttons.css b/browser/themes/shared/toolbarbuttons.css
index 8c02df47ca003fa5094de0e7802cd8c10ef1bf2a..a16e8d7d3a00af8df648946950b7bb1c3f30efbb 100644 index 829501008d7b6fd6bddf899f3cf599a68ff216a0..cbdc770d56c4053d0b9afc13322f072c3376eb30 100644
--- a/browser/themes/shared/toolbarbuttons.css --- a/browser/themes/shared/toolbarbuttons.css
+++ b/browser/themes/shared/toolbarbuttons.css +++ b/browser/themes/shared/toolbarbuttons.css
@@ -13,20 +13,6 @@ @@ -13,20 +13,6 @@
@@ -23,7 +23,7 @@ index 8c02df47ca003fa5094de0e7802cd8c10ef1bf2a..a16e8d7d3a00af8df648946950b7bb1c
&:where([uidensity="compact"]) { &:where([uidensity="compact"]) {
--toolbarbutton-inner-padding: var(--toolbarbutton-inner-padding-compact); --toolbarbutton-inner-padding: var(--toolbarbutton-inner-padding-compact);
--bookmark-block-padding: 1px; --bookmark-block-padding: 1px;
@@ -65,9 +51,7 @@ @@ -123,9 +109,7 @@
#TabsToolbar { #TabsToolbar {
/* Override the inner padding to ensure the dimensions match the tabs, but also making sure /* Override the inner padding to ensure the dimensions match the tabs, but also making sure
different types of buttons (combined-buttons-dropmarker or text) still look correct. */ different types of buttons (combined-buttons-dropmarker or text) still look correct. */
@@ -33,7 +33,7 @@ index 8c02df47ca003fa5094de0e7802cd8c10ef1bf2a..a16e8d7d3a00af8df648946950b7bb1c
} }
/* Primary toolbar buttons */ /* Primary toolbar buttons */
@@ -146,8 +130,8 @@ toolbar .toolbarbutton-1 { @@ -204,8 +188,8 @@ toolbar .toolbarbutton-1 {
> .toolbarbutton-icon { > .toolbarbutton-icon {
/* horizontal padding + actual icon width */ /* horizontal padding + actual icon width */
@@ -44,7 +44,7 @@ index 8c02df47ca003fa5094de0e7802cd8c10ef1bf2a..a16e8d7d3a00af8df648946950b7bb1c
} }
> .toolbarbutton-text { > .toolbarbutton-text {
@@ -157,7 +141,7 @@ toolbar .toolbarbutton-1 { @@ -215,7 +199,7 @@ toolbar .toolbarbutton-1 {
* height as the button icons and the same vertical padding, but as a minimum, * height as the button icons and the same vertical padding, but as a minimum,
* because otherwise an increase in text sizes would break things. * because otherwise an increase in text sizes would break things.
*/ */
@@ -53,7 +53,7 @@ index 8c02df47ca003fa5094de0e7802cd8c10ef1bf2a..a16e8d7d3a00af8df648946950b7bb1c
@media (-moz-platform: macos) { @media (-moz-platform: macos) {
padding-top: calc(var(--toolbarbutton-inner-padding) + 1px); padding-top: calc(var(--toolbarbutton-inner-padding) + 1px);
@@ -277,7 +261,7 @@ toolbar .toolbaritem-combined-buttons { @@ -325,7 +309,7 @@ toolbar .toolbaritem-combined-buttons {
#nav-bar-overflow-button { #nav-bar-overflow-button {
list-style-image: url("chrome://global/skin/icons/chevron.svg"); list-style-image: url("chrome://global/skin/icons/chevron.svg");
@@ -62,7 +62,7 @@ index 8c02df47ca003fa5094de0e7802cd8c10ef1bf2a..a16e8d7d3a00af8df648946950b7bb1c
display: none; display: none;
} }
@@ -487,7 +471,7 @@ toolbarbutton.bookmark-item:not(.subviewbutton) { @@ -535,7 +519,7 @@ toolbarbutton.bookmark-item:not(.subviewbutton) {
*/ */
align-items: stretch; align-items: stretch;
> .toolbarbutton-icon { > .toolbarbutton-icon {

View File

@@ -1,17 +1,17 @@
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 0ee35cfe67c9bce37a844d4b7d9715d4fb50f709..5cdb8037e49a68ea4126af349690af8a16b5e59b 100644 index 3f46c918e125f9531a536a09358c980b2c923864..cba6f00318ce5dc7b6717b6c9afd2ee916715f8f 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
@@ -10,7 +10,7 @@ @@ -11,7 +11,7 @@
/* Usually we wouldn't need snapping border widths manually, but we use this /* Usually we wouldn't need snapping border widths manually, but we use this
* for other layout calculations too */ * for other layout calculations too */
--urlbar-container-border-width: max(env(hairline), round(down, 1px, env(hairline))); --urlbar-container-border-width: max(env(hairline), round(down, 1px, env(hairline)));
- --urlbar-container-padding: round(up, 1px, env(hairline)); - --urlbar-container-padding: round(up, 1px, env(hairline));
+ --urlbar-container-padding: 2px; + --urlbar-container-padding: 2px;
--urlbar-container-border-padding: calc(var(--urlbar-container-border-width) + var(--urlbar-container-padding)); --urlbar-container-inset: calc(var(--urlbar-container-border-width) + var(--urlbar-container-padding));
--urlbar-margin-inline: 5px;
--urlbar-padding-block: 4px; @media (max-width: 770px) {
@@ -55,7 +55,7 @@ toolbar[inactive="true"] .urlbar, @@ -54,7 +54,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 {
@@ -20,7 +20,18 @@ index 0ee35cfe67c9bce37a844d4b7d9715d4fb50f709..5cdb8037e49a68ea4126af349690af8a
} }
/* Document Picture-in-Picture API window */ /* Document Picture-in-Picture API window */
@@ -333,10 +333,14 @@ toolbar[inactive="true"] .urlbar, @@ -201,6 +201,10 @@ toolbar[inactive="true"] .urlbar,
mask-image: linear-gradient(to right, transparent var(--urlbar-scheme-size), black calc(var(--urlbar-scheme-size) + 3ch));
}
+ #navigator-toolbox[zen-has-implicit-hover="true"] .urlbar:not([focused])[textoverflow="left"] > .urlbar-input-container > .urlbar-input-box > & {
+ mask-image: linear-gradient(to right, transparent, black 3ch, black calc(100% - 3ch), transparent);
+ }
+
/* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("browser.nova.enabled") {
&::selection {
@@ -343,10 +347,14 @@ toolbar[inactive="true"] .urlbar,
.urlbar[breakout][breakout-extend] { .urlbar[breakout][breakout-extend] {
height: auto; height: auto;

View File

@@ -1,7 +1,7 @@
diff --git a/browser/themes/shared/urlbar-variables.css b/browser/themes/shared/urlbar-variables.css diff --git a/browser/themes/shared/urlbar/variables.css b/browser/themes/shared/urlbar/variables.css
index 0710bcc11e8040750ff826e3d3551454fdad61c6..2be2fa3e386ad9d4296d73ee8814e09750382a0d 100644 index 34ab3df5ed433dafed00799c902afc276a722862..1e71860631f33839bdc7e1ec3a1e877bef744b55 100644
--- a/browser/themes/shared/urlbar-variables.css --- a/browser/themes/shared/urlbar/variables.css
+++ b/browser/themes/shared/urlbar-variables.css +++ b/browser/themes/shared/urlbar/variables.css
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
:root { :root {
--identity-box-margin-inline: 4px; --identity-box-margin-inline: 4px;

View File

@@ -0,0 +1,21 @@
diff --git a/browser/themes/shared/urlbar/view-proton.css b/browser/themes/shared/urlbar/view-proton.css
index 9e041b67988f590bdbea48514937b1fa25c9785c..05507782b91858dff3e181843314af7956528ba9 100644
--- a/browser/themes/shared/urlbar/view-proton.css
+++ b/browser/themes/shared/urlbar/view-proton.css
@@ -14,7 +14,7 @@
--urlbarView-small-font-size: 0.85em;
- --urlbarView-results-padding: 7px;
+ --urlbarView-results-padding: 8px;
--urlbarView-row-gutter: var(--space-xxsmall);
--urlbarView-item-inline-padding: var(--urlbar-icon-padding);
--urlbarView-item-block-padding: 6px;
@@ -168,7 +168,6 @@
min-height: 32px;
}
:root[uidensity="touch"] & {
- padding-block: 11px;
}
}

View File

@@ -1,21 +0,0 @@
diff --git a/browser/themes/shared/urlbarView.css b/browser/themes/shared/urlbarView.css
index 2d6a63328642969e23da0a41ca6c7bb23eb96e8e..3060ba3f52ae7ab2f8fc36ff546d358724909b3e 100644
--- a/browser/themes/shared/urlbarView.css
+++ b/browser/themes/shared/urlbarView.css
@@ -21,7 +21,7 @@
--urlbarView-small-font-size: 0.85em;
- --urlbarView-results-padding: 7px;
+ --urlbarView-results-padding: 8px;
--urlbarView-row-gutter: 2px;
--urlbarView-item-inline-padding: var(--urlbar-icon-padding);
--urlbarView-item-block-padding: 6px;
@@ -172,7 +172,6 @@
min-height: 32px;
}
:root[uidensity="touch"] & {
- padding-block: 11px;
}
}

View File

@@ -8,7 +8,8 @@
#zen-welcome-start-button, #zen-welcome-start-button,
.zen-toast button, .zen-toast button,
.zen-current-workspace-indicator-chevron, .zen-current-workspace-indicator-chevron,
.pinned-tabs-container-separator toolbarbutton { .pinned-tabs-container-separator toolbarbutton,
.zen-permission-popup-boost-editor-button {
-moz-context-properties: fill, fill-opacity !important; -moz-context-properties: fill, fill-opacity !important;
fill: currentColor !important; fill: currentColor !important;
} }
@@ -39,10 +40,21 @@
.close-icon, .close-icon,
.zen-glance-sidebar-close, .zen-glance-sidebar-close,
.zen-theme-picker-custom-list-item-remove, .zen-theme-picker-custom-list-item-remove,
#appMenu-quit-button2 { #appMenu-quit-button2,
#zen-boost-delete {
list-style-image: url("close.svg") !important; list-style-image: url("close.svg") !important;
} }
#PanelUI-zen-emojis-picker-none,
#zen-emojis-picker-none {
list-style-image: url("trash.svg");
}
#PanelUI-zen-gradient-generator-color-remove,
#zen-gradient-generator-color-remove {
list-style-image: url("unpin.svg") !important;
}
#PanelUI-zen-emojis-picker-none { #PanelUI-zen-emojis-picker-none {
list-style-image: url("trash.svg"); list-style-image: url("trash.svg");
} }
@@ -117,7 +129,8 @@
} }
.zen-current-workspace-indicator-chevron, .zen-current-workspace-indicator-chevron,
#PanelUI-zen-gradient-generator-color-page-right { #PanelUI-zen-gradient-generator-color-page-right,
.zen-permission-popup-boost-editor-button {
list-style-image: url("arrow-right.svg"); list-style-image: url("arrow-right.svg");
} }
@@ -412,7 +425,8 @@
} }
.panel-header > .subviewbutton-back, .panel-header > .subviewbutton-back,
#PanelUI-zen-gradient-generator-color-page-left { #PanelUI-zen-gradient-generator-color-page-left,
#zen-boost-back {
list-style-image: url("arrow-left.svg") !important; list-style-image: url("arrow-left.svg") !important;
} }
@@ -504,6 +518,30 @@
&:where([starred]) image { &:where([starred]) image {
list-style-image: url("permissions-fill.svg"); list-style-image: url("permissions-fill.svg");
} }
&[boosting] image {
color: var(--color-accent-primary);
list-style-image: url("permissions-fill.svg");
}
position: relative;
& .zen-site-data-boost-animation {
display: none;
}
}
@media not (prefers-reduced-motion: reduce) {
#zen-site-data-icon-button[boosting] .zen-site-data-boost-animation {
position: absolute;
display: flex;
width: 100%;
height: 100%;
color: var(--color-accent-primary);
list-style-image: url("chrome://browser/content/zen-images/boost-indicator.svg");
transform: translateX(-20%);
z-index: 0;
pointer-events: none;
}
} }
.geo-icon { .geo-icon {
@@ -758,7 +796,8 @@
--fp-enabled: 1; --fp-enabled: 1;
} }
#alltabs-button { #alltabs-button,
#urlbar-engine-one-off-item-workspaces {
list-style-image: url("chrome://browser/skin/tabs.svg") !important; list-style-image: url("chrome://browser/skin/tabs.svg") !important;
} }
@@ -878,6 +917,36 @@
fill: currentColor; fill: currentColor;
} }
#zen-site-data-boost {
border-radius: 6px;
appearance: none;
padding: 6px 10px 6px 10px;
position: relative;
list-style-image: url("boost.svg");
& .toolbarbutton-text {
display: none;
}
@media -moz-pref("zen.boosts.enabled", false) {
display: none;
}
& image {
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
width: 14px;
fill-opacity: 0.7;
}
}
.boost-brush {
list-style-image: url("boost.svg") !important;
padding: 10px;
}
#zen-site-data-security-info { #zen-site-data-security-info {
-moz-context-properties: fill, fill-opacity; -moz-context-properties: fill, fill-opacity;
fill: currentColor; fill: currentColor;
@@ -937,3 +1006,83 @@
list-style-image: url("link.svg"); list-style-image: url("link.svg");
fill-opacity: 0.65; fill-opacity: 0.65;
} }
#zen-boost-case[case-mode="none"] {
list-style-image: none;
}
#zen-boost-case[case-mode="capitalize"] {
list-style-image: url("text-title-case.svg");
}
#zen-boost-case[case-mode="uppercase"] {
list-style-image: url("text-uppercase.svg");
}
#zen-boost-case[case-mode="lowercase"] {
list-style-image: url("text-lowercase.svg");
}
#zen-boost-code {
list-style-image: url("brackets-curly.svg");
}
#zen-boost-zap {
list-style-image: url("bolt.svg");
}
#zen-boost-controls {
list-style-image: url("sliders.svg");
}
#zen-boost-invert {
list-style-image: url("lightbulb.svg");
}
#zen-boost-disable {
list-style-image: url("block.svg");
}
#zen-boost-close {
list-style-image: url("close.svg");
@media (-moz-platform: macos) {
list-style-image: url("close-filled-round.svg");
}
@media (-moz-platform: windows) {
list-style-image: none;
list-style: none;
display: inline-flex;
&::before {
font-family: "Segoe Fluent Icons", "Segoe MDL2 Assets";
content: "\e8bb";
font-size: 12px;
}
}
}
#zen-boost-magic-theme {
list-style-image: url("sparkles.svg");
}
#zen-boost-shuffle {
list-style-image: url("dice.svg");
}
#zen-boost-css-picker {
list-style-image: url("eyedropper.svg");
}
#zen-boost-css-inspector {
list-style-image: url("hammer.svg");
}
#zen-boost-save {
list-style-image: url("downloads.svg");
}
#zen-boost-load {
list-style-image: url("open.svg");
}

Some files were not shown because too many files have changed in this diff Show More