mirror of
				https://github.com/zen-browser/desktop.git
				synced 2025-10-26 12:27:50 +00:00 
			
		
		
		
	Compare commits
	
		
			13 Commits
		
	
	
		
			stable
			...
			window-syn
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | af20a65fa1 | ||
|   | 4a7f8fc9c0 | ||
|   | a738a829de | ||
|   | 240a031e38 | ||
|   | 9bc7b9ce4e | ||
|   | 86006c8891 | ||
|   | a55b1c7495 | ||
|   | 6e6337a95b | ||
|   | 6b12153c8a | ||
|   | f6922ef2ba | ||
|   | 91f5d58fbc | ||
|   | 7a4cdaa45c | ||
|   | 81e854a89f | 
| @@ -1 +0,0 @@ | |||||||
| https://zen-browser.app/funding.json |  | ||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Següent | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Permès | zen-site-data-setting-allow = Permès | ||||||
| zen-site-data-setting-block = Bloquejat | zen-site-data-setting-block = Bloquejat | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Galetes entre llocs | zen-site-data-setting-cross-site = Galetes entre llocs | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extensió |     .label = Extensió | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Afegeix extensions |     .label = Afegeix extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = Totes les configuracions del lloc |     .label = Totes les configuracions del lloc | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Comparteix aquesta pàgina | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copia l'URL |     .tooltiptext = Copia l'URL | ||||||
| zen-site-data-setting-site-protection = Protecció contra el seguiment | zen-site-data-setting-site-protection = Protecció contra el seguiment | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Povoleno | zen-site-data-setting-allow = Povoleno | ||||||
| zen-site-data-setting-block = Blokováno | zen-site-data-setting-block = Blokováno | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Rozšíření |     .label = Rozšíření | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Přidat rozšíření |     .label = Přidat rozšíření | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = Nastavení všech stránek |     .label = Nastavení všech stránek | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Næste | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Tilladt | zen-site-data-setting-allow = Tilladt | ||||||
| zen-site-data-setting-block = Blokeret | zen-site-data-setting-block = Blokeret | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Udvidelse |     .label = Udvidelse | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Tilføj udvidelser |     .label = Tilføj udvidelser | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Del denne side | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Kopiér URL |     .tooltiptext = Kopiér URL | ||||||
| zen-site-data-setting-site-protection = Sporingsbeskyttelse | zen-site-data-setting-site-protection = Sporingsbeskyttelse | ||||||
|   | |||||||
| @@ -38,7 +38,7 @@ zen-library-sidebar-workspaces = | |||||||
| zen-library-sidebar-mods =  | zen-library-sidebar-mods =  | ||||||
|     .label = Mods |     .label = Mods | ||||||
| zen-toggle-compact-mode-button =  | zen-toggle-compact-mode-button =  | ||||||
|     .label = Kompakter Modus |     .label = Compact Mode | ||||||
|     .tooltiptext = Compact Mode umschalten |     .tooltiptext = Compact Mode umschalten | ||||||
|  |  | ||||||
| # note: Do not translate the "<br/>" tags in the following string | # note: Do not translate the "<br/>" tags in the following string | ||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Weiter | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Erlaubt | zen-site-data-setting-allow = Erlaubt | ||||||
| zen-site-data-setting-block = Blockiert | zen-site-data-setting-block = Blockiert | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site-Cookie | zen-site-data-setting-cross-site = Cross-Site-Cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Erweiterung |     .label = Erweiterung | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Erweiterungen hinzufügen |     .label = Erweiterungen hinzufügen | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = Alle Website-Einstellungen |     .label = Alle Website-Einstellungen | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Diese Seite teilen | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = URL kopieren |     .tooltiptext = URL kopieren | ||||||
| zen-site-data-setting-site-protection = Tracking-Schutz | zen-site-data-setting-site-protection = Tracking-Schutz | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -57,8 +57,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -72,14 +70,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -77,8 +77,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension = | zen-site-data-security-info-extension = | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -93,16 +91,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings = | zen-site-data-site-settings = | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
|  | zen-site-data-share = | ||||||
|  |     .label = Share This Page | ||||||
| zen-site-data-header-share = |  | ||||||
|     .tooltiptext = Share This Page |  | ||||||
| zen-site-data-header-reader-mode = |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot = |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark = |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
|  |  | ||||||
| zen-urlbar-copy-url-button = | zen-urlbar-copy-url-button = | ||||||
|   .tooltiptext = Copy URL |   .tooltiptext = Copy URL | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Siguiente | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Permitido | zen-site-data-setting-allow = Permitido | ||||||
| zen-site-data-setting-block = Bloqueado | zen-site-data-setting-block = Bloqueado | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cookie de terceros | zen-site-data-setting-cross-site = Cookie de terceros | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extensión |     .label = Extensión | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Añadir extensión |     .label = Añadir extensión | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = Todas las configuraciones del sitio |     .label = Todas las configuraciones del sitio | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Compartir esta página | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copiar URL |     .tooltiptext = Copiar URL | ||||||
| zen-site-data-setting-site-protection = Protección contra el rastreo | zen-site-data-setting-site-protection = Protección contra el rastreo | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Lubatud | zen-site-data-setting-allow = Lubatud | ||||||
| zen-site-data-setting-block = Keelatud | zen-site-data-setting-block = Keelatud | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Laiendus |     .label = Laiendus | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Lisa laiendusi |     .label = Lisa laiendusi | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = Kõik saidi sätted |     .label = Kõik saidi sätted | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Suivant | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Autorisé | zen-site-data-setting-allow = Autorisé | ||||||
| zen-site-data-setting-block = Bloqué | zen-site-data-setting-block = Bloqué | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cookie intersite | zen-site-data-setting-cross-site = Cookie intersite | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Ajouter des extensions |     .label = Ajouter des extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = Tous les paramètres du site |     .label = Tous les paramètres du site | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Partager cette page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copier l'URL |     .tooltiptext = Copier l'URL | ||||||
| zen-site-data-setting-site-protection = Protection contre le pistage | zen-site-data-setting-site-protection = Protection contre le pistage | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Ar Aghaidh | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Ceadaithe | zen-site-data-setting-allow = Ceadaithe | ||||||
| zen-site-data-setting-block = Blocáilte | zen-site-data-setting-block = Blocáilte | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Fianán Tras-Láithreáin | zen-site-data-setting-cross-site = Fianán Tras-Láithreáin | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Síneadh |     .label = Síneadh | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Cuir Síneadh leis |     .label = Cuir Síneadh leis | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = Gach Socrú Suímh |     .label = Gach Socrú Suímh | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Comhroinn an Leathanach seo | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Cóipeáil URL |     .tooltiptext = Cóipeáil URL | ||||||
| zen-site-data-setting-site-protection = Cosaint Rianaithe | zen-site-data-setting-site-protection = Cosaint Rianaithe | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = אושר | zen-site-data-setting-allow = אושר | ||||||
| zen-site-data-setting-block = חסום | zen-site-data-setting-block = חסום | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = תוספים |     .label = תוספים | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = הוספת תוספים |     .label = הוספת תוספים | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = כל הגדרות אתר |     .label = כל הגדרות אתר | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Következő | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Engedélyezve | zen-site-data-setting-allow = Engedélyezve | ||||||
| zen-site-data-setting-block = Letiltva | zen-site-data-setting-block = Letiltva | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Webhelyek közötti sütik | zen-site-data-setting-cross-site = Webhelyek közötti sütik | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Kiegészítő |     .label = Kiegészítő | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Kiegészítő hozzáadása |     .label = Kiegészítő hozzáadása | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = Minden webhelybeállítás |     .label = Minden webhelybeállítás | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Oldal megosztása | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = URL másolása |     .tooltiptext = URL másolása | ||||||
| zen-site-data-setting-site-protection = Nyomkövetés védelem | zen-site-data-setting-site-protection = Nyomkövetés védelem | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Lanjut | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Diizinkan | zen-site-data-setting-allow = Diizinkan | ||||||
| zen-site-data-setting-block = Diblokir | zen-site-data-setting-block = Diblokir | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Kuki Lintas Situs | zen-site-data-setting-cross-site = Kuki Lintas Situs | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Ekstensi |     .label = Ekstensi | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Tambahkan Ekstensi |     .label = Tambahkan Ekstensi | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = Semua Pengaturan Situs |     .label = Semua Pengaturan Situs | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Bagikan Halaman Ini | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Salin URL |     .tooltiptext = Salin URL | ||||||
| zen-site-data-setting-site-protection = Perlindungan Pelacakan | zen-site-data-setting-site-protection = Perlindungan Pelacakan | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -57,8 +57,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Consentito | zen-site-data-setting-allow = Consentito | ||||||
| zen-site-data-setting-block = Bloccato | zen-site-data-setting-block = Bloccato | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Estensione |     .label = Estensione | ||||||
| @@ -72,14 +70,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Aggiungi estensioni |     .label = Aggiungi estensioni | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = Tutte le impostazioni del sito |     .label = Tutte le impostazioni del sito | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Condividi questa pagina | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copia URL |     .tooltiptext = Copia URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = 다음 | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = 허용됨 | zen-site-data-setting-allow = 허용됨 | ||||||
| zen-site-data-setting-block = 금지됨 | zen-site-data-setting-block = 금지됨 | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = 사이트 간 공유 쿠키 | zen-site-data-setting-cross-site = 사이트 간 공유 쿠키 | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = 확장 |     .label = 확장 | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = 확장 프로그램 추가 |     .label = 확장 프로그램 추가 | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = 모든 사이트 설정 |     .label = 모든 사이트 설정 | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = 이 페이지 공유 | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = URL 복사 |     .tooltiptext = URL 복사 | ||||||
| zen-site-data-setting-site-protection = 추적 보호 | zen-site-data-setting-site-protection = 추적 보호 | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Leidžiama | zen-site-data-setting-allow = Leidžiama | ||||||
| zen-site-data-setting-block = Užblokuota | zen-site-data-setting-block = Užblokuota | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Plėtinys |     .label = Plėtinys | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Įtraukti plėtinius |     .label = Įtraukti plėtinius | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = Visi svetainės nustatymai |     .label = Visi svetainės nustatymai | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -57,8 +57,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Permitido | zen-site-data-setting-allow = Permitido | ||||||
| zen-site-data-setting-block = Bloqueado | zen-site-data-setting-block = Bloqueado | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extensão |     .label = Extensão | ||||||
| @@ -72,14 +70,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Adicionar Extensões |     .label = Adicionar Extensões | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = Todas as Configurações do Site |     .label = Todas as Configurações do Site | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Seguinte | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Permitido | zen-site-data-setting-allow = Permitido | ||||||
| zen-site-data-setting-block = Bloqueado | zen-site-data-setting-block = Bloqueado | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cookies entre sites | zen-site-data-setting-cross-site = Cookies entre sites | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extensão |     .label = Extensão | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Adicionar Extensões |     .label = Adicionar Extensões | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = Todas as Definições do Site |     .label = Todas as Definições do Site | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Partilhar Esta Página | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copiar URL |     .tooltiptext = Copiar URL | ||||||
| zen-site-data-setting-site-protection = Proteção contra rastreio | zen-site-data-setting-site-protection = Proteção contra rastreio | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Далее | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Разрешено | zen-site-data-setting-allow = Разрешено | ||||||
| zen-site-data-setting-block = Запрещено | zen-site-data-setting-block = Запрещено | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Расширение |     .label = Расширение | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Добавить расширения |     .label = Добавить расширения | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = Все настройки сайта |     .label = Все настройки сайта | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Поделиться этой страницей | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Скопировать URL |     .tooltiptext = Скопировать URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -59,9 +59,7 @@ zen-generic-next = Далі | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Дозволено | zen-site-data-setting-allow = Дозволено | ||||||
| zen-site-data-setting-block = Заблоковано | zen-site-data-setting-block = Заблоковано | ||||||
| zen-site-data-protections-enabled = Enabled | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Міжсайтові cookie |  | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Розширення |     .label = Розширення | ||||||
| zen-site-data-security-info-secure =  | zen-site-data-security-info-secure =  | ||||||
| @@ -74,17 +72,11 @@ zen-site-data-get-addons = | |||||||
|     .label = Додати розширення |     .label = Додати розширення | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = Усі налаштування сайту |     .label = Усі налаштування сайту | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Поділитися цією сторінкою | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Копіювати URL-адресу |     .tooltiptext = Копіювати URL-адресу | ||||||
| zen-site-data-setting-site-protection = Захист від відстеження | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|  |  | ||||||
| # Section: Feature callouts | # Section: Feature callouts | ||||||
|  |  | ||||||
|   | |||||||
| @@ -59,8 +59,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -74,14 +72,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -57,8 +57,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -72,14 +70,8 @@ zen-site-data-get-addons = | |||||||
|     .label = 添加扩展 |     .label = 添加扩展 | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = 所有站点设置 |     .label = 所有站点设置 | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -57,8 +57,6 @@ zen-generic-next = Next | |||||||
| # These labels will be used for the site data panel settings | # These labels will be used for the site data panel settings | ||||||
| zen-site-data-setting-allow = Allowed | zen-site-data-setting-allow = Allowed | ||||||
| zen-site-data-setting-block = Blocked | zen-site-data-setting-block = Blocked | ||||||
| zen-site-data-protections-enabled = Enabled |  | ||||||
| zen-site-data-protections-disabled = Disabled |  | ||||||
| zen-site-data-setting-cross-site = Cross-Site cookie | zen-site-data-setting-cross-site = Cross-Site cookie | ||||||
| zen-site-data-security-info-extension =  | zen-site-data-security-info-extension =  | ||||||
|     .label = Extension |     .label = Extension | ||||||
| @@ -72,14 +70,8 @@ zen-site-data-get-addons = | |||||||
|     .label = Add Extensions |     .label = Add Extensions | ||||||
| zen-site-data-site-settings =  | zen-site-data-site-settings =  | ||||||
|     .label = All Site Settings |     .label = All Site Settings | ||||||
| zen-site-data-header-share =  | zen-site-data-share =  | ||||||
|     .tooltiptext = Share This Page |     .label = Share This Page | ||||||
| zen-site-data-header-reader-mode =  |  | ||||||
|     .tooltiptext = Enter Reader Mode |  | ||||||
| zen-site-data-header-screenshot =  |  | ||||||
|     .tooltiptext = Take a Screenshot |  | ||||||
| zen-site-data-header-bookmark =  |  | ||||||
|     .tooltiptext = Bookmark This Page |  | ||||||
| zen-urlbar-copy-url-button =  | zen-urlbar-copy-url-button =  | ||||||
|     .tooltiptext = Copy URL |     .tooltiptext = Copy URL | ||||||
| zen-site-data-setting-site-protection = Tracking Protection | zen-site-data-setting-site-protection = Tracking Protection | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| 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 32b67f846b9942ad3da4276bb8748fee915eb485..529ef8895d2ab01b4cbebd2992fd3b64225e42b0 100644 | index 32b67f846b9942ad3da4276bb8748fee915eb485..f77d5df7c8ef49c0366ada8b3153c5a6c676239b 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 | ||||||
| @@ -31,6 +31,7 @@ ChromeUtils.defineESModuleGetters(this, { | @@ -31,6 +31,7 @@ ChromeUtils.defineESModuleGetters(this, { | ||||||
| @@ -19,33 +19,6 @@ index 32b67f846b9942ad3da4276bb8748fee915eb485..529ef8895d2ab01b4cbebd2992fd3b64 | |||||||
|      PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser); |      PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser); | ||||||
|   |   | ||||||
|      if (!gMultiProcessBrowser) { |      if (!gMultiProcessBrowser) { | ||||||
| @@ -3795,7 +3798,7 @@ function warnAboutClosingWindow() { |  | ||||||
|   |  | ||||||
|    if (!isPBWindow && !toolbar.visible) { |  | ||||||
|      return gBrowser.warnAboutClosingTabs( |  | ||||||
| -      gBrowser.openTabs.length, |  | ||||||
| +      gBrowser.visibleTabs.filter(t => t.getAttribute("pending")!=="true").length, |  | ||||||
|        gBrowser.closingTabsEnum.ALL |  | ||||||
|      ); |  | ||||||
|    } |  | ||||||
| @@ -3835,7 +3838,7 @@ function warnAboutClosingWindow() { |  | ||||||
|      return ( |  | ||||||
|        isPBWindow || |  | ||||||
|        gBrowser.warnAboutClosingTabs( |  | ||||||
| -        gBrowser.openTabs.length, |  | ||||||
| +        gBrowser.visibleTabs.filter(t => t.getAttribute("pending")!=="true").length, |  | ||||||
|          gBrowser.closingTabsEnum.ALL |  | ||||||
|        ) |  | ||||||
|      ); |  | ||||||
| @@ -3860,7 +3863,7 @@ function warnAboutClosingWindow() { |  | ||||||
|      AppConstants.platform != "macosx" || |  | ||||||
|      isPBWindow || |  | ||||||
|      gBrowser.warnAboutClosingTabs( |  | ||||||
| -      gBrowser.openTabs.length, |  | ||||||
| +      gBrowser.visibleTabs.filter(t => t.getAttribute("pending")!=="true").length, |  | ||||||
|        gBrowser.closingTabsEnum.ALL |  | ||||||
|      ) |  | ||||||
|    ); |  | ||||||
| @@ -4782,6 +4785,9 @@ var ConfirmationHint = { | @@ -4782,6 +4785,9 @@ var ConfirmationHint = { | ||||||
|      MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl"); |      MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl"); | ||||||
|      MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl"); |      MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl"); | ||||||
|   | |||||||
| @@ -1,13 +1,12 @@ | |||||||
| diff --git a/browser/base/content/browser-pageActions.js b/browser/base/content/browser-pageActions.js | diff --git a/browser/base/content/browser-pageActions.js b/browser/base/content/browser-pageActions.js | ||||||
| index 00da33bc11189db17b6a2e656acb3a778531197c..bdca62e9ed5513e1e1922f1f9498755f5459e0c2 100644 | index 00da33bc11189db17b6a2e656acb3a778531197c..9571155baccad9a886cbe9c7bf0bd76a135331c4 100644 | ||||||
| --- a/browser/base/content/browser-pageActions.js | --- a/browser/base/content/browser-pageActions.js | ||||||
| +++ b/browser/base/content/browser-pageActions.js | +++ b/browser/base/content/browser-pageActions.js | ||||||
| @@ -449,7 +449,7 @@ var BrowserPageActions = { | @@ -451,6 +451,7 @@ var BrowserPageActions = { | ||||||
|        document.getElementById( |  | ||||||
|          action && this.urlbarButtonNodeIDForActionID(action.id) |  | ||||||
|        ), |        ), | ||||||
| -      document.getElementById(this.mainButtonNode.id), |        document.getElementById(this.mainButtonNode.id), | ||||||
| +      document.getElementById("zen-site-data-icon-button"), |  | ||||||
|        document.getElementById("identity-icon"), |        document.getElementById("identity-icon"), | ||||||
|  | +      document.getElementById("zen-site-data-icon-button"), | ||||||
|      ]; |      ]; | ||||||
|      for (let node of potentialAnchorNodes) { |      for (let node of potentialAnchorNodes) { | ||||||
|  |        if (node && !node.hidden) { | ||||||
|   | |||||||
| @@ -58,3 +58,4 @@ | |||||||
| <script type="text/javascript" src="chrome://browser/content/zen-components/ZenDownloadAnimation.mjs"></script> | <script type="text/javascript" src="chrome://browser/content/zen-components/ZenDownloadAnimation.mjs"></script> | ||||||
| <script type="text/javascript" src="chrome://browser/content/zen-components/ZenEmojiPicker.mjs"></script> | <script type="text/javascript" src="chrome://browser/content/zen-components/ZenEmojiPicker.mjs"></script> | ||||||
| <script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspaceCreation.mjs"></script> | <script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspaceCreation.mjs"></script> | ||||||
|  | <script type="text/javascript" src="chrome://browser/content/zen-components/ZenWindowSyncing.mjs"></script> | ||||||
|   | |||||||
| @@ -42,6 +42,7 @@ | |||||||
|         content/browser/zen-components/ZenWorkspaceIcons.mjs                    (../../zen/workspaces/ZenWorkspaceIcons.mjs) |         content/browser/zen-components/ZenWorkspaceIcons.mjs                    (../../zen/workspaces/ZenWorkspaceIcons.mjs) | ||||||
|         content/browser/zen-components/ZenWorkspace.mjs                         (../../zen/workspaces/ZenWorkspace.mjs) |         content/browser/zen-components/ZenWorkspace.mjs                         (../../zen/workspaces/ZenWorkspace.mjs) | ||||||
|         content/browser/zen-components/ZenWorkspaces.mjs                        (../../zen/workspaces/ZenWorkspaces.mjs) |         content/browser/zen-components/ZenWorkspaces.mjs                        (../../zen/workspaces/ZenWorkspaces.mjs) | ||||||
|  |         content/browser/zen-components/ZenWindowSyncing.mjs                     (../../zen/workspaces/ZenWindowSyncing.mjs) | ||||||
|         content/browser/zen-components/ZenWorkspaceCreation.mjs                 (../../zen/workspaces/ZenWorkspaceCreation.mjs) |         content/browser/zen-components/ZenWorkspaceCreation.mjs                 (../../zen/workspaces/ZenWorkspaceCreation.mjs) | ||||||
|         content/browser/zen-components/ZenWorkspacesStorage.mjs                 (../../zen/workspaces/ZenWorkspacesStorage.mjs) |         content/browser/zen-components/ZenWorkspacesStorage.mjs                 (../../zen/workspaces/ZenWorkspacesStorage.mjs) | ||||||
|         content/browser/zen-components/ZenWorkspacesSync.mjs                    (../../zen/workspaces/ZenWorkspacesSync.mjs) |         content/browser/zen-components/ZenWorkspacesSync.mjs                    (../../zen/workspaces/ZenWorkspacesSync.mjs) | ||||||
|   | |||||||
| @@ -16,20 +16,16 @@ | |||||||
|                 mainview-with-header="true"> |                 mainview-with-header="true"> | ||||||
|       <hbox id="zen-site-data-header"> |       <hbox id="zen-site-data-header"> | ||||||
|         <toolbarbutton id="zen-site-data-header-share" |         <toolbarbutton id="zen-site-data-header-share" | ||||||
|                         data-l10n-id="zen-site-data-header-share" |                         data-l10n-id="zen-site-data-share" | ||||||
|                         flex="1" |                         flex="1" | ||||||
|                         closemenu="none" /> |                         closemenu="none" /> | ||||||
|         <toolbarbutton id="zen-site-data-header-reader-mode" |         <toolbarbutton id="zen-site-data-header-reader-mode" | ||||||
|                         data-l10n-id="zen-site-data-header-reader-mode" |  | ||||||
|                         command="View:ReaderView" |                         command="View:ReaderView" | ||||||
|                         tooltip="dynamic-shortcut-tooltip" |  | ||||||
|                         flex="1" /> |                         flex="1" /> | ||||||
|         <toolbarbutton id="zen-site-data-header-screenshot" |         <toolbarbutton id="zen-site-data-header-screenshot" | ||||||
|                         data-l10n-id="zen-site-data-header-screenshot" |  | ||||||
|                         command="Browser:Screenshot" |                         command="Browser:Screenshot" | ||||||
|                         flex="1" /> |                         flex="1" /> | ||||||
|         <toolbarbutton id="zen-site-data-header-bookmark" |         <toolbarbutton id="zen-site-data-header-bookmark" | ||||||
|                         data-l10n-id="zen-site-data-header-bookmark" |  | ||||||
|                         command="Browser:AddBookmarkAs" |                         command="Browser:AddBookmarkAs" | ||||||
|                         flex="1" /> |                         flex="1" /> | ||||||
|       </hbox> |       </hbox> | ||||||
| @@ -39,6 +35,10 @@ | |||||||
|           <label data-l10n-id="zen-generic-manage" id="zen-site-data-manage-addons" /> |           <label data-l10n-id="zen-generic-manage" id="zen-site-data-manage-addons" /> | ||||||
|         </hbox> |         </hbox> | ||||||
|         <hbox class="panel-subview-body" context="unified-extensions-context-menu" id="zen-site-data-addons"> |         <hbox class="panel-subview-body" context="unified-extensions-context-menu" id="zen-site-data-addons"> | ||||||
|  |           <html:div id="unified-extensions-messages-container"> | ||||||
|  |             <!-- messages will be inserted here --> | ||||||
|  |           </html:div> | ||||||
|  |  | ||||||
|           <vbox id="overflowed-extensions-list"> |           <vbox id="overflowed-extensions-list"> | ||||||
|             <!-- overflowed extension buttons from the nav-bar will go here --> |             <!-- overflowed extension buttons from the nav-bar will go here --> | ||||||
|           </vbox> |           </vbox> | ||||||
| @@ -82,9 +82,6 @@ | |||||||
|                        closemenu="none" |                        closemenu="none" | ||||||
|                        context="zenSiteDataActions" /> |                        context="zenSiteDataActions" /> | ||||||
|       </hbox> |       </hbox> | ||||||
| # Messages will be inserted here. |  | ||||||
| # Dont write anything directly here, even comments, as this may break the layout |  | ||||||
|       <html:div id="unified-extensions-messages-container"></html:div> |  | ||||||
|     </panelview> |     </panelview> | ||||||
|   </panelmultiview> |   </panelmultiview> | ||||||
| </panel> | </panel> | ||||||
| @@ -1,12 +0,0 @@ | |||||||
| diff --git a/browser/components/asrouter/modules/FeatureCallout.sys.mjs b/browser/components/asrouter/modules/FeatureCallout.sys.mjs |  | ||||||
| index 2a2c5a6fe903694abbac0be86c7b3c8adc1d0275..5571b827198474a2635a9bd968adbc8c96dbc353 100644 |  | ||||||
| --- a/browser/components/asrouter/modules/FeatureCallout.sys.mjs |  | ||||||
| +++ b/browser/components/asrouter/modules/FeatureCallout.sys.mjs |  | ||||||
| @@ -776,6 +776,7 @@ export class FeatureCallout { |  | ||||||
|      ) { |  | ||||||
|        return false; |  | ||||||
|      } |  | ||||||
| +    if (el?.id === "zen-site-data-icon-button") return true; |  | ||||||
|   |  | ||||||
|      const style = this.win.getComputedStyle(el); |  | ||||||
|      return style?.visibility === "visible" && style?.display !== "none"; |  | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs | diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs | ||||||
| index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aab438565f 100644 | index d9a059f608779fea7cd8c595a432f6fe95183e0c..09a7c4045afd0b96027d0bbbad22e02e52fd7b22 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, { | @@ -14,6 +14,7 @@ ChromeUtils.defineESModuleGetters(lazy, { | ||||||
| @@ -158,7 +158,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa | |||||||
|            continue; |            continue; | ||||||
|          } |          } | ||||||
| -        sum += parseFloat(style.marginLeft) + parseFloat(style.marginRight); | -        sum += parseFloat(style.marginLeft) + parseFloat(style.marginRight); | ||||||
| +        sum += parseFloat(style.marginLeft) + (win.gZenVerticalTabsManager._hasSetSingleToolbar ? Math.max(0, parseFloat(style.marginRight)) : parseFloat(style.marginRight)); | +        sum += parseFloat(style.marginLeft) + Math.max(0, parseFloat(style.marginRight)); | ||||||
|          if (child != aExceptChild) { |          if (child != aExceptChild) { | ||||||
|            sum += getInlineSize(child); |            sum += getInlineSize(child); | ||||||
|          } |          } | ||||||
| @@ -176,23 +176,17 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa | |||||||
|      }); |      }); | ||||||
|   |   | ||||||
|      lazy.log.debug( |      lazy.log.debug( | ||||||
| @@ -7909,7 +7909,14 @@ class OverflowableToolbar { | @@ -7909,7 +7909,8 @@ 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 (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 && |  | ||||||
| +      this.#target.id == 'zen-sidebar-top-buttons-customization-target' && |  | ||||||
| +      Array.from(this.#target.children).filter(child => child.getAttribute("overflows") != "false").length == 1 && |  | ||||||
| +      this.#overflowedInfo.size == 0) { |  | ||||||
| +      isOverflowing = false; |  | ||||||
| +    } |  | ||||||
|      return { isOverflowing, targetContentWidth, totalAvailWidth }; |      return { isOverflowing, targetContentWidth, totalAvailWidth }; | ||||||
|    } |    } | ||||||
|   |   | ||||||
| @@ -7970,7 +7977,11 @@ class OverflowableToolbar { | @@ -7970,7 +7971,11 @@ class OverflowableToolbar { | ||||||
|              return; |              return; | ||||||
|            } |            } | ||||||
|          } |          } | ||||||
| @@ -205,7 +199,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa | |||||||
|            lazy.log.debug( |            lazy.log.debug( | ||||||
|              `Need ${minSize} but width is ${totalAvailWidth} so bailing` |              `Need ${minSize} but width is ${totalAvailWidth} so bailing` | ||||||
|            ); |            ); | ||||||
| @@ -8003,7 +8014,7 @@ class OverflowableToolbar { | @@ -8003,7 +8008,7 @@ class OverflowableToolbar { | ||||||
|          } |          } | ||||||
|        } |        } | ||||||
|        if (!inserted) { |        if (!inserted) { | ||||||
| @@ -214,7 +208,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa | |||||||
|        } |        } | ||||||
|        child.removeAttribute("cui-anchorid"); |        child.removeAttribute("cui-anchorid"); | ||||||
|        child.removeAttribute("overflowedItem"); |        child.removeAttribute("overflowedItem"); | ||||||
| @@ -8348,7 +8359,7 @@ class OverflowableToolbar { | @@ -8348,7 +8353,7 @@ class OverflowableToolbar { | ||||||
|          break; |          break; | ||||||
|        } |        } | ||||||
|        case "mousedown": { |        case "mousedown": { | ||||||
|   | |||||||
| @@ -1,12 +0,0 @@ | |||||||
| diff --git a/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs b/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs |  | ||||||
| index 773f595e89e268578ba153907babec95b58a155a..abe86fc3d243a85c4a8dbee854a2d0130f7270fd 100644 |  | ||||||
| --- a/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs |  | ||||||
| +++ b/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs |  | ||||||
| @@ -937,6 +937,7 @@ export class AsyncTabSwitcher { |  | ||||||
|      return !( |  | ||||||
|        this.tabbrowser._printPreviewBrowsers.has(browser) || |  | ||||||
|        lazy.PictureInPicture.isOriginatingBrowser(browser) |  | ||||||
| +      || browser?.hasAttribute('zen-glance-background') |  | ||||||
|      ); |  | ||||||
|    } |  | ||||||
|   |  | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs | diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs | ||||||
| index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d355858bcf37b 100644 | index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..b286fc5b40a6e32a3af0bb0f209e58c64ab7bed9 100644 | ||||||
| --- a/browser/components/urlbar/UrlbarInput.sys.mjs | --- a/browser/components/urlbar/UrlbarInput.sys.mjs | ||||||
| +++ b/browser/components/urlbar/UrlbarInput.sys.mjs | +++ b/browser/components/urlbar/UrlbarInput.sys.mjs | ||||||
| @@ -76,6 +76,13 @@ ChromeUtils.defineLazyGetter(lazy, "logger", () => | @@ -76,6 +76,13 @@ ChromeUtils.defineLazyGetter(lazy, "logger", () => | ||||||
| @@ -122,13 +122,14 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|      // 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")) { | ||||||
| @@ -2331,6 +2396,24 @@ export class UrlbarInput { | @@ -2331,6 +2396,25 @@ export class UrlbarInput { | ||||||
|        return; |        return; | ||||||
|      } |      } | ||||||
|   |   | ||||||
| +    if (this._zenHandleUrlbarClose) { | +    if (this._zenHandleUrlbarClose) { | ||||||
| +      this._zenHandleUrlbarClose(); | +      this._zenHandleUrlbarClose(); | ||||||
| +    } | +    } | ||||||
|  | +    this.window.gZenUIManager.onUrlbarClose(); | ||||||
| +     | +     | ||||||
| +    // Arc like URLbar: Blur the input on exit | +    // Arc like URLbar: Blur the input on exit | ||||||
| +    const zenToolbox = this.document.getElementById("navigator-toolbox"); | +    const zenToolbox = this.document.getElementById("navigator-toolbox"); | ||||||
| @@ -141,22 +142,13 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
| +    this.document.ownerGlobal.setTimeout(() => { | +    this.document.ownerGlobal.setTimeout(() => { | ||||||
| +      this.window.document.documentElement.removeAttribute("supress-primary-adjustment"); | +      this.window.document.documentElement.removeAttribute("supress-primary-adjustment"); | ||||||
| +    }, 100); | +    }, 100); | ||||||
| +    this.window.gZenUIManager.onUrlbarClose(); | +     | ||||||
| +    this.removeAttribute("zen-floating-urlbar"); | +    this.removeAttribute("zen-floating-urlbar"); | ||||||
| + | + | ||||||
|      this.removeAttribute("breakout-extend"); |      this.removeAttribute("breakout-extend"); | ||||||
|      this.#updateTextboxPosition(); |      this.#updateTextboxPosition(); | ||||||
|    } |    } | ||||||
| @@ -2361,7 +2444,7 @@ export class UrlbarInput { | @@ -2595,10 +2679,12 @@ export class UrlbarInput { | ||||||
|      forceUnifiedSearchButtonAvailable = false |  | ||||||
|    ) { |  | ||||||
|      let prevState = this.getAttribute("pageproxystate"); |  | ||||||
| - |  | ||||||
| +    this.removeAttribute("had-proxystate"); |  | ||||||
|      this.setAttribute("pageproxystate", state); |  | ||||||
|      this._inputContainer.setAttribute("pageproxystate", state); |  | ||||||
|      this._identityBox?.setAttribute("pageproxystate", state); |  | ||||||
| @@ -2595,10 +2678,12 @@ export class UrlbarInput { |  | ||||||
|        return; |        return; | ||||||
|      } |      } | ||||||
|      this.textbox.style.top = px( |      this.textbox.style.top = px( | ||||||
| @@ -169,7 +161,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|      ); |      ); | ||||||
|    } |    } | ||||||
|   |   | ||||||
| @@ -2658,9 +2743,10 @@ export class UrlbarInput { | @@ -2658,9 +2744,10 @@ export class UrlbarInput { | ||||||
|            return; |            return; | ||||||
|          } |          } | ||||||
|   |   | ||||||
| @@ -181,7 +173,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|          ); |          ); | ||||||
|          this.textbox.style.setProperty( |          this.textbox.style.setProperty( | ||||||
|            "--urlbar-height", |            "--urlbar-height", | ||||||
| @@ -3093,6 +3179,7 @@ export class UrlbarInput { | @@ -3093,6 +3180,7 @@ export class UrlbarInput { | ||||||
|    } |    } | ||||||
|   |   | ||||||
|    _toggleActionOverride(event) { |    _toggleActionOverride(event) { | ||||||
| @@ -189,7 +181,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|      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 || | ||||||
| @@ -3197,7 +3284,7 @@ export class UrlbarInput { | @@ -3197,7 +3285,7 @@ export class UrlbarInput { | ||||||
|        return val; |        return val; | ||||||
|      } |      } | ||||||
|      let trimmedValue = lazy.UrlbarPrefs.get("trimURLs") |      let trimmedValue = lazy.UrlbarPrefs.get("trimURLs") | ||||||
| @@ -198,7 +190,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|        : 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. | ||||||
| @@ -3501,6 +3588,7 @@ export class UrlbarInput { | @@ -3501,6 +3589,7 @@ export class UrlbarInput { | ||||||
|      resultDetails = null, |      resultDetails = null, | ||||||
|      browser = this.window.gBrowser.selectedBrowser |      browser = this.window.gBrowser.selectedBrowser | ||||||
|    ) { |    ) { | ||||||
| @@ -206,7 +198,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|      if (this.isAddressbar) { |      if (this.isAddressbar) { | ||||||
|        this.#prepareAddressbarLoad( |        this.#prepareAddressbarLoad( | ||||||
|          url, |          url, | ||||||
| @@ -3608,6 +3696,10 @@ export class UrlbarInput { | @@ -3608,6 +3697,10 @@ export class UrlbarInput { | ||||||
|        } |        } | ||||||
|        reuseEmpty = true; |        reuseEmpty = true; | ||||||
|      } |      } | ||||||
| @@ -217,7 +209,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|      if ( |      if ( | ||||||
|        where == "tab" && |        where == "tab" && | ||||||
|        reuseEmpty && |        reuseEmpty && | ||||||
| @@ -3615,6 +3707,9 @@ export class UrlbarInput { | @@ -3615,6 +3708,9 @@ export class UrlbarInput { | ||||||
|      ) { |      ) { | ||||||
|        where = "current"; |        where = "current"; | ||||||
|      } |      } | ||||||
| @@ -227,7 +219,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|      return where; |      return where; | ||||||
|    } |    } | ||||||
|   |   | ||||||
| @@ -3872,6 +3967,7 @@ export class UrlbarInput { | @@ -3872,6 +3968,7 @@ export class UrlbarInput { | ||||||
|        this.setResultForCurrentValue(null); |        this.setResultForCurrentValue(null); | ||||||
|        this.handleCommand(); |        this.handleCommand(); | ||||||
|        this.controller.clearLastQueryContextCache(); |        this.controller.clearLastQueryContextCache(); | ||||||
| @@ -235,7 +227,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|   |   | ||||||
|        this._suppressStartQuery = false; |        this._suppressStartQuery = false; | ||||||
|      }); |      }); | ||||||
| @@ -3879,7 +3975,6 @@ export class UrlbarInput { | @@ -3879,7 +3976,6 @@ export class UrlbarInput { | ||||||
|      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. | ||||||
| @@ -243,7 +235,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|   |   | ||||||
|        let controller = |        let controller = | ||||||
|          this.document.commandDispatcher.getControllerForCommand("cmd_paste"); |          this.document.commandDispatcher.getControllerForCommand("cmd_paste"); | ||||||
| @@ -3991,7 +4086,11 @@ export class UrlbarInput { | @@ -3991,7 +4087,11 @@ export class UrlbarInput { | ||||||
|      if (!engineName && !source && !this.hasAttribute("searchmode")) { |      if (!engineName && !source && !this.hasAttribute("searchmode")) { | ||||||
|        return; |        return; | ||||||
|      } |      } | ||||||
| @@ -256,7 +248,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|      if (this._searchModeIndicatorTitle) { |      if (this._searchModeIndicatorTitle) { | ||||||
|        this._searchModeIndicatorTitle.textContent = ""; |        this._searchModeIndicatorTitle.textContent = ""; | ||||||
|        this._searchModeIndicatorTitle.removeAttribute("data-l10n-id"); |        this._searchModeIndicatorTitle.removeAttribute("data-l10n-id"); | ||||||
| @@ -4302,6 +4401,7 @@ export class UrlbarInput { | @@ -4302,6 +4402,7 @@ export class UrlbarInput { | ||||||
|   |   | ||||||
|      this.document.l10n.setAttributes( |      this.document.l10n.setAttributes( | ||||||
|        this.inputField, |        this.inputField, | ||||||
| @@ -264,7 +256,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|        l10nId, |        l10nId, | ||||||
|        l10nId == "urlbar-placeholder-with-name" ? { name } : undefined |        l10nId == "urlbar-placeholder-with-name" ? { name } : undefined | ||||||
|      ); |      ); | ||||||
| @@ -4413,6 +4513,11 @@ export class UrlbarInput { | @@ -4413,6 +4514,11 @@ export class UrlbarInput { | ||||||
|    } |    } | ||||||
|   |   | ||||||
|    _on_click(event) { |    _on_click(event) { | ||||||
| @@ -276,7 +268,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|      if ( |      if ( | ||||||
|        event.target == this.inputField || |        event.target == this.inputField || | ||||||
|        event.target == this._inputContainer |        event.target == this._inputContainer | ||||||
| @@ -4485,7 +4590,7 @@ export class UrlbarInput { | @@ -4485,7 +4591,7 @@ export class UrlbarInput { | ||||||
|        } |        } | ||||||
|      } |      } | ||||||
|   |   | ||||||
| @@ -285,7 +277,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|        this.view.autoOpen({ event }); |        this.view.autoOpen({ event }); | ||||||
|      } else { |      } else { | ||||||
|        if (this._untrimOnFocusAfterKeydown) { |        if (this._untrimOnFocusAfterKeydown) { | ||||||
| @@ -4525,9 +4630,16 @@ export class UrlbarInput { | @@ -4525,9 +4631,16 @@ export class UrlbarInput { | ||||||
|    } |    } | ||||||
|   |   | ||||||
|    _on_mousedown(event) { |    _on_mousedown(event) { | ||||||
| @@ -303,7 +295,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|   |   | ||||||
|          if ( |          if ( | ||||||
|            event.target != this.inputField && |            event.target != this.inputField && | ||||||
| @@ -4538,6 +4650,10 @@ export class UrlbarInput { | @@ -4538,6 +4651,10 @@ export class UrlbarInput { | ||||||
|   |   | ||||||
|          this.focusedViaMousedown = !this.focused; |          this.focusedViaMousedown = !this.focused; | ||||||
|          this._preventClickSelectsAll = this.focused; |          this._preventClickSelectsAll = this.focused; | ||||||
| @@ -314,7 +306,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|   |   | ||||||
|          // 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(). | ||||||
| @@ -4573,7 +4689,7 @@ export class UrlbarInput { | @@ -4573,7 +4690,7 @@ export class UrlbarInput { | ||||||
|          } |          } | ||||||
|          // 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. | ||||||
| @@ -323,7 +315,7 @@ index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..f28c9a1ac086af429a93bd01be5d3558 | |||||||
|            break; |            break; | ||||||
|          } |          } | ||||||
|   |   | ||||||
| @@ -4890,7 +5006,7 @@ export class UrlbarInput { | @@ -4890,7 +5007,7 @@ export class UrlbarInput { | ||||||
|      // 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 = | ||||||
|   | |||||||
| @@ -544,12 +544,6 @@ groupbox h2 { | |||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| @media (max-width: 1320px) { |  | ||||||
|   #zenLayoutList { |  | ||||||
|     flex-wrap: wrap; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /* Disable mozilla's settings */ | /* Disable mozilla's settings */ | ||||||
|  |  | ||||||
| #dataCollectionCategory, | #dataCollectionCategory, | ||||||
|   | |||||||
| @@ -1,16 +1,8 @@ | |||||||
| 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 e06addf1602dc26ff4e75a8db6251231690f3f80..ffac005d5040852eda8f574f65f2eadf5ecbd642 100644 | index e06addf1602dc26ff4e75a8db6251231690f3f80..86e2cd0194bb37fa140a2f93eccfdd61419a9aec 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 | ||||||
| @@ -134,7 +134,6 @@ | @@ -276,7 +276,7 @@ | ||||||
|    } |  | ||||||
|   |  | ||||||
|    browser:is([blank], [pendingpaint]) { |  | ||||||
| -    opacity: 0; |  | ||||||
|    } |  | ||||||
|   |  | ||||||
|    browser[type="content"] { |  | ||||||
| @@ -276,7 +275,7 @@ |  | ||||||
|   |   | ||||||
|  .dialogStack { |  .dialogStack { | ||||||
|    z-index: var(--browser-stack-z-index-dialog-stack); |    z-index: var(--browser-stack-z-index-dialog-stack); | ||||||
|   | |||||||
| @@ -1,24 +0,0 @@ | |||||||
| diff --git a/toolkit/content/widgets/panel.js b/toolkit/content/widgets/panel.js |  | ||||||
| index 1dd4fc2a839fc6fde1ce2fc6437625e8d22bbb90..04fcb049225148f1b1f9c4b16cf2d2537887fbec 100644 |  | ||||||
| --- a/toolkit/content/widgets/panel.js |  | ||||||
| +++ b/toolkit/content/widgets/panel.js |  | ||||||
| @@ -138,6 +138,9 @@ |  | ||||||
|              this.anchorNode.closest("toolbarbutton, .anchor-root") || |  | ||||||
|              this.anchorNode; |  | ||||||
|            anchorRoot.setAttribute("open", "true"); |  | ||||||
| +          if (anchorRoot.closest("#urlbar") && window.gURLBar) { |  | ||||||
| +            gURLBar.setAttribute("has-popup-open", "true"); |  | ||||||
| +          } |  | ||||||
|          } |  | ||||||
|   |  | ||||||
|          if (this.getAttribute("animate") != "false") { |  | ||||||
| @@ -208,6 +211,9 @@ |  | ||||||
|              this.anchorNode.closest("toolbarbutton, .anchor-root") || |  | ||||||
|              this.anchorNode; |  | ||||||
|            anchorRoot.removeAttribute("open"); |  | ||||||
| +          if (anchorRoot.closest("#urlbar") && window.gURLBar) { |  | ||||||
| +            gURLBar.removeAttribute("has-popup-open"); |  | ||||||
| +          } |  | ||||||
|          } |  | ||||||
|        } |  | ||||||
|   |  | ||||||
| @@ -69,12 +69,12 @@ export var ZenCustomizableUI = new (class { | |||||||
|         addon-webext-overflowtarget="overflowed-extensions-list" |         addon-webext-overflowtarget="overflowed-extensions-list" | ||||||
|         mode="icons"> |         mode="icons"> | ||||||
|         <hbox id="zen-sidebar-top-buttons-customization-target" class="customization-target" flex="1"> |         <hbox id="zen-sidebar-top-buttons-customization-target" class="customization-target" flex="1"> | ||||||
|           <toolbaritem id="zen-toggle-compact-mode" removable="true" data-l10n-id="zen-toggle-compact-mode-button"> |           <toolbaritem id="zen-toggle-compact-mode" removable="true"> | ||||||
|             <toolbarbutton |             <toolbarbutton | ||||||
|               class="toolbarbutton-1" |               class="toolbarbutton-1" | ||||||
|               command="cmd_toggleCompactModeIgnoreHover" |               command="cmd_toggleCompactModeIgnoreHover" | ||||||
|               data-l10n-id="zen-toggle-compact-mode-button" |               flex="1" | ||||||
|               flex="1" /> |               data-l10n-id="zen-toggle-compact-mode-button" /> | ||||||
|           </toolbaritem> |           </toolbaritem> | ||||||
|           <html:div id="zen-sidebar-top-buttons-separator" skipintoolbarset="true" overflows="false"></html:div> |           <html:div id="zen-sidebar-top-buttons-separator" skipintoolbarset="true" overflows="false"></html:div> | ||||||
|         </hbox> |         </hbox> | ||||||
|   | |||||||
| @@ -24,11 +24,11 @@ | |||||||
|         const { exists: shouldExist = true } = descendantSelectors; |         const { exists: shouldExist = true } = descendantSelectors; | ||||||
|         if (exists === shouldExist) { |         if (exists === shouldExist) { | ||||||
|           if (!element.hasAttribute(stateAttribute)) { |           if (!element.hasAttribute(stateAttribute)) { | ||||||
|             gZenCompactModeManager._setElementExpandAttribute(element, true, stateAttribute); |             element.setAttribute(stateAttribute, 'true'); | ||||||
|           } |           } | ||||||
|         } else { |         } else { | ||||||
|           if (element.hasAttribute(stateAttribute)) { |           if (element.hasAttribute(stateAttribute)) { | ||||||
|             gZenCompactModeManager._setElementExpandAttribute(element, false, stateAttribute); |             element.removeAttribute(stateAttribute); | ||||||
|           } |           } | ||||||
|         } |         } | ||||||
|       }; |       }; | ||||||
|   | |||||||
| @@ -275,18 +275,15 @@ var gZenUIManager = { | |||||||
|   // Section: URL bar |   // Section: URL bar | ||||||
|  |  | ||||||
|   onUrlbarOpen() { |   onUrlbarOpen() { | ||||||
|     setTimeout(() => { |     gURLBar.setAttribute('had-proxystate', gURLBar.getAttribute('pageproxystate')); | ||||||
|       const hadValid = gURLBar.getAttribute('pageproxystate') === 'valid'; |  | ||||||
|     gURLBar.setPageProxyState('invalid', false); |     gURLBar.setPageProxyState('invalid', false); | ||||||
|       gURLBar.setAttribute('had-proxystate', hadValid); |  | ||||||
|     }, 0); |  | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   onUrlbarClose() { |   onUrlbarClose() { | ||||||
|     if (gURLBar.getAttribute('had-proxystate') == 'true') { |     if (gURLBar.hasAttribute('had-proxystate')) { | ||||||
|       gURLBar.setPageProxyState('valid', false); |       gURLBar.setURI(); | ||||||
|     } |  | ||||||
|       gURLBar.removeAttribute('had-proxystate'); |       gURLBar.removeAttribute('had-proxystate'); | ||||||
|  |     } | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   onUrlbarSearchModeChanged(event) { |   onUrlbarSearchModeChanged(event) { | ||||||
|   | |||||||
| @@ -133,17 +133,13 @@ | |||||||
| } | } | ||||||
|  |  | ||||||
| :root:not([zen-single-toolbar='true']) #zen-appcontent-wrapper { | :root:not([zen-single-toolbar='true']) #zen-appcontent-wrapper { | ||||||
|   z-index: 3; |   z-index: 2; | ||||||
| } | } | ||||||
|  |  | ||||||
| #nav-bar { | :root[zen-single-toolbar='true'] #nav-bar { | ||||||
|   border-top-color: transparent !important; |  | ||||||
|  |  | ||||||
|   :root[zen-single-toolbar='true'] & { |  | ||||||
|   border-top: none !important; |   border-top: none !important; | ||||||
|   --zen-toolbar-height: 37px; |   --zen-toolbar-height: 37px; | ||||||
| } | } | ||||||
| } |  | ||||||
|  |  | ||||||
| #zen-main-app-wrapper { | #zen-main-app-wrapper { | ||||||
|   background: var(--zen-themed-toolbar-bg-transparent); |   background: var(--zen-themed-toolbar-bg-transparent); | ||||||
| @@ -247,7 +243,6 @@ | |||||||
| @media (-moz-platform: macos) { | @media (-moz-platform: macos) { | ||||||
|   :root[zen-window-buttons-reversed='true'][zen-right-side='true'] .titlebar-buttonbox-container { |   :root[zen-window-buttons-reversed='true'][zen-right-side='true'] .titlebar-buttonbox-container { | ||||||
|     margin-inline-start: max(calc(var(--zen-element-separation) - 3px), 4px); |     margin-inline-start: max(calc(var(--zen-element-separation) - 3px), 4px); | ||||||
|     margin-block: auto; |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -136,20 +136,16 @@ | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   .identity-box-button, |   .identity-box-button, | ||||||
|   .urlbar-page-action { |   #zen-copy-url-button { | ||||||
|     opacity: 0; |     opacity: 0; | ||||||
|     height: 100%; /* To still be able to open popups */ |  | ||||||
|     visibility: collapse; |  | ||||||
|  |  | ||||||
|     :root:not([supress-primary-adjustment='true']) & { |  | ||||||
|     transition: |     transition: | ||||||
|       opacity 0.15s, |       opacity 0.15s, | ||||||
|       visibility 0.15s; |       visibility 0.15s; | ||||||
|     } |     visibility: collapse; | ||||||
|  |     height: 100%; /* To still be able to open popups */ | ||||||
|  |  | ||||||
|     #navigator-toolbox:hover &, |     #navigator-toolbox:hover &, | ||||||
|     &[open], |     &[open], | ||||||
|     #urlbar[has-popup-open='true'] &, |  | ||||||
|     #identity-box[pageproxystate='invalid'] & { |     #identity-box[pageproxystate='invalid'] & { | ||||||
|       opacity: 1; |       opacity: 1; | ||||||
|       visibility: visible; |       visibility: visible; | ||||||
| @@ -300,6 +296,13 @@ | |||||||
| :root[zen-single-toolbar='true'] { | :root[zen-single-toolbar='true'] { | ||||||
|   --urlbar-icon-border-radius: 8px !important; |   --urlbar-icon-border-radius: 8px !important; | ||||||
|  |  | ||||||
|  |   .urlbar-page-action:not([open]):not([showing]):not( | ||||||
|  |       :is(#zen-copy-url-button, #identity-permission-box) | ||||||
|  |     ), | ||||||
|  |   #tracking-protection-icon-container { | ||||||
|  |     display: none; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   #identity-permission-box > *:not(#zen-site-data-icon-button) { |   #identity-permission-box > *:not(#zen-site-data-icon-button) { | ||||||
|     visibility: collapse; |     visibility: collapse; | ||||||
|   } |   } | ||||||
| @@ -310,7 +313,7 @@ | |||||||
|  |  | ||||||
|   #urlbar:not([breakout-extend='true']) { |   #urlbar:not([breakout-extend='true']) { | ||||||
|     #identity-box:not([pageproxystate='invalid']) { |     #identity-box:not([pageproxystate='invalid']) { | ||||||
|       order: 2; |       order: 9; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -739,9 +742,7 @@ | |||||||
|  * them into a single, unified button */ |  * them into a single, unified button */ | ||||||
| #reader-mode-button, | #reader-mode-button, | ||||||
| #urlbar-go-button, | #urlbar-go-button, | ||||||
| #star-button-box, | #star-button-box { | ||||||
| #picture-in-picture-button, |  | ||||||
| #pageActionButton:not([open]) { |  | ||||||
|   display: none !important; |   display: none !important; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -33,12 +33,6 @@ | |||||||
|   display: none !important; |   display: none !important; | ||||||
| } | } | ||||||
|  |  | ||||||
| /* hide Mozilla services from the app menu */ |  | ||||||
| #PanelUI-fxa-menu-services, |  | ||||||
| #PanelUI-fxa-cta-menu { |  | ||||||
|   display: none !important; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| body > #confetti { | body > #confetti { | ||||||
|   z-index: 1; |   z-index: 1; | ||||||
| } | } | ||||||
| @@ -296,23 +290,16 @@ body > #confetti { | |||||||
|   --arrowpanel-menuitem-border-radius: 10px; |   --arrowpanel-menuitem-border-radius: 10px; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | #unified-extensions-messages-container { | ||||||
|  |   display: none; | ||||||
|  | } | ||||||
|  |  | ||||||
| #zen-site-data-addons { | #zen-site-data-addons { | ||||||
|   display: flex; |   display: flex; | ||||||
|   flex-wrap: wrap; |   flex-wrap: wrap; | ||||||
|   gap: 8px; |   gap: 8px; | ||||||
|   overflow: visible; |   overflow: visible; | ||||||
|  |  | ||||||
|   unified-extensions-item-messagebar-wrapper, |  | ||||||
|   .unified-extensions-item-contents { |  | ||||||
|     display: none !important; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   &[overflowing='true'] { |  | ||||||
|     overflow-x: auto; |  | ||||||
|     max-height: 420px; |  | ||||||
|     mask-image: linear-gradient(to top, transparent, black 5%); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   .unified-extensions-item-name, |   .unified-extensions-item-name, | ||||||
|   .unified-extensions-item-message, |   .unified-extensions-item-message, | ||||||
|   .unified-extensions-item-message-hover, |   .unified-extensions-item-message-hover, | ||||||
| @@ -339,11 +326,6 @@ body > #confetti { | |||||||
|       justify-content: center; |       justify-content: center; | ||||||
|       align-items: center; |       align-items: center; | ||||||
|       border-radius: 6px; |       border-radius: 6px; | ||||||
|  |  | ||||||
|       @media not (-moz-platform: macos) { |  | ||||||
|         border-radius: 4px; |  | ||||||
|       } |  | ||||||
|  |  | ||||||
|       transition: |       transition: | ||||||
|         background-color 0.1s ease-in-out, |         background-color 0.1s ease-in-out, | ||||||
|         transform 0.12s ease-in-out; |         transform 0.12s ease-in-out; | ||||||
| @@ -503,10 +485,6 @@ body > #confetti { | |||||||
|   padding: 8px; |   padding: 8px; | ||||||
|   padding-bottom: 0; |   padding-bottom: 0; | ||||||
|  |  | ||||||
|   :root[zen-single-toolbar='true']:not([zen-right-side='true']) & { |  | ||||||
|     flex-direction: row-reverse; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   & toolbarbutton { |   & toolbarbutton { | ||||||
|     margin: 0; |     margin: 0; | ||||||
|     appearance: none; |     appearance: none; | ||||||
| @@ -537,27 +515,18 @@ body > #confetti { | |||||||
|       position: absolute; |       position: absolute; | ||||||
|       width: 100%; |       width: 100%; | ||||||
|       height: 100%; |       height: 100%; | ||||||
|       @media (-moz-platform: macos) { |  | ||||||
|       background: linear-gradient( |       background: linear-gradient( | ||||||
|         to bottom, |         to bottom, | ||||||
|         light-dark(rgb(255, 255, 255), rgb(34, 34, 34)), |         light-dark(rgb(255, 255, 255), rgb(34, 34, 34)), | ||||||
|         light-dark(rgb(246, 246, 246), rgb(21, 21, 21)) |         light-dark(rgb(246, 246, 246), rgb(21, 21, 21)) | ||||||
|       ); |       ); | ||||||
|  |       transition: transform 0.12s ease-in-out; | ||||||
|       box-shadow: |       box-shadow: | ||||||
|         0px 2px 4px rgba(0, 0, 0, 0.075), |         0px 2px 4px rgba(0, 0, 0, 0.075), | ||||||
|         inset 0px 1px 0px light-dark(transparent, rgba(255, 255, 255, 0.15)); |         inset 0px 1px 0px light-dark(transparent, rgba(255, 255, 255, 0.15)); | ||||||
|       border-radius: 6px; |       border-radius: 6px; | ||||||
|       --base-border-color: light-dark(rgba(0, 0, 0, 0.175), rgba(255, 255, 255, 0.1)); |       --base-border-color: light-dark(rgba(0, 0, 0, 0.175), rgba(255, 255, 255, 0.1)); | ||||||
|       border: 1px solid light-dark(var(--base-border-color), rgb(21, 21, 21)); |       border: 1px solid light-dark(var(--base-border-color), rgb(21, 21, 21)); | ||||||
|       } |  | ||||||
|  |  | ||||||
|       @media not (-moz-platform: macos) { |  | ||||||
|         border-radius: 4px; |  | ||||||
|         background-color: color-mix(in srgb, currentcolor 6%, transparent); |  | ||||||
|       } |  | ||||||
|  |  | ||||||
|       transition: transform 0.12s ease-in-out; |  | ||||||
|       box-sizing: border-box; |       box-sizing: border-box; | ||||||
|       will-change: transform; |       will-change: transform; | ||||||
|     } |     } | ||||||
| @@ -584,10 +553,6 @@ body > #confetti { | |||||||
|   margin: 6px 0; |   margin: 6px 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| #unified-extensions-messages-container:empty { |  | ||||||
|   display: none; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /* Overflow panel */ | /* Overflow panel */ | ||||||
| #widget-overflow-mainView { | #widget-overflow-mainView { | ||||||
|   --menu-panel-width-wide: 200px; |   --menu-panel-width-wide: 200px; | ||||||
|   | |||||||
| @@ -195,8 +195,7 @@ | |||||||
|  |  | ||||||
|   /* Transitions */ |   /* Transitions */ | ||||||
|   --zen-tabbox-element-indent-transition: margin-inline-start 0.1s ease-in-out; |   --zen-tabbox-element-indent-transition: margin-inline-start 0.1s ease-in-out; | ||||||
|   --zen-hidden-toolbar-transition-duration: 0.15s; |   --zen-hidden-toolbar-transition: 0.15s ease-in-out; | ||||||
|   --zen-hidden-toolbar-transition: var(--zen-hidden-toolbar-transition-duration) ease-in-out; |  | ||||||
|  |  | ||||||
|   /* XUL */ |   /* XUL */ | ||||||
|   --zen-main-browser-background: light-dark(rgb(235, 235, 235), #1b1b1b); |   --zen-main-browser-background: light-dark(rgb(235, 235, 235), #1b1b1b); | ||||||
|   | |||||||
| @@ -143,7 +143,6 @@ var gZenCompactModeManager = { | |||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   addHasPolyfillObserver() { |   addHasPolyfillObserver() { | ||||||
|     const attributes = ['panelopen', 'open', 'breakout-extend', 'zen-floating-urlbar']; |  | ||||||
|     this.sidebarObserverId = ZenHasPolyfill.observeSelectorExistence( |     this.sidebarObserverId = ZenHasPolyfill.observeSelectorExistence( | ||||||
|       this.sidebar, |       this.sidebar, | ||||||
|       [ |       [ | ||||||
| @@ -153,21 +152,8 @@ var gZenCompactModeManager = { | |||||||
|         }, |         }, | ||||||
|       ], |       ], | ||||||
|       'zen-compact-mode-active', |       'zen-compact-mode-active', | ||||||
|       attributes |       ['panelopen', 'open', 'breakout-extend', 'zen-floating-urlbar'] | ||||||
|     ); |     ); | ||||||
|     this.toolbarObserverId = ZenHasPolyfill.observeSelectorExistence( |  | ||||||
|       document.getElementById('zen-appcontent-navbar-wrapper'), |  | ||||||
|       [ |  | ||||||
|         { |  | ||||||
|           selector: |  | ||||||
|             ":is([panelopen='true'], [open='true'], #urlbar:focus-within, [breakout-extend='true']):not(.zen-compact-mode-ignore)", |  | ||||||
|         }, |  | ||||||
|       ], |  | ||||||
|       'zen-compact-mode-active', |  | ||||||
|       attributes |  | ||||||
|     ); |  | ||||||
|     // Always connect this observer, we need it even if compact mode is disabled |  | ||||||
|     ZenHasPolyfill.connectObserver(this.toolbarObserverId); |  | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   flashSidebarIfNecessary(aInstant = false) { |   flashSidebarIfNecessary(aInstant = false) { | ||||||
| @@ -216,7 +202,7 @@ var gZenCompactModeManager = { | |||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   updateCompactModeContext(isSingleToolbar) { |   updateCompactModeContext(isSingleToolbar) { | ||||||
|     const isIllegalState = this.checkIfIllegalState(); |     isSingleToolbar ||= this.checkIfIllegalState(); | ||||||
|     const menuitem = document.getElementById('zen-context-menu-compact-mode-toggle'); |     const menuitem = document.getElementById('zen-context-menu-compact-mode-toggle'); | ||||||
|     const menu = document.getElementById('zen-context-menu-compact-mode'); |     const menu = document.getElementById('zen-context-menu-compact-mode'); | ||||||
|     if (isSingleToolbar) { |     if (isSingleToolbar) { | ||||||
| @@ -226,14 +212,6 @@ var gZenCompactModeManager = { | |||||||
|       menu.removeAttribute('hidden'); |       menu.removeAttribute('hidden'); | ||||||
|       menu.querySelector('menupopup').prepend(menuitem); |       menu.querySelector('menupopup').prepend(menuitem); | ||||||
|     } |     } | ||||||
|     const hideToolbarMenuItem = document.getElementById( |  | ||||||
|       'zen-context-menu-compact-mode-hide-toolbar' |  | ||||||
|     ); |  | ||||||
|     if (isIllegalState) { |  | ||||||
|       hideToolbarMenuItem.setAttribute('disabled', 'true'); |  | ||||||
|     } else { |  | ||||||
|       hideToolbarMenuItem.removeAttribute('disabled'); |  | ||||||
|     } |  | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   hideSidebar() { |   hideSidebar() { | ||||||
| @@ -623,7 +601,7 @@ var gZenCompactModeManager = { | |||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   _setElementExpandAttribute(element, value, attr = 'zen-has-hover') { |   _setElementExpandAttribute(element, value, attr = 'zen-has-hover') { | ||||||
|     const kVerifiedAttributes = ['zen-has-hover', 'has-popup-menu', 'zen-compact-mode-active']; |     const kVerifiedAttributes = ['zen-has-hover', 'has-popup-menu']; | ||||||
|     const isToolbar = element.id === 'zen-appcontent-navbar-wrapper'; |     const isToolbar = element.id === 'zen-appcontent-navbar-wrapper'; | ||||||
|     if (value) { |     if (value) { | ||||||
|       element.setAttribute(attr, 'true'); |       element.setAttribute(attr, 'true'); | ||||||
| @@ -634,7 +612,8 @@ var gZenCompactModeManager = { | |||||||
|             document.documentElement.hasAttribute('zen-has-bookmarks'))) || |             document.documentElement.hasAttribute('zen-has-bookmarks'))) || | ||||||
|           (this.preference && |           (this.preference && | ||||||
|             Services.prefs.getBoolPref('zen.view.compact.hide-toolbar') && |             Services.prefs.getBoolPref('zen.view.compact.hide-toolbar') && | ||||||
|             !gZenVerticalTabsManager._hasSetSingleToolbar)) |             !gZenVerticalTabsManager._hasSetSingleToolbar && | ||||||
|  |             !gURLBar.hasAttribute('breakout-extend'))) | ||||||
|       ) { |       ) { | ||||||
|         gBrowser.tabpanels.setAttribute('has-toolbar-hovered', 'true'); |         gBrowser.tabpanels.setAttribute('has-toolbar-hovered', 'true'); | ||||||
|       } |       } | ||||||
|   | |||||||
| @@ -35,8 +35,7 @@ | |||||||
|     overflow: clip; |     overflow: clip; | ||||||
|  |  | ||||||
|     & #urlbar:not([breakout-extend='true']) { |     & #urlbar:not([breakout-extend='true']) { | ||||||
|       /* Sometimes, "opacity: 1" is forced elsewhere */ |       opacity: 0; | ||||||
|       opacity: 0 !important; |  | ||||||
|       pointer-events: none; |       pointer-events: none; | ||||||
|       transition: opacity var(--zen-hidden-toolbar-transition); |       transition: opacity var(--zen-hidden-toolbar-transition); | ||||||
|     } |     } | ||||||
| @@ -49,18 +48,20 @@ | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   & #zen-appcontent-navbar-wrapper:is( |   & #zen-appcontent-navbar-wrapper[zen-has-hover], | ||||||
|     [zen-has-hover], |   & #zen-appcontent-navbar-wrapper[has-popup-menu], | ||||||
|     [has-popup-menu], |   & | ||||||
|     [zen-compact-mode-active] |     #zen-appcontent-navbar-wrapper:has( | ||||||
|  |       *:is([panelopen='true'], [open='true'], #urlbar:focus-within, [breakout-extend='true']):not(.zen-compact-mode-ignore) | ||||||
|     ) { |     ) { | ||||||
|  |  | ||||||
|     height: var(--zen-toolbar-height-with-bookmarks); |     height: var(--zen-toolbar-height-with-bookmarks); | ||||||
|     overflow: inherit; |     overflow: inherit; | ||||||
|  |  | ||||||
| %include windows-captions-fix-active.inc.css | %include windows-captions-fix-active.inc.css | ||||||
|  |  | ||||||
|     & #urlbar { |     & #urlbar { | ||||||
|       opacity: 1 !important; |       opacity: 1; | ||||||
|       pointer-events: auto; |       pointer-events: auto; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,6 +5,6 @@ | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
| & .titlebar-buttonbox-container { | & .titlebar-buttonbox-container { | ||||||
|   max-height: 100%; |   visibility: visible; | ||||||
|   transition: none; |   transition: none; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -5,15 +5,9 @@ | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
| & .titlebar-buttonbox-container { | & .titlebar-buttonbox-container { | ||||||
|   max-height: 0px; |   display: collapse; | ||||||
|   /* We need to hide them since on Windows the native |   /* We need to hide them since on Windows the native | ||||||
|    * panels when hovering over them can interfere with the |    * panels when hovering over them can interfere with the | ||||||
|    * web content */ |    * web content */ | ||||||
|   transition: max-height 0s; |   transition: visibility var(--zen-hidden-toolbar-transition); | ||||||
|   transition-delay: calc(var(--zen-hidden-toolbar-transition-duration) + 0.2s); |  | ||||||
|  |  | ||||||
|   & .titlebar-button { |  | ||||||
|     padding-top: 0 !important; |  | ||||||
|     padding-bottom: 0 !important; |  | ||||||
|   } |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -24,9 +24,6 @@ | |||||||
|     #duringOpening = false; |     #duringOpening = false; | ||||||
|     #ignoreClose = false; |     #ignoreClose = false; | ||||||
|  |  | ||||||
|     // Click handling |  | ||||||
|     #lastLinkClickData = { clientX: 0, clientY: 0, height: 0, width: 0 }; |  | ||||||
|  |  | ||||||
|     // Arc animation configuration |     // Arc animation configuration | ||||||
|     #ARC_CONFIG = Object.freeze({ |     #ARC_CONFIG = Object.freeze({ | ||||||
|       ARC_STEPS: 70, // Increased for smoother bounce |       ARC_STEPS: 70, // Increased for smoother bounce | ||||||
| @@ -247,7 +244,7 @@ | |||||||
|         { |         { | ||||||
|           duration: 0.3, |           duration: 0.3, | ||||||
|           type: 'spring', |           type: 'spring', | ||||||
|           delay: 0.2, |           delay: 0.15, | ||||||
|           bounce: 0, |           bounce: 0, | ||||||
|         } |         } | ||||||
|       ); |       ); | ||||||
| @@ -271,31 +268,10 @@ | |||||||
|         data.height |         data.height | ||||||
|       ); |       ); | ||||||
|       return await this.#imageBitmapToBase64( |       return await this.#imageBitmapToBase64( | ||||||
|         await window.browsingContext.currentWindowGlobal.drawSnapshot( |         await window.browsingContext.currentWindowGlobal.drawSnapshot(rect, 1, 'transparent', true) | ||||||
|           rect, |  | ||||||
|           1, |  | ||||||
|           'transparent', |  | ||||||
|           undefined |  | ||||||
|         ) |  | ||||||
|       ); |       ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Set the last link click data |  | ||||||
|      * @param {Object} data - The link click data |  | ||||||
|      */ |  | ||||||
|     set lastLinkClickData(data) { |  | ||||||
|       this.#lastLinkClickData = data; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Get the last link click data |  | ||||||
|      * @returns {Object} The last link click data |  | ||||||
|      */ |  | ||||||
|     get lastLinkClickData() { |  | ||||||
|       return this.#lastLinkClickData; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Open a glance overlay with the specified data |      * Open a glance overlay with the specified data | ||||||
|      * @param {Object} data - Glance data including URL, position, and dimensions |      * @param {Object} data - Glance data including URL, position, and dimensions | ||||||
| @@ -313,13 +289,6 @@ | |||||||
|         return; |         return; | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       if (!data.height || !data.width) { |  | ||||||
|         data = { |  | ||||||
|           ...data, |  | ||||||
|           ...this.lastLinkClickData, |  | ||||||
|         }; |  | ||||||
|       } |  | ||||||
|  |  | ||||||
|       this.#setAnimationState(true); |       this.#setAnimationState(true); | ||||||
|       const currentTab = ownerTab ?? gBrowser.selectedTab; |       const currentTab = ownerTab ?? gBrowser.selectedTab; | ||||||
|       const browserElement = this.#createBrowserElement(data.url, currentTab, existingTab); |       const browserElement = this.#createBrowserElement(data.url, currentTab, existingTab); | ||||||
| @@ -356,14 +325,13 @@ | |||||||
|         gZenViewSplitter.onLocationChange(browserElement); |         gZenViewSplitter.onLocationChange(browserElement); | ||||||
|         this.#prepareGlanceAnimation(data, browserElement); |         this.#prepareGlanceAnimation(data, browserElement); | ||||||
|         if (data.width && data.height) { |         if (data.width && data.height) { | ||||||
|           // It is guaranteed that we will animate this opacity later on |  | ||||||
|           // when we start animating the glance. |  | ||||||
|           this.contentWrapper.style.opacity = 0; |  | ||||||
|           data.elementData = await this.#getElementPreviewData(data); |           data.elementData = await this.#getElementPreviewData(data); | ||||||
|         } |         } | ||||||
|         this.#glances.get(this.#currentGlanceID).elementData = data.elementData; |         this.#glances.get(this.#currentGlanceID).elementData = data.elementData; | ||||||
|  |         window.requestAnimationFrame(() => { | ||||||
|           this.#executeGlanceAnimation(data, browserElement, resolve); |           this.#executeGlanceAnimation(data, browserElement, resolve); | ||||||
|         }); |         }); | ||||||
|  |       }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -376,6 +344,7 @@ | |||||||
|       const newButtons = this.#createNewOverlayButtons(); |       const newButtons = this.#createNewOverlayButtons(); | ||||||
|       this.browserWrapper.appendChild(newButtons); |       this.browserWrapper.appendChild(newButtons); | ||||||
|  |  | ||||||
|  |       this.#animateParentBackground(); | ||||||
|       this.#setupGlancePositioning(data); |       this.#setupGlancePositioning(data); | ||||||
|       this.#configureBrowserElement(browserElement); |       this.#configureBrowserElement(browserElement); | ||||||
|     } |     } | ||||||
| @@ -434,16 +403,6 @@ | |||||||
|       }; |       }; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     #createGlancePreviewElement(src) { |  | ||||||
|       const imageDataElement = document.createXULElement('image'); |  | ||||||
|       imageDataElement.setAttribute('src', src); |  | ||||||
|  |  | ||||||
|       const parent = document.createElement('div'); |  | ||||||
|       parent.classList.add('zen-glance-element-preview'); |  | ||||||
|       parent.appendChild(imageDataElement); |  | ||||||
|       return parent; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Handle element preview if provided |      * Handle element preview if provided | ||||||
|      * @param {Object} data - Glance data |      * @param {Object} data - Glance data | ||||||
| @@ -454,7 +413,13 @@ | |||||||
|         return null; |         return null; | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       const imageDataElement = this.#createGlancePreviewElement(data.elementData); |       const imageDataElement = document.createXULElement('image'); | ||||||
|  |       imageDataElement.setAttribute('src', data.elementData); | ||||||
|  |       imageDataElement.classList.add('zen-glance-element-preview'); | ||||||
|  |  | ||||||
|  |       // set an aspect ratio to prevent stretching during animation | ||||||
|  |       imageDataElement.style.aspectRatio = `${data.width} / ${data.height}`; | ||||||
|  |  | ||||||
|       this.browserWrapper.prepend(imageDataElement); |       this.browserWrapper.prepend(imageDataElement); | ||||||
|       this.#glances.get(this.#currentGlanceID).elementImageData = data.elementData; |       this.#glances.get(this.#currentGlanceID).elementImageData = data.elementData; | ||||||
|  |  | ||||||
| @@ -464,7 +429,7 @@ | |||||||
|           opacity: [1, 0], |           opacity: [1, 0], | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           duration: 0.25, |           duration: 0.3, | ||||||
|           easing: 'easeInOut', |           easing: 'easeInOut', | ||||||
|         } |         } | ||||||
|       ); |       ); | ||||||
| @@ -523,6 +488,7 @@ | |||||||
|       // nice fade-in effect to the content. But if it doesn't exist, |       // nice fade-in effect to the content. But if it doesn't exist, | ||||||
|       // we just fall back to always showing the browser directly. |       // we just fall back to always showing the browser directly. | ||||||
|       if (data.elementData) { |       if (data.elementData) { | ||||||
|  |         this.contentWrapper.style.opacity = 0; | ||||||
|         gZenUIManager.motion |         gZenUIManager.motion | ||||||
|           .animate( |           .animate( | ||||||
|             this.contentWrapper, |             this.contentWrapper, | ||||||
| @@ -537,7 +503,6 @@ | |||||||
|           }); |           }); | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       this.#animateParentBackground(); |  | ||||||
|       gZenUIManager.motion |       gZenUIManager.motion | ||||||
|         .animate(this.browserWrapper, arcSequence, { |         .animate(this.browserWrapper, arcSequence, { | ||||||
|           duration: gZenUIManager.testingEnabled ? 0 : 0.4, |           duration: gZenUIManager.testingEnabled ? 0 : 0.4, | ||||||
| @@ -952,7 +917,7 @@ | |||||||
|         const originalPosition = this.#glances.get(this.#currentGlanceID).originalPosition; |         const originalPosition = this.#glances.get(this.#currentGlanceID).originalPosition; | ||||||
|         const elementImageData = this.#glances.get(this.#currentGlanceID).elementImageData; |         const elementImageData = this.#glances.get(this.#currentGlanceID).elementImageData; | ||||||
|  |  | ||||||
|         this.#addElementPreview(elementImageData); |         this.#addElementPreview(elementImageData, originalPosition); | ||||||
|  |  | ||||||
|         // Create curved closing animation sequence |         // Create curved closing animation sequence | ||||||
|         const closingData = this.#createClosingDataFromOriginalPosition(originalPosition); |         const closingData = this.#createClosingDataFromOriginalPosition(originalPosition); | ||||||
| @@ -994,10 +959,17 @@ | |||||||
|     /** |     /** | ||||||
|      * Add element preview if available, used for the closing animation |      * Add element preview if available, used for the closing animation | ||||||
|      * @param {string} elementImageData - The element image data |      * @param {string} elementImageData - The element image data | ||||||
|  |      * @param {Object} rect - The rectangle data | ||||||
|      */ |      */ | ||||||
|     #addElementPreview(elementImageData) { |     #addElementPreview(elementImageData, rect) { | ||||||
|       if (elementImageData) { |       if (elementImageData) { | ||||||
|         const imageDataElement = this.#createGlancePreviewElement(elementImageData); |         const imageDataElement = document.createXULElement('image'); | ||||||
|  |         imageDataElement.setAttribute('src', elementImageData); | ||||||
|  |         imageDataElement.classList.add('zen-glance-element-preview'); | ||||||
|  |  | ||||||
|  |         // set an aspect ratio to prevent stretching during animation | ||||||
|  |         imageDataElement.style.aspectRatio = `${parseFloat(rect.width)} / ${parseFloat(rect.height)}`; | ||||||
|  |  | ||||||
|         this.browserWrapper.prepend(imageDataElement); |         this.browserWrapper.prepend(imageDataElement); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| @@ -1018,7 +990,7 @@ | |||||||
|       if (!onTabClose) { |       if (!onTabClose) { | ||||||
|         this.quickCloseGlance({ clearID: false }); |         this.quickCloseGlance({ clearID: false }); | ||||||
|       } |       } | ||||||
|       this.overlay.style.display = 'none'; |       this.browserWrapper.style.display = 'none'; | ||||||
|       this.overlay.removeAttribute('fade-out'); |       this.overlay.removeAttribute('fade-out'); | ||||||
|       this.browserWrapper.removeAttribute('animate'); |       this.browserWrapper.removeAttribute('animate'); | ||||||
|  |  | ||||||
| @@ -1385,9 +1357,18 @@ | |||||||
|      * @param {Tab} tab - The tab to open glance for |      * @param {Tab} tab - The tab to open glance for | ||||||
|      */ |      */ | ||||||
|     #openGlanceForTab(tab) { |     #openGlanceForTab(tab) { | ||||||
|  |       const browserRect = window.windowUtils.getBoundsWithoutFlushing(gBrowser.tabbox); | ||||||
|  |       const clickPosition = gZenUIManager._lastClickPosition || { | ||||||
|  |         clientX: browserRect.width / 2, | ||||||
|  |         clientY: browserRect.height / 2, | ||||||
|  |       }; | ||||||
|  |  | ||||||
|       this.openGlance( |       this.openGlance( | ||||||
|         { |         { | ||||||
|           url: undefined, |           url: undefined, | ||||||
|  |           ...clickPosition, | ||||||
|  |           width: 0, | ||||||
|  |           height: 0, | ||||||
|         }, |         }, | ||||||
|         tab, |         tab, | ||||||
|         tab.owner |         tab.owner | ||||||
|   | |||||||
| @@ -35,30 +35,22 @@ export class ZenGlanceChild extends JSWindowActorChild { | |||||||
|     return !(event.ctrlKey ^ event.altKey ^ event.shiftKey ^ event.metaKey); |     return !(event.ctrlKey ^ event.altKey ^ event.shiftKey ^ event.metaKey); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   #openGlance(target) { |   openGlance(target, originalTarget) { | ||||||
|     let url = target.href; |     let url = target.href; | ||||||
|     // Add domain to relative URLs |     // Add domain to relative URLs | ||||||
|     if (!url.match(/^(?:[a-z]+:)?\/\//i)) { |     if (!url.match(/^(?:[a-z]+:)?\/\//i)) { | ||||||
|       url = this.contentWindow.location.origin + url; |       url = this.contentWindow.location.origin + url; | ||||||
|     } |     } | ||||||
|     this.sendAsyncMessage('ZenGlance:OpenGlance', { |  | ||||||
|       url, |  | ||||||
|     }); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   #sendClickDataToParent(target, element) { |  | ||||||
|     if (!element || !target) { |  | ||||||
|       return; |  | ||||||
|     } |  | ||||||
|     // Get the largest element we can get. If the `A` element |     // Get the largest element we can get. If the `A` element | ||||||
|     // is a parent of the original target, use the anchor element, |     // is a parent of the original target, use the anchor element, | ||||||
|     // otherwise use the original target. |     // otherwise use the original target. | ||||||
|     let rect = element.getBoundingClientRect(); |     let rect = originalTarget.getBoundingClientRect(); | ||||||
|     const anchorRect = target.getBoundingClientRect(); |     const anchorRect = target.getBoundingClientRect(); | ||||||
|     if (anchorRect.width * anchorRect.height > rect.width * rect.height) { |     if (anchorRect.width * anchorRect.height > rect.width * rect.height) { | ||||||
|       rect = anchorRect; |       rect = anchorRect; | ||||||
|     } |     } | ||||||
|     this.sendAsyncMessage('ZenGlance:RecordLinkClickData', { |     this.sendAsyncMessage('ZenGlance:OpenGlance', { | ||||||
|  |       url, | ||||||
|       clientX: rect.left, |       clientX: rect.left, | ||||||
|       clientY: rect.top, |       clientY: rect.top, | ||||||
|       width: rect.width, |       width: rect.width, | ||||||
| @@ -67,19 +59,7 @@ export class ZenGlanceChild extends JSWindowActorChild { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   handleClick(event) { |   handleClick(event) { | ||||||
|     if (event.button !== 0 || event.defaultPrevented) { |     if (this.ensureOnlyKeyModifiers(event) || event.button !== 0 || event.defaultPrevented) { | ||||||
|       return; |  | ||||||
|     } |  | ||||||
|     // get closest A element |  | ||||||
|     const target = event.target.closest('A'); |  | ||||||
|     const elementToRecord = event.originalTarget || event.target; |  | ||||||
|     // We record the link data anyway, even if the glance may be invoked |  | ||||||
|     // or not. We have some cases where glance would open, for example, |  | ||||||
|     // when clicking on a link with a different domain where glance would open. |  | ||||||
|     // The problem is that at that stage we don't know the rect or even what |  | ||||||
|     // element has been clicked, so we send the data here. |  | ||||||
|     this.#sendClickDataToParent(target, elementToRecord); |  | ||||||
|     if (this.ensureOnlyKeyModifiers(event)) { |  | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
|     const activationMethod = this.#activationMethod; |     const activationMethod = this.#activationMethod; | ||||||
| @@ -92,11 +72,13 @@ export class ZenGlanceChild extends JSWindowActorChild { | |||||||
|     } else if (activationMethod === 'meta' && !event.metaKey) { |     } else if (activationMethod === 'meta' && !event.metaKey) { | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
|  |     // get closest A element | ||||||
|  |     const target = event.target.closest('A'); | ||||||
|     if (target) { |     if (target) { | ||||||
|       event.preventDefault(); |       event.preventDefault(); | ||||||
|       event.stopPropagation(); |       event.stopPropagation(); | ||||||
|  |  | ||||||
|       this.#openGlance(target); |       this.openGlance(target, event.originalTarget || event.target); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -23,10 +23,6 @@ export class ZenGlanceParent extends JSWindowActorParent { | |||||||
|         this.browsingContext.topChromeWindow.gZenGlanceManager.closeGlance(params); |         this.browsingContext.topChromeWindow.gZenGlanceManager.closeGlance(params); | ||||||
|         break; |         break; | ||||||
|       } |       } | ||||||
|       case 'ZenGlance:RecordLinkClickData': { |  | ||||||
|         this.browsingContext.topChromeWindow.gZenGlanceManager.lastLinkClickData = message.data; |  | ||||||
|         break; |  | ||||||
|       } |  | ||||||
|       default: |       default: | ||||||
|         console.warn(`[glance]: Unknown message: ${message.name}`); |         console.warn(`[glance]: Unknown message: ${message.name}`); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -174,14 +174,7 @@ | |||||||
|   height: 100%; |   height: 100%; | ||||||
|   z-index: 0; |   z-index: 0; | ||||||
|   border-radius: var(--zen-native-inner-radius); |   border-radius: var(--zen-native-inner-radius); | ||||||
|   top: 0%; |   inset: 50%; | ||||||
|   left: 50%; |   translate: -50% -50%; | ||||||
|   translate: -50% 0%; |  | ||||||
|   will-change: transform, opacity; |   will-change: transform, opacity; | ||||||
|   background: rgba(255, 255, 255, 0.1); |  | ||||||
|  |  | ||||||
|   & image { |  | ||||||
|     width: 100%; |  | ||||||
|     max-width: 100%; |  | ||||||
|   } |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -294,7 +294,7 @@ | |||||||
| } | } | ||||||
|  |  | ||||||
| /* Hide #zen-media-focus-button if it doesn't fit in the toolbar */ | /* Hide #zen-media-focus-button if it doesn't fit in the toolbar */ | ||||||
| @container media-controls (max-width: 165px) { | @container media-controls (max-width: 150px) { | ||||||
|   #zen-media-focus-button { |   #zen-media-focus-button { | ||||||
|     display: none; |     display: none; | ||||||
|   } |   } | ||||||
|   | |||||||
							
								
								
									
										27
									
								
								src/zen/sessionstore/ZenSessionFile.sys.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/zen/sessionstore/ZenSessionFile.sys.mjs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | // 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/. | ||||||
|  |  | ||||||
|  | const FILE_NAME = 'zen-sessions.jsonlz4'; | ||||||
|  |  | ||||||
|  | export class nsZenSessionFile { | ||||||
|  |   #path; | ||||||
|  |  | ||||||
|  |   #windows; | ||||||
|  |  | ||||||
|  |   constructor() { | ||||||
|  |     this.#path = PathUtils.join(profileDir, FILE_NAME); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   async read() { | ||||||
|  |     try { | ||||||
|  |       return await IOUtils.readJSON(this.#path, { compress: true }); | ||||||
|  |     } catch (e) { | ||||||
|  |       return {}; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   async write(data) { | ||||||
|  |     await IOUtils.writeJSON(this.#path, data, { compress: true }); | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										50
									
								
								src/zen/sessionstore/ZenSessionManager.sys.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								src/zen/sessionstore/ZenSessionManager.sys.mjs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | |||||||
|  | // 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/. | ||||||
|  |  | ||||||
|  | import { | ||||||
|  |   cancelIdleCallback, | ||||||
|  |   clearTimeout, | ||||||
|  |   requestIdleCallback, | ||||||
|  |   setTimeout, | ||||||
|  | } from 'resource://gre/modules/Timer.sys.mjs'; | ||||||
|  |  | ||||||
|  | const lazy = {}; | ||||||
|  |  | ||||||
|  | ChromeUtils.defineESModuleGetters(lazy, { | ||||||
|  |   ZenSessionFile: 'resource://gre/modules/ZenSessionFile.sys.mjs', | ||||||
|  |   PrivateBrowsingUtils: 'resource://gre/modules/PrivateBrowsingUtils.sys.mjs', | ||||||
|  |   RunState: 'resource:///modules/sessionstore/RunState.sys.mjs', | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | class nsZenSessionManager { | ||||||
|  |   #file; | ||||||
|  |  | ||||||
|  |   constructor() { | ||||||
|  |     this.#file = null; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   get file() { | ||||||
|  |     if (!this.#file) { | ||||||
|  |       this.#file = lazy.ZenSessionFile; | ||||||
|  |     } | ||||||
|  |     return this.#file; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * Saves the current session state. Collects data and writes to disk. | ||||||
|  |    * | ||||||
|  |    * @param forceUpdateAllWindows (optional) | ||||||
|  |    *        Forces us to recollect data for all windows and will bypass and | ||||||
|  |    *        update the corresponding caches. | ||||||
|  |    */ | ||||||
|  |   saveState(forceUpdateAllWindows = false) { | ||||||
|  |     if (lazy.PrivateBrowsingUtils.permanentPrivateBrowsing) { | ||||||
|  |       // Don't save (or even collect) anything in permanent private | ||||||
|  |       // browsing mode | ||||||
|  |       return Promise.resolve(); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export const ZenSessionStore = new nsZenSessionManager(); | ||||||
							
								
								
									
										35
									
								
								src/zen/sessionstore/ZenSessionWindow.sys.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/zen/sessionstore/ZenSessionWindow.sys.mjs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | // 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/. | ||||||
|  |  | ||||||
|  | export class ZenSessionWindow { | ||||||
|  |   #id; | ||||||
|  |   #selectedWorkspace; | ||||||
|  |   #selectedTab; | ||||||
|  |  | ||||||
|  |   constructor(id) { | ||||||
|  |     this.#id = id; | ||||||
|  |     this.#selectedWorkspace = null; | ||||||
|  |     this.#selectedTab = null; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   get id() { | ||||||
|  |     return this.#id; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   get selectedWorkspace() { | ||||||
|  |     return this.#selectedWorkspace; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   set selectedWorkspace(workspace) { | ||||||
|  |     this.#selectedWorkspace = workspace; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   get selectedTab() { | ||||||
|  |     return this.#selectedTab; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   set selectedTab(tab) { | ||||||
|  |     this.#selectedTab = tab; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @@ -133,11 +133,8 @@ tab-group[split-view-group] { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @container browser-tab (min-width: 70px) { |     @container browser-tab (min-width: 70px) { | ||||||
|       :root[zen-sidebar-expanded='true'] &:hover > .tabbrowser-tab:not([pinned]:not([pending])) .tab-close-button { |       :root[zen-sidebar-expanded='true'] &:hover > .tabbrowser-tab:not([pinned]) .tab-close-button { | ||||||
|         display: block !important; |         display: block !important; | ||||||
|  |  | ||||||
|         /* This is from Firefox itself, but we need to always override it */ |  | ||||||
|         margin-inline-end: 0 !important; |  | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -101,6 +101,7 @@ | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     onTabIconChanged(tab, url = null) { |     onTabIconChanged(tab, url = null) { | ||||||
|  |       tab.dispatchEvent(new CustomEvent('ZenTabIconChanged', { bubbles: true, detail: { tab } })); | ||||||
|       const iconUrl = url ?? tab.iconImage.src; |       const iconUrl = url ?? tab.iconImage.src; | ||||||
|       if (!iconUrl && tab.hasAttribute('zen-pin-id')) { |       if (!iconUrl && tab.hasAttribute('zen-pin-id')) { | ||||||
|         try { |         try { | ||||||
| @@ -883,7 +884,7 @@ | |||||||
|               ); |               ); | ||||||
|               for (const tab of pinnedTabs) { |               for (const tab of pinnedTabs) { | ||||||
|                 if (allAreUnloaded && closeIfPending) { |                 if (allAreUnloaded && closeIfPending) { | ||||||
|                   return await this.onCloseTabShortcut(event, tab, { behavior: 'close' }); |                   return await this._onCloseTabShortcut(event, tab, { behavior: 'close' }); | ||||||
|                 } |                 } | ||||||
|               } |               } | ||||||
|               await gBrowser.explicitUnloadTabs(pinnedTabs); |               await gBrowser.explicitUnloadTabs(pinnedTabs); | ||||||
| @@ -1098,7 +1099,7 @@ | |||||||
|       const element = window.MozXULElement.parseXULToFragment(` |       const element = window.MozXULElement.parseXULToFragment(` | ||||||
|             <menuitem id="context_zen-add-essential" |             <menuitem id="context_zen-add-essential" | ||||||
|                       data-l10n-id="tab-context-zen-add-essential" |                       data-l10n-id="tab-context-zen-add-essential" | ||||||
|                       data-l10n-args='{"num": "0", "max": "${this.maxEssentialTabs}"}' |                       data-l10n-args='{"num": "0", "max": "12"}' | ||||||
|                       hidden="true" |                       hidden="true" | ||||||
|                       disabled="true" |                       disabled="true" | ||||||
|                       command="cmd_contextZenAddToEssentials"/> |                       command="cmd_contextZenAddToEssentials"/> | ||||||
| @@ -1555,6 +1556,7 @@ | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     async onTabLabelChanged(tab) { |     async onTabLabelChanged(tab) { | ||||||
|  |       tab.dispatchEvent(new CustomEvent('ZenTabLabelChanged', { detail: { tab } })); | ||||||
|       if (!this._pinsCache) { |       if (!this._pinsCache) { | ||||||
|         return; |         return; | ||||||
|       } |       } | ||||||
|   | |||||||
| @@ -112,17 +112,5 @@ | |||||||
|     & #titlebar { |     & #titlebar { | ||||||
|       padding-top: var(--zen-toolbar-height); |       padding-top: var(--zen-toolbar-height); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     & #nav-bar { |  | ||||||
|       width: calc(100% + var(--zen-toolbox-max-width) - var(--zen-element-separation)); |  | ||||||
|  |  | ||||||
|       /** |  | ||||||
|        * We only want it when the window buttons are on the left side, in other |  | ||||||
|        * words, the first of the two selectors above. |  | ||||||
|        */ |  | ||||||
|       :root:not([zen-window-buttons-reversed='true']) & { |  | ||||||
|         margin-left: calc(-1 * var(--zen-toolbox-max-width) + var(--zen-element-separation) + 4px); |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @@ -22,7 +22,9 @@ z-index: 1; | |||||||
|  |  | ||||||
| %include ../../compact-mode/windows-captions-fix-active.inc.css | %include ../../compact-mode/windows-captions-fix-active.inc.css | ||||||
|  |  | ||||||
|   &:not([zen-has-hover='true']):not([has-popup-menu]):not([zen-compact-mode-active]) { |   &:not([zen-has-hover='true']):not([has-popup-menu]):not(:focus-within):not( | ||||||
|  |       :has(*:is([panelopen='true'], [open='true'])) | ||||||
|  |     ) { | ||||||
|     height: var(--zen-element-separation); |     height: var(--zen-element-separation); | ||||||
|     opacity: 0; |     opacity: 0; | ||||||
|     & #zen-appcontent-navbar-container { |     & #zen-appcontent-navbar-container { | ||||||
| @@ -30,6 +32,11 @@ z-index: 1; | |||||||
|     } |     } | ||||||
|  |  | ||||||
| %include ../../compact-mode/windows-captions-fix-default.inc.css | %include ../../compact-mode/windows-captions-fix-default.inc.css | ||||||
|  |  | ||||||
|  |     & .titlebar-button { | ||||||
|  |       padding-top: 0 !important; | ||||||
|  |       padding-bottom: 0 !important; | ||||||
|  |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @media -moz-pref('zen.view.experimental-no-window-controls') { |   @media -moz-pref('zen.view.experimental-no-window-controls') { | ||||||
|   | |||||||
| @@ -618,6 +618,12 @@ | |||||||
|   --tab-min-width: 48px !important; |   --tab-min-width: 48px !important; | ||||||
|   --zen-toolbox-padding: 6px !important; |   --zen-toolbox-padding: 6px !important; | ||||||
|   --zen-toolbox-max-width: calc(var(--tab-min-width) + var(--zen-toolbox-padding) * 2); |   --zen-toolbox-max-width: calc(var(--tab-min-width) + var(--zen-toolbox-padding) * 2); | ||||||
|  |  | ||||||
|  |   /* We can't show the rename input properly in collapsed state, | ||||||
|  |      so hide the workspace edit input */ | ||||||
|  |   #context_zenEditWorkspace { | ||||||
|  |     display: none; | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| #navigator-toolbox:not([zen-sidebar-expanded='true']) { | #navigator-toolbox:not([zen-sidebar-expanded='true']) { | ||||||
| @@ -700,6 +706,7 @@ | |||||||
|  |  | ||||||
|   & #titlebar { |   & #titlebar { | ||||||
|     display: grid; |     display: grid; | ||||||
|  |     overflow: clip; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   & #zen-sidebar-top-buttons-customization-target { |   & #zen-sidebar-top-buttons-customization-target { | ||||||
| @@ -956,7 +963,7 @@ | |||||||
|   :root[zen-single-toolbar='true'] & { |   :root[zen-single-toolbar='true'] & { | ||||||
|     --zen-toolbar-height: 36px; |     --zen-toolbar-height: 36px; | ||||||
|     @media (-moz-platform: macos) { |     @media (-moz-platform: macos) { | ||||||
|       --zen-toolbar-height: 38px; |       --zen-toolbar-height: 42px; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     & #PanelUI-button { |     & #PanelUI-button { | ||||||
|   | |||||||
| @@ -127,16 +127,6 @@ export class nsZenSiteDataPanel { | |||||||
|     this.#setSitePermissions(); |     this.#setSitePermissions(); | ||||||
|     this.#setSiteSecurityInfo(); |     this.#setSiteSecurityInfo(); | ||||||
|     this.#setSiteHeader(); |     this.#setSiteHeader(); | ||||||
|     this.#setAddonsOverflow(); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   #setAddonsOverflow() { |  | ||||||
|     const addons = this.document.getElementById('zen-site-data-addons'); |  | ||||||
|     if (addons.getBoundingClientRect().height > 420) { |  | ||||||
|       addons.setAttribute('overflowing', 'true'); |  | ||||||
|     } else { |  | ||||||
|       addons.removeAttribute('overflowing'); |  | ||||||
|     } |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   #setSiteHeader() { |   #setSiteHeader() { | ||||||
| @@ -363,15 +353,9 @@ export class nsZenSiteDataPanel { | |||||||
|     switch (permission.state) { |     switch (permission.state) { | ||||||
|       // There should only be these types being displayed in the panel. |       // There should only be these types being displayed in the panel. | ||||||
|       case SitePermissions.ALLOW: |       case SitePermissions.ALLOW: | ||||||
|         if (permission.id === 'site-protection') { |  | ||||||
|           return 'zen-site-data-protections-enabled'; |  | ||||||
|         } |  | ||||||
|         return 'zen-site-data-setting-allow'; |         return 'zen-site-data-setting-allow'; | ||||||
|       case SitePermissions.BLOCK: |       case SitePermissions.BLOCK: | ||||||
|       case SitePermissions.AUTOPLAY_BLOCKED_ALL: |       case SitePermissions.AUTOPLAY_BLOCKED_ALL: | ||||||
|         if (permission.id === 'site-protection') { |  | ||||||
|           return 'zen-site-data-protections-disabled'; |  | ||||||
|         } |  | ||||||
|         return 'zen-site-data-setting-block'; |         return 'zen-site-data-setting-block'; | ||||||
|       default: |       default: | ||||||
|         return null; |         return null; | ||||||
| @@ -527,12 +511,12 @@ export class nsZenSiteDataPanel { | |||||||
|  |  | ||||||
|     const isCrossSiteCookie = permission.id.startsWith('3rdPartyStorage'); |     const isCrossSiteCookie = permission.id.startsWith('3rdPartyStorage'); | ||||||
|     label.parentNode.setAttribute('state', newState == SitePermissions.ALLOW ? 'allow' : 'block'); |     label.parentNode.setAttribute('state', newState == SitePermissions.ALLOW ? 'allow' : 'block'); | ||||||
|     label._permission.state = newState; |  | ||||||
|     if (!isCrossSiteCookie) { |     if (!isCrossSiteCookie) { | ||||||
|       label |       label | ||||||
|         .querySelector('.zen-permission-popup-permission-state-label') |         .querySelector('.zen-permission-popup-permission-state-label') | ||||||
|         .setAttribute('data-l10n-id', this.#getPermissionStateLabelId(label._permission)); |         .setAttribute('data-l10n-id', this.#getPermissionStateLabelId({ state: newState })); | ||||||
|     } |     } | ||||||
|  |     label._permission.state = newState; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   #onClickEvent(event) { |   #onClickEvent(event) { | ||||||
| @@ -596,6 +580,7 @@ export class nsZenSiteDataPanel { | |||||||
|       }; |       }; | ||||||
|       checkEmptyTab(); |       checkEmptyTab(); | ||||||
|     }); |     }); | ||||||
|  |     this.anchor.setAttribute('open', 'true'); | ||||||
|     const callout = new FeatureCallout({ |     const callout = new FeatureCallout({ | ||||||
|       win: this.window, |       win: this.window, | ||||||
|       location: 'chrome', |       location: 'chrome', | ||||||
| @@ -624,6 +609,13 @@ export class nsZenSiteDataPanel { | |||||||
|                     callout_attachment: 'topleft', |                     callout_attachment: 'topleft', | ||||||
|                   }, |                   }, | ||||||
|                 }, |                 }, | ||||||
|  |                 { | ||||||
|  |                   selector: '#identity-icon-box', | ||||||
|  |                   panel_position: { | ||||||
|  |                     anchor_attachment: 'bottomcenter', | ||||||
|  |                     callout_attachment: 'topleft', | ||||||
|  |                   }, | ||||||
|  |                 }, | ||||||
|               ], |               ], | ||||||
|               content: { |               content: { | ||||||
|                 position: 'callout', |                 position: 'callout', | ||||||
|   | |||||||
| @@ -1305,13 +1305,12 @@ | |||||||
|  |  | ||||||
|         // Do not rebuild if the workspace is not the same as the current one |         // Do not rebuild if the workspace is not the same as the current one | ||||||
|         const windowWorkspace = await browser.gZenWorkspaces.getActiveWorkspace(); |         const windowWorkspace = await browser.gZenWorkspaces.getActiveWorkspace(); | ||||||
|         if (windowWorkspace.uuid !== uuid) { |         if (windowWorkspace.uuid !== uuid && theme !== null) { | ||||||
|           return; |           return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         // get the theme from the window |         // get the theme from the window | ||||||
|         workspaceTheme = this.fixTheme(theme || windowWorkspace.theme); |         workspaceTheme = this.fixTheme(theme || windowWorkspace.theme); | ||||||
|         const docElement = browser.document.documentElement; |  | ||||||
|  |  | ||||||
|         if (!skipUpdate) { |         if (!skipUpdate) { | ||||||
|           for (const dot of browser.gZenThemePicker.panel.querySelectorAll( |           for (const dot of browser.gZenThemePicker.panel.querySelectorAll( | ||||||
| @@ -1329,15 +1328,17 @@ | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (!skipUpdate) { |         if (!skipUpdate) { | ||||||
|           docElement.style.setProperty( |           browser.document.documentElement.style.setProperty( | ||||||
|             '--zen-main-browser-background-old', |             '--zen-main-browser-background-old', | ||||||
|             docElement.style.getPropertyValue('--zen-main-browser-background') |             browser.document.documentElement.style.getPropertyValue('--zen-main-browser-background') | ||||||
|           ); |           ); | ||||||
|           docElement.style.setProperty( |           browser.document.documentElement.style.setProperty( | ||||||
|             '--zen-main-browser-background-toolbar-old', |             '--zen-main-browser-background-toolbar-old', | ||||||
|             docElement.style.getPropertyValue('--zen-main-browser-background-toolbar') |             browser.document.documentElement.style.getPropertyValue( | ||||||
|  |               '--zen-main-browser-background-toolbar' | ||||||
|  |             ) | ||||||
|           ); |           ); | ||||||
|           docElement.style.setProperty( |           browser.document.documentElement.style.setProperty( | ||||||
|             '--zen-background-opacity', |             '--zen-background-opacity', | ||||||
|             browser.gZenThemePicker.previousBackgroundOpacity ?? 1 |             browser.gZenThemePicker.previousBackgroundOpacity ?? 1 | ||||||
|           ); |           ); | ||||||
| @@ -1460,9 +1461,16 @@ | |||||||
|           } |           } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         docElement.style.setProperty('--zen-main-browser-background-toolbar', gradientToolbar); |         browser.document.documentElement.style.setProperty( | ||||||
|         docElement.style.setProperty('--zen-main-browser-background', gradient); |           '--zen-main-browser-background-toolbar', | ||||||
|  |           gradientToolbar | ||||||
|  |         ); | ||||||
|  |         browser.document.documentElement.style.setProperty( | ||||||
|  |           '--zen-main-browser-background', | ||||||
|  |           gradient | ||||||
|  |         ); | ||||||
|         const isDarkModeWindow = browser.gZenThemePicker.isDarkMode; |         const isDarkModeWindow = browser.gZenThemePicker.isDarkMode; | ||||||
|  |         const docElement = browser.document.documentElement; | ||||||
|         if (isDefaultTheme) { |         if (isDefaultTheme) { | ||||||
|           docElement.setAttribute('zen-default-theme', 'true'); |           docElement.setAttribute('zen-default-theme', 'true'); | ||||||
|         } else { |         } else { | ||||||
| @@ -1491,7 +1499,7 @@ | |||||||
|           } |           } | ||||||
|           // Set `--toolbox-textcolor` to have a contrast with the primary color |           // Set `--toolbox-textcolor` to have a contrast with the primary color | ||||||
|           const textColor = this.getToolbarColor(isDarkMode); |           const textColor = this.getToolbarColor(isDarkMode); | ||||||
|           docElement.style.setProperty( |           document.documentElement.style.setProperty( | ||||||
|             '--toolbox-textcolor', |             '--toolbox-textcolor', | ||||||
|             `rgba(${textColor[0]}, ${textColor[1]}, ${textColor[2]}, ${textColor[3]})` |             `rgba(${textColor[0]}, ${textColor[1]}, ${textColor[2]}, ${textColor[3]})` | ||||||
|           ); |           ); | ||||||
|   | |||||||
							
								
								
									
										308
									
								
								src/zen/workspaces/ZenWindowSyncing.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										308
									
								
								src/zen/workspaces/ZenWindowSyncing.mjs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,308 @@ | |||||||
|  | // 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/. | ||||||
|  | { | ||||||
|  |   class nsZenWorkspaceWindowSync extends nsZenMultiWindowFeature { | ||||||
|  |     #ignoreNextEvents = false; | ||||||
|  |     #waitForPromise = null; | ||||||
|  |  | ||||||
|  |     constructor() { | ||||||
|  |       super(); | ||||||
|  |       if (!window.closed) { | ||||||
|  |         this.init(); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     async init() { | ||||||
|  |       await gZenWorkspaces.promiseInitialized; | ||||||
|  |       this.#makeSureAllTabsHaveIds(); | ||||||
|  |       this.#setUpEventListeners(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #makeSureAllTabsHaveIds() { | ||||||
|  |       const allTabs = gZenWorkspaces.allStoredTabs; | ||||||
|  |       for (const tab of allTabs) { | ||||||
|  |         if (!tab.hasAttribute('zen-sync-id') && !tab.hasAttribute('zen-empty-tab')) { | ||||||
|  |           const tabId = gZenUIManager.generateUuidv4(); | ||||||
|  |           tab.setAttribute('zen-sync-id', tabId); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #setUpEventListeners() { | ||||||
|  |       const kEvents = [ | ||||||
|  |         'TabClose', | ||||||
|  |         'TabOpen', | ||||||
|  |         'TabMove', | ||||||
|  |  | ||||||
|  |         'TabPinned', | ||||||
|  |         'TabUnpinned', | ||||||
|  |  | ||||||
|  |         'TabAddedToEssentials', | ||||||
|  |         'TabRemovedFromEssentials', | ||||||
|  |  | ||||||
|  |         'TabHide', | ||||||
|  |         'TabShow', | ||||||
|  |  | ||||||
|  |         'ZenTabIconChanged', | ||||||
|  |         'ZenTabLabelChanged', | ||||||
|  |  | ||||||
|  |         'TabGroupCreate', | ||||||
|  |         'TabGroupRemoved', | ||||||
|  |         'TabGrouped', | ||||||
|  |         'TabUngrouped', | ||||||
|  |         'TabGroupMoved', | ||||||
|  |       ]; | ||||||
|  |       const eventListener = this.#handleEvent.bind(this); | ||||||
|  |       for (const event of kEvents) { | ||||||
|  |         window.addEventListener(event, eventListener); | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       window.addEventListener('unload', () => { | ||||||
|  |         for (const event of kEvents) { | ||||||
|  |           window.removeEventListener(event, eventListener); | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #handleEvent(event) { | ||||||
|  |       this.#propagateToOtherWindows(event); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     async #propagateToOtherWindows(event) { | ||||||
|  |       if (this.#ignoreNextEvents) { | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|  |       if (this.#waitForPromise) { | ||||||
|  |         await this.#waitForPromise; | ||||||
|  |       } | ||||||
|  |       this.#waitForPromise = new Promise((resolve) => { | ||||||
|  |         this.foreachWindowAsActive(async (browser) => { | ||||||
|  |           if (browser.gZenWorkspaceWindowSync && !this.windowIsActive(browser)) { | ||||||
|  |             await browser.gZenWorkspaceWindowSync.onExternalTabEvent(event); | ||||||
|  |           } | ||||||
|  |         }).then(() => { | ||||||
|  |           resolve(); | ||||||
|  |         }); | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     async onExternalTabEvent(event) { | ||||||
|  |       this.#ignoreNextEvents = true; | ||||||
|  |       switch (event.type) { | ||||||
|  |         case 'TabClose': | ||||||
|  |           this.#onTabClose(event); | ||||||
|  |           break; | ||||||
|  |         case 'TabOpen': | ||||||
|  |           await this.#onTabOpen(event); | ||||||
|  |           break; | ||||||
|  |         case 'TabPinned': | ||||||
|  |           this.#onTabPinned(event); | ||||||
|  |           break; | ||||||
|  |         case 'TabUnpinned': | ||||||
|  |           this.#onTabUnpinned(event); | ||||||
|  |           break; | ||||||
|  |         case 'TabAddedToEssentials': | ||||||
|  |           this.#onTabAddedToEssentials(event); | ||||||
|  |           break; | ||||||
|  |         case 'TabRemovedFromEssentials': | ||||||
|  |           this.#onTabRemovedFromEssentials(event); | ||||||
|  |           break; | ||||||
|  |         case 'TabHide': | ||||||
|  |           this.#onTabHide(event); | ||||||
|  |           break; | ||||||
|  |         case 'TabShow': | ||||||
|  |           this.#onTabShow(event); | ||||||
|  |           break; | ||||||
|  |         case 'TabMove': | ||||||
|  |         case 'TabGroupMoved': | ||||||
|  |           this.#onTabMove(event); | ||||||
|  |           break; | ||||||
|  |         case 'ZenTabIconChanged': | ||||||
|  |           this.#onTabIconChanged(event); | ||||||
|  |           break; | ||||||
|  |         case 'ZenTabLabelChanged': | ||||||
|  |           this.#onTabLabelChanged(event); | ||||||
|  |           break; | ||||||
|  |         case 'TabGroupCreate': | ||||||
|  |           this.#onTabGroupCreate(event); | ||||||
|  |           break; | ||||||
|  |         case 'TabGroupRemoved': | ||||||
|  |         case 'TabGrouped': | ||||||
|  |         case 'TabUngrouped': | ||||||
|  |           // Tab grouping changes are automatically synced by Firefox | ||||||
|  |           break; | ||||||
|  |         default: | ||||||
|  |           console.warn(`Unhandled event type: ${event.type}`); | ||||||
|  |           break; | ||||||
|  |       } | ||||||
|  |       this.#ignoreNextEvents = false; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #getTabId(tab) { | ||||||
|  |       return tab.getAttribute('zen-sync-id'); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #getTabWithId(tabId) { | ||||||
|  |       for (const tab of gZenWorkspaces.allStoredTabs) { | ||||||
|  |         if (this.#getTabId(tab) === tabId) { | ||||||
|  |           return tab; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       return null; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #onTabClose(event) { | ||||||
|  |       const targetTab = event.target; | ||||||
|  |       const tabId = this.#getTabId(targetTab); | ||||||
|  |       const tabToClose = this.#getTabWithId(tabId); | ||||||
|  |       if (tabToClose) { | ||||||
|  |         gBrowser.removeTab(tabToClose); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #onTabPinned(event) { | ||||||
|  |       const targetTab = event.target; | ||||||
|  |       if (targetTab.hasAttribute('zen-essential')) { | ||||||
|  |         return this.#onTabAddedToEssentials(event); | ||||||
|  |       } | ||||||
|  |       const tabId = this.#getTabId(targetTab); | ||||||
|  |       const elementIndex = targetTab.elementIndex; | ||||||
|  |       const tabToPin = this.#getTabWithId(tabId); | ||||||
|  |       if (tabToPin) { | ||||||
|  |         gBrowser.pinTab(tabToPin); | ||||||
|  |         gBrowser.moveTabTo(tabToPin, { elementIndex, forceUngrouped: !!targetTab.group }); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #onTabUnpinned(event) { | ||||||
|  |       const targetTab = event.target; | ||||||
|  |       const tabId = this.#getTabId(targetTab); | ||||||
|  |       const tabToUnpin = this.#getTabWithId(tabId); | ||||||
|  |       if (tabToUnpin) { | ||||||
|  |         gBrowser.unpinTab(tabToUnpin); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #onTabIconChanged(event) { | ||||||
|  |       this.#updateTabIconAndLabel(event); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #onTabLabelChanged(event) { | ||||||
|  |       this.#updateTabIconAndLabel(event); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #updateTabIconAndLabel(event) { | ||||||
|  |       const targetTab = event.target; | ||||||
|  |       const tabId = this.#getTabId(targetTab); | ||||||
|  |       const tabToChange = this.#getTabWithId(tabId); | ||||||
|  |       if (tabToChange && tabToChange.hasAttribute('pending')) { | ||||||
|  |         gBrowser.setIcon(tabToChange, gBrowser.getIcon(targetTab)); | ||||||
|  |         gBrowser._setTabLabel(tabToChange, targetTab.label); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #onTabAddedToEssentials(event) { | ||||||
|  |       const targetTab = event.target; | ||||||
|  |       const tabId = this.#getTabId(targetTab); | ||||||
|  |       const tabToAdd = this.#getTabWithId(tabId); | ||||||
|  |       if (tabToAdd) { | ||||||
|  |         gZenPinnedTabManager.addToEssentials(tabToAdd); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #onTabRemovedFromEssentials(event) { | ||||||
|  |       const targetTab = event.target; | ||||||
|  |       const tabId = this.#getTabId(targetTab); | ||||||
|  |       const tabToRemove = this.#getTabWithId(tabId); | ||||||
|  |       if (tabToRemove) { | ||||||
|  |         gZenPinnedTabManager.removeFromEssentials(tabToRemove); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #onTabHide(event) { | ||||||
|  |       const targetTab = event.target; | ||||||
|  |       const tabId = this.#getTabId(targetTab); | ||||||
|  |       const tabToHide = this.#getTabWithId(tabId); | ||||||
|  |       if (tabToHide) { | ||||||
|  |         gBrowser.hideTab(tabToHide); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #onTabShow(event) { | ||||||
|  |       const targetTab = event.target; | ||||||
|  |       const tabId = this.#getTabId(targetTab); | ||||||
|  |       const tabToShow = this.#getTabWithId(tabId); | ||||||
|  |       if (tabToShow) { | ||||||
|  |         gBrowser.showTab(tabToShow); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #onTabMove(event) { | ||||||
|  |       const targetTab = event.target; | ||||||
|  |       const tabId = this.#getTabId(targetTab); | ||||||
|  |       const tabToMove = this.#getTabWithId(tabId); | ||||||
|  |       const workspaceId = targetTab.getAttribute('zen-workspace-id'); | ||||||
|  |       const isEssential = targetTab.hasAttribute('zen-essential'); | ||||||
|  |       if (tabToMove) { | ||||||
|  |         let tabSibling = targetTab.previousElementSibling; | ||||||
|  |         let isFirst = false; | ||||||
|  |         if (!tabSibling?.hasAttribute('zen-sync-id')) { | ||||||
|  |           isFirst = true; | ||||||
|  |         } | ||||||
|  |         gBrowser.zenHandleTabMove(tabToMove, () => { | ||||||
|  |           if (isFirst) { | ||||||
|  |             let container; | ||||||
|  |             if (isEssential) { | ||||||
|  |               container = gZenWorkspaces.getEssentialsSection(tabToMove); | ||||||
|  |             } else { | ||||||
|  |               const workspaceElement = gZenWorkspaces.workspaceElement(workspaceId); | ||||||
|  |               container = tabToMove.pinned | ||||||
|  |                 ? workspaceElement.pinnedTabsContainer | ||||||
|  |                 : workspaceElement.tabsContainer; | ||||||
|  |             } | ||||||
|  |             container.insertBefore(tabToMove, container.firstChild); | ||||||
|  |           } else { | ||||||
|  |             let relativeTab = gZenWorkspaces.allStoredTabs.find((tab) => { | ||||||
|  |               return this.#getTabId(tab) === this.#getTabId(tabSibling); | ||||||
|  |             }); | ||||||
|  |             if (relativeTab) { | ||||||
|  |               relativeTab.after(tabToMove); | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     async #onTabOpen(event) { | ||||||
|  |       const targetTab = event.target; | ||||||
|  |       const isPinned = targetTab.pinned; | ||||||
|  |       const isEssential = isPinned && targetTab.hasAttribute('zen-essential'); | ||||||
|  |       if (!this.#getTabId(targetTab) && !targetTab.hasAttribute('zen-empty-tab')) { | ||||||
|  |         const tabId = gZenUIManager.generateUuidv4(); | ||||||
|  |         targetTab.setAttribute('zen-sync-id', tabId); | ||||||
|  |       } | ||||||
|  |       const duplicatedTab = gBrowser.addTrustedTab(targetTab.linkedBrowser.currentURI.spec, { | ||||||
|  |         createLazyBrowser: true, | ||||||
|  |         essential: isEssential, | ||||||
|  |         pinned: isPinned, | ||||||
|  |       }); | ||||||
|  |       if (!isEssential) { | ||||||
|  |         gZenWorkspaces.moveTabToWorkspace( | ||||||
|  |           duplicatedTab, | ||||||
|  |           targetTab.getAttribute('zen-workspace-id') | ||||||
|  |         ); | ||||||
|  |       } | ||||||
|  |       duplicatedTab.setAttribute('zen-pin-id', targetTab.getAttribute('zen-pin-id')); | ||||||
|  |       duplicatedTab.setAttribute('zen-sync-id', targetTab.getAttribute('zen-sync-id')); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     #onTabGroupCreate(event) { | ||||||
|  |       const targetGroup = event.target; | ||||||
|  |       const isSplitView = targetGroup.classList.contains('zen-split-view'); | ||||||
|  |       const isFolder = targetGroup.isZenFolder; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   window.gZenWorkspaceWindowSync = new nsZenWorkspaceWindowSync(); | ||||||
|  | } | ||||||
| @@ -1225,13 +1225,9 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature { | |||||||
|     }; |     }; | ||||||
|     const workspaceName = document.getElementById('context_zenEditWorkspace'); |     const workspaceName = document.getElementById('context_zenEditWorkspace'); | ||||||
|     const themePicker = document.getElementById('context_zenChangeWorkspaceTheme'); |     const themePicker = document.getElementById('context_zenChangeWorkspaceTheme'); | ||||||
|     /* We can't show the rename input properly in collapsed state, |  | ||||||
|     so hide the workspace edit input */ |  | ||||||
|     const isCollapsed = !Services.prefs.getBoolPref('zen.view.sidebar-expanded'); |  | ||||||
|     workspaceName.hidden = |     workspaceName.hidden = | ||||||
|       isCollapsed || |       this.#contextMenuData.workspaceId && | ||||||
|       (this.#contextMenuData.workspaceId && |       this.#contextMenuData.workspaceId !== this.activeWorkspace; | ||||||
|         this.#contextMenuData.workspaceId !== this.activeWorkspace); |  | ||||||
|     themePicker.hidden = |     themePicker.hidden = | ||||||
|       this.#contextMenuData.workspaceId && |       this.#contextMenuData.workspaceId && | ||||||
|       this.#contextMenuData.workspaceId !== this.activeWorkspace; |       this.#contextMenuData.workspaceId !== this.activeWorkspace; | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ | |||||||
|       "brandShortName": "Zen", |       "brandShortName": "Zen", | ||||||
|       "brandFullName": "Zen Browser", |       "brandFullName": "Zen Browser", | ||||||
|       "release": { |       "release": { | ||||||
|         "displayVersion": "1.17.3b", |         "displayVersion": "1.17b", | ||||||
|         "github": { |         "github": { | ||||||
|           "repo": "zen-browser/desktop" |           "repo": "zen-browser/desktop" | ||||||
|         }, |         }, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user