mirror of
				https://github.com/zen-browser/desktop.git
				synced 2025-10-26 12:27:50 +00:00 
			
		
		
		
	Compare commits
	
		
			29 Commits
		
	
	
		
			1.15b
			...
			new-toolti
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 439a27d947 | ||
|   | b204671931 | ||
|   | d035348896 | ||
|   | 72433745bc | ||
|   | 2436ada221 | ||
|   | 4a5141c15c | ||
|   | 1015537a91 | ||
|   | 89cafdaa0b | ||
|   | 3723517d7d | ||
|   | c095bc7604 | ||
|   | e312e3fe8d | ||
|   | 70aeebaf66 | ||
|   | f9ca9cc74c | ||
|   | d9646f939c | ||
|   | 8f0292d836 | ||
|   | 95b137ac13 | ||
|   | b1fcaeb97f | ||
|   | 31def1147a | ||
|   | 0a80765589 | ||
|   | e34a053dd0 | ||
|   | 5e790efdce | ||
|   | 005cdf53bd | ||
|   | 429f74a7c7 | ||
|   | 1f72765227 | ||
|   | 91f5e104d2 | ||
|   | 994741f323 | ||
|   | a4ba3340e1 | ||
|   | 5852b2aaa6 | ||
|   | 257547acbd | 
| @@ -34,8 +34,8 @@ Zen is a firefox-based browser with the aim of pushing your productivity to a ne | ||||
|  | ||||
| ### Firefox Versions | ||||
|  | ||||
| - [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `142.0`! 🚀 | ||||
| - [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 142.0`! | ||||
| - [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `142.0.1`! 🚀 | ||||
| - [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 142.0.1`! | ||||
|  | ||||
| ### Contributing | ||||
|  | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| 784e5dbc4955e29ee7a4e0b88adefdd230f2e9fe | ||||
| df0d5e625b9e55c502d3e9e81b29a0d52d0f8d20 | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = إخفاء كليهما | ||||
|     .accesskey = خ | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = New folder | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Expand Sidebar | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Amaga les dues | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Carpeta nova | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Expandeix la barra lateral | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Skrýt obojí | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Nová složka | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Zvětšit boční panel | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Hide both | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = New folder | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Expand Sidebar | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Skjul begge | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Ny mappe | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Udvid Sidepanel | ||||
|   | ||||
| @@ -3,7 +3,7 @@ zen-folders-search-placeholder = | ||||
| zen-folders-panel-rename-folder =  | ||||
|     .label = Ordner umbenennen | ||||
| zen-folders-panel-unpack-folder =  | ||||
|     .label = Ordner entpacken | ||||
|     .label = Ordner auflösen | ||||
| zen-folders-new-subfolder =  | ||||
|     .label = Neuer Unterordner | ||||
| zen-folders-panel-delete-folder =  | ||||
| @@ -15,7 +15,7 @@ zen-folders-panel-change-folder-space = | ||||
| zen-folders-panel-change-icon-folder =  | ||||
|     .label = Symbol ändern | ||||
| zen-folders-unload-all-tooltip =  | ||||
|     .tooltiptext = Unload all tabs in this folder | ||||
|     .tooltiptext = Alle Tabs in diesem Ordner entladen | ||||
| zen-folders-unload-folder =  | ||||
|     .label = Unload All Tabs | ||||
|     .label = Alle Tabs entladen | ||||
| zen-folders-search-no-results = Keine passenden Tabs gefunden 🤔 | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Beide ausblenden | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Neuer Ordner | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Seitenleiste erweitern | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Απόκρυψη όλων | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Νέος φάκελος | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Επέκταση Πλαϊνής στήλης | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Hide both | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = New folder | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Expand Sidebar | ||||
|   | ||||
| @@ -18,7 +18,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Hide both | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder = | ||||
|     .label = New folder | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
|  | ||||
| sidebar-zen-expand = | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Ocultar ambas | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Nueva carpeta | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Expandir barra lateral | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Peida mõlemad | ||||
|     .accesskey = P | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = New folder | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Laienda külgriba | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Hide both | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = New folder | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Expand Sidebar | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Piilota molemmat | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = New folder | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Expand Sidebar | ||||
|   | ||||
| @@ -10,7 +10,7 @@ zen-layout-collapsed-toolbar = Barre d’outils réduite | ||||
| sync-currently-syncing-workspaces = Espaces de travail | ||||
| sync-engine-workspaces =  | ||||
|     .label = Espaces de travail | ||||
|     .tooltiptext = Synchroniser vos espaces de travail sur plusieurs appareils | ||||
|     .tooltiptext = Synchroniser vos Espaces de travail sur plusieurs appareils | ||||
|     .accesskey = W | ||||
| zen-glance-title = Aperçu | ||||
| zen-glance-header = Paramètres généraux d’Aperçu | ||||
| @@ -69,10 +69,10 @@ zen-pinned-tab-manager-reset-close-shortcut-option = | ||||
| zen-pinned-tab-manager-close-close-shortcut-option =  | ||||
|     .label = Fermer l’onglet | ||||
| pane-zen-workspaces-header = Espaces de travail | ||||
| zen-settings-workspaces-header = Paramètres généraux des espaces de travail | ||||
| zen-settings-workspaces-description = Avec des espaces de travail, vous pouvez avoir plusieurs sessions de navigation à la fois ! | ||||
| zen-settings-workspaces-header = Paramètres généraux des Espaces de travail | ||||
| zen-settings-workspaces-description = Avec les Espaces de travail, vous pouvez avoir plusieurs sessions de navigation à la fois ! | ||||
| zen-settings-workspaces-enabled =  | ||||
|     .label = Activer les espaces de travail | ||||
|     .label = Activer les Espaces de travail | ||||
| zen-settings-workspaces-hide-default-container-indicator =  | ||||
|     .label = Dans la barre d’onglets, masquer l’indicateur de conteneur par défaut | ||||
| zen-key-unsaved = Raccourci non sauvegardé ! Pour l’enregistrer, veuillez le resaisir et en appuyer sur Échap. | ||||
| @@ -99,7 +99,7 @@ zen-theme-disable-all-disabled = | ||||
|     .title = Activer tous les mods | ||||
| zen-theme-marketplace-description = Trouvez et installez des mods à partir du magasin. | ||||
| zen-theme-marketplace-remove-button =  | ||||
|     .label = Supprimer le thème | ||||
|     .label = Supprimer le mod | ||||
| zen-theme-marketplace-check-for-updates-button =  | ||||
|     .label = Vérifier les mises à jour | ||||
| zen-theme-marketplace-import-button =  | ||||
| @@ -113,9 +113,9 @@ zen-theme-marketplace-export-failure = Une erreur s'est produite lors de l'expor | ||||
| zen-theme-marketplace-updates-success = Mods mis à jour avec succès | ||||
| zen-theme-marketplace-updates-failure = Impossible de trouver des mises à jour ! | ||||
| zen-theme-marketplace-toggle-enabled-button =  | ||||
|     .title = Désactiver le thème | ||||
|     .title = Désactiver le mod | ||||
| zen-theme-marketplace-toggle-disabled-button =  | ||||
|     .title = Activer le thème | ||||
|     .title = Activer le mod | ||||
| zen-theme-marketplace-remove-confirmation = Êtes-vous sûr de vouloir supprimer ce mod ? | ||||
| zen-theme-marketplace-close-modal = Fermer | ||||
| zen-theme-marketplace-theme-header-title =  | ||||
| @@ -128,7 +128,7 @@ pane-zen-marketplace-title = Mods Zen | ||||
| zen-themes-auto-update =  | ||||
|     .label = Mettre à jour automatiquement les mods installés lors du démarrage | ||||
| zen-settings-workspaces-force-container-tabs-to-workspace =  | ||||
|     .label = À l'ouverture des onglets du conteneur, basculer vers l’espace de travail où le conteneur est défini par défaut | ||||
|     .label = À l'ouverture des onglets du conteneur, basculer vers l’Espace de travail où le conteneur est défini par défaut | ||||
| zen-theme-marketplace-link = Visiter le magasin | ||||
| zen-dark-theme-styles-header = Styles de thème sombre | ||||
| zen-dark-theme-styles-description = Personnalisez le thème sombre selon vos préférences | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Masquer les deux | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Nouveau dossier | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Étendre la barre latérale | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-folders-panel-change-folder-space = | ||||
| zen-folders-panel-change-icon-folder =  | ||||
|     .label = Athraigh Deilbhín | ||||
| zen-folders-unload-all-tooltip =  | ||||
|     .tooltiptext = Unload all tabs in this folder | ||||
|     .tooltiptext = Díluchtaigh gach cluaisín sa bhfillteán seo | ||||
| zen-folders-unload-folder =  | ||||
|     .label = Unload All Tabs | ||||
|     .label = Díluchtaigh Gach Cluaisín | ||||
| zen-folders-search-no-results = Níl aon chluaisíní ann a mheaitseálann an cuardach sin 🤔 | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Folaigh an dá cheann | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Fillteán nua | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Barra Taoibh a Leathnú | ||||
|   | ||||
| @@ -1,21 +1,21 @@ | ||||
| zen-folders-search-placeholder =  | ||||
|     .placeholder = חיפוש { $folder-name }... | ||||
| zen-folders-panel-rename-folder =  | ||||
|     .label = Rename Folder | ||||
|     .label = שינוי שם תיקייה | ||||
| zen-folders-panel-unpack-folder =  | ||||
|     .label = Unpack Folder | ||||
|     .label = חילוץ תיקייה | ||||
| zen-folders-new-subfolder =  | ||||
|     .label = New Subfolder | ||||
|     .label = תת תיקייה חדשה | ||||
| zen-folders-panel-delete-folder =  | ||||
|     .label = Delete Folder | ||||
|     .label = מחיקת תיקייה | ||||
| zen-folders-panel-convert-folder-to-space =  | ||||
|     .label = Convert folder to Space | ||||
|     .label = המרת תיקייה לסביבה | ||||
| zen-folders-panel-change-folder-space =  | ||||
|     .label = Change Space... | ||||
|     .label = שינוי סביבה... | ||||
| zen-folders-panel-change-icon-folder =  | ||||
|     .label = Change Icon | ||||
|     .label = שינוי סמל | ||||
| zen-folders-unload-all-tooltip =  | ||||
|     .tooltiptext = Unload all tabs in this folder | ||||
|     .tooltiptext = פינוי כל הכרטיסייות בתיקייה הזו | ||||
| zen-folders-unload-folder =  | ||||
|     .label = Unload All Tabs | ||||
| zen-folders-search-no-results = No tabs matching that search 🤔 | ||||
|     .label = פינוי כל הכרטיסייות | ||||
| zen-folders-search-no-results = אין כרטיסיות שתואמות לחיפוש 🤔 | ||||
|   | ||||
| @@ -45,6 +45,6 @@ zen-close-label = סגור | ||||
| zen-singletoolbar-urlbar-placeholder-with-name =  | ||||
|     .placeholder = חיפוש... | ||||
| zen-icons-picker-emoji =  | ||||
|     .label = Emojis | ||||
|     .label = אימוג'ים | ||||
| zen-icons-picker-svg =  | ||||
|     .label = Icons | ||||
|     .label = סמלים | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = הסתרת שניהם | ||||
|     .accesskey = י | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = תיקייה חדשה | ||||
|     .label = New Folder | ||||
|     .accesskey = מ | ||||
| sidebar-zen-expand =  | ||||
|     .label = הרחבת סרגל צדדי | ||||
|   | ||||
| @@ -2,7 +2,7 @@ zen-panel-ui-workspaces-text = סביבות עבודה | ||||
| zen-panel-ui-workspaces-create =  | ||||
|     .label = צור סביבה | ||||
| zen-panel-ui-folder-create =  | ||||
|     .label = Create Folder | ||||
|     .label = יצירת תיקייה | ||||
| zen-workspaces-panel-context-delete =  | ||||
|     .label = מחק סיבת עבודה | ||||
|     .accesskey = ג | ||||
| @@ -48,4 +48,4 @@ zen-workspace-creation-profile = פרופיל | ||||
| zen-workspace-creation-header = צור סביבה | ||||
| zen-workspace-creation-label = סביבות משומשות לסידור כרטיסיות והפעלות. | ||||
| zen-workspaces-delete-workspace-title = Delete Workspace? | ||||
| zen-workspaces-delete-workspace-body = Are you sure you want to delete { $name }? This action cannot be undone. | ||||
| zen-workspaces-delete-workspace-body = האם ברצונך למחוק { $name }? פעולה זו לא ניתנת לביטול. | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Mindkettő elrejtése | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Új mappa | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Oldalsáv kibontása | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-folders-panel-change-folder-space = | ||||
| zen-folders-panel-change-icon-folder =  | ||||
|     .label = Ubah Ikon | ||||
| zen-folders-unload-all-tooltip =  | ||||
|     .tooltiptext = Unload all tabs in this folder | ||||
|     .tooltiptext = Lepaskan semua tab di folder ini | ||||
| zen-folders-unload-folder =  | ||||
|     .label = Unload All Tabs | ||||
|     .label = Lepaskan Semua Tab | ||||
| zen-folders-search-no-results = Tidak ada tab yang cocok 🤔 | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Sembunyikan keduanya | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Folder baru | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Perluas Bilah Sisi | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Hide both | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = New folder | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Expand Sidebar | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Nascondi entrambi | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Nuova cartella | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Espandi barra laterale | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = 両方隠す | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = New folder | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = サイドバーを展開する | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = 둘 다 숨기기 | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = 새 폴더 | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = 사이드바 확장 | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Slėpti abi | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Naujas aplankas | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Išskleisti šoninę juostą | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Beide verbergen | ||||
|     .accesskey = U | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Nieuwe map | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Zijbalk uitklappen | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Hide both | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = New folder | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Expand Sidebar | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Ukryj oba | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Nowy folder | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Rozwiń panel boczny | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Esconder os dois | ||||
|     .accesskey = A | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Nova pasta | ||||
|     .label = Nova Pasta | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Expandir barra lateral | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Ocultar ambas | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Nova pasta | ||||
|     .label = Nova Pasta | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Expandir Barra Lateral | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Скрыть оба | ||||
|     .accesskey = Н | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Новая папка | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Развернуть боковую панель | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Dölj båda | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = New folder | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Expand Sidebar | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Hide both | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = New folder | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Expand Sidebar | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = İkisini de Gizle | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Yeni klasör | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Kenar Çubuğunu Genişlet | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Приховувати обидві | ||||
|     .accesskey = Н | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Нова тека | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Розгорнути бічну панель | ||||
|   | ||||
| @@ -97,7 +97,7 @@ zen-theme-disable-all-enabled = | ||||
|     .title = Tắt tất cả tùy chỉnh | ||||
| zen-theme-disable-all-disabled =  | ||||
|     .title = Bật tất cả tùy chỉnh | ||||
| zen-theme-marketplace-description = Tìm và cài đặt tùy chỉnh từ cửa hàng. | ||||
| zen-theme-marketplace-description = Tìm và cài đặt tinh chỉnh từ cửa hàng. | ||||
| zen-theme-marketplace-remove-button =  | ||||
|     .label = Xóa tùy chỉnh | ||||
| zen-theme-marketplace-check-for-updates-button =  | ||||
| @@ -111,7 +111,7 @@ zen-theme-marketplace-import-failure = Có lỗi xảy ra khi nhập các tùy c | ||||
| zen-theme-marketplace-export-success = Các tùy chỉnh được xuất thành công | ||||
| zen-theme-marketplace-export-failure = Có lỗi xảy ra khi xuất các tùy chỉnh | ||||
| zen-theme-marketplace-updates-success = Cập nhật tùy chỉnh thành công | ||||
| zen-theme-marketplace-updates-failure = Không có cập nhật mới | ||||
| zen-theme-marketplace-updates-failure = Không có cập nhật mới! | ||||
| zen-theme-marketplace-toggle-enabled-button =  | ||||
|     .title = Tắt các tùy chỉnh | ||||
| zen-theme-marketplace-toggle-disabled-button =  | ||||
| @@ -126,7 +126,7 @@ zen-theme-marketplace-input-default-placeholder = | ||||
|     .placeholder = Gõ gì đó đi... | ||||
| pane-zen-marketplace-title = Zen Mods | ||||
| zen-themes-auto-update =  | ||||
|     .label = Tự động câmpj nhất các tùy chỉnh khi mở trình duyệt | ||||
|     .label = Tự động cập nhật các tùy chỉnh khi mở trình duyệt | ||||
| zen-settings-workspaces-force-container-tabs-to-workspace =  | ||||
|     .label = Switch to workspace where container is set as default when opening container tabs | ||||
| zen-theme-marketplace-link = Vào cửa hàng | ||||
| @@ -139,7 +139,7 @@ zen-compact-mode-styles-left = Ẩn thanh tab | ||||
| zen-compact-mode-styles-top = Ẩn thanh trên cùng | ||||
| zen-compact-mode-styles-both = Ẩn cả hai | ||||
| zen-urlbar-title = Thanh đường dẫn | ||||
| zen-urlbar-header = Thiệt lập chung cho thanh đường dẫn | ||||
| zen-urlbar-header = Thiết lập chung cho thanh đường dẫn | ||||
| zen-urlbar-description = Tùy chỉnh thanh đường dẫn theo sở thích | ||||
| zen-urlbar-behavior-label = Hành vi thanh đường dẫn | ||||
| zen-urlbar-behavior-normal =  | ||||
| @@ -176,7 +176,7 @@ zen-key-quick-restart = Khởi động lại nhanh | ||||
| zen-window-new-shortcut = Cửa sổ mới | ||||
| zen-tab-new-shortcut = Tab mới | ||||
| zen-key-redo = Hoàn tác | ||||
| zen-restore-last-closed-tab-shortcut = Khôi phục lại tab gần nhất đã đóng | ||||
| zen-restore-last-closed-tab-shortcut = Khôi phục lại thẻ gần nhất đã đóng | ||||
| zen-location-open-shortcut = Mở đường dẫn | ||||
| zen-location-open-shortcut-alt = Mở tại (Alt) | ||||
| zen-key-undo-close-window = Mở lại cửa sổ đã đóng | ||||
|   | ||||
| @@ -3,9 +3,9 @@ zen-folders-search-placeholder = | ||||
| zen-folders-panel-rename-folder =  | ||||
|     .label = Đổi tên thư mục thẻ | ||||
| zen-folders-panel-unpack-folder =  | ||||
|     .label = Unpack Folder | ||||
|     .label = Giải thoát thư mục | ||||
| zen-folders-new-subfolder =  | ||||
|     .label = New Subfolder | ||||
|     .label = Tạo thư mục con | ||||
| zen-folders-panel-delete-folder =  | ||||
|     .label = Xóa thư mục thẻ | ||||
| zen-folders-panel-convert-folder-to-space =  | ||||
| @@ -15,7 +15,7 @@ zen-folders-panel-change-folder-space = | ||||
| zen-folders-panel-change-icon-folder =  | ||||
|     .label = Đổi biểu tượng thư mục thẻ | ||||
| zen-folders-unload-all-tooltip =  | ||||
|     .tooltiptext = Unload all tabs in this folder | ||||
|     .tooltiptext = Tải lại tất cả các thẻ trong thư mục | ||||
| zen-folders-unload-folder =  | ||||
|     .label = Unload All Tabs | ||||
|     .label = Tải lại tất cả các thẻ | ||||
| zen-folders-search-no-results = Không có thẻ nào trùng với tìm kiếm 🤔 | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = Ẩn cả hai | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = Thư mực thẻ mới | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = Mở rộng thanh bên | ||||
|   | ||||
| @@ -48,4 +48,4 @@ zen-workspace-creation-profile = Hồ sơ | ||||
| zen-workspace-creation-header = Tạo không gian làm việc | ||||
| zen-workspace-creation-label = Không gian làm việc sẽ là nơi để bạn chứa các trang web và lượt truy cập của bạn. | ||||
| zen-workspaces-delete-workspace-title = Delete Workspace? | ||||
| zen-workspaces-delete-workspace-body = Are you sure you want to delete { $name }? This action cannot be undone. | ||||
| zen-workspaces-delete-workspace-body = Bạn có chắc là bạn muốn xóa { $name }? Thao tác này sẽ không được hoàn lại. | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = 两者都隐藏 | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = 新建文件夹 | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = 展开侧边栏 | ||||
|   | ||||
| @@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both = | ||||
|     .label = 兩者皆隱藏 | ||||
|     .accesskey = H | ||||
| zen-toolbar-context-new-folder =  | ||||
|     .label = New folder | ||||
|     .label = New Folder | ||||
|     .accesskey = N | ||||
| sidebar-zen-expand =  | ||||
|     .label = 展開側邊欄 | ||||
|   | ||||
| @@ -24,5 +24,4 @@ | ||||
|  | ||||
| - name: zen.injections.match-urls | ||||
|   value: 'http://localhost/*' | ||||
|   locked: true | ||||
|   condition: '!defined(MOZILLA_OFFICIAL)' | ||||
|   | ||||
| @@ -23,7 +23,7 @@ | ||||
|   value: true | ||||
|  | ||||
| - name: browser.urlbar.maxRichResults | ||||
|   value: 5 | ||||
|   value: 6 | ||||
|  | ||||
| # Enable private suggestions | ||||
| - name: browser.search.suggest.enabled | ||||
|   | ||||
| @@ -38,7 +38,6 @@ | ||||
|   <menuseparator /> | ||||
|   <menuitem id="context_zenFolderUnloadAll" data-l10n-id="zen-folders-unload-folder"/> | ||||
|   <menuitem id="context_zenFolderNewSubfolder" data-l10n-id="zen-folders-new-subfolder"/> | ||||
|   <menuitem id="context_zenFolderUnpack" data-l10n-id="zen-folders-panel-unpack-folder"/> | ||||
|   <menuseparator /> | ||||
|   <menu id="context_zenChangeFolderSpace" | ||||
|     data-l10n-id="zen-folders-panel-change-folder-space"> | ||||
| @@ -46,5 +45,6 @@ | ||||
|   </menu> | ||||
|   <menuitem id="context_zenFolderToSpace" data-l10n-id="zen-folders-panel-convert-folder-to-space" /> | ||||
|   <menuseparator /> | ||||
|   <menuitem id="context_zenFolderUnpack" data-l10n-id="zen-folders-panel-unpack-folder"/> | ||||
|   <menuitem id="context_zenFolderDelete" data-l10n-id="zen-folders-panel-delete-folder"/> | ||||
| </menupopup> | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml | ||||
| index f9129fb171362e81369056923bf25acbb87d2ad8..924bcd2cd66a5dfcf9c45aac0c63cd0257c21a2c 100644 | ||||
| index 66ce978d9b022285dea67fdb75b3c005adb05d9b..db61587570ca18403a82ea6796a756d403cc207e 100644 | ||||
| --- a/browser/components/preferences/main.inc.xhtml | ||||
| +++ b/browser/components/preferences/main.inc.xhtml | ||||
| @@ -29,6 +29,9 @@ | ||||
| @@ -12,23 +12,17 @@ index f9129fb171362e81369056923bf25acbb87d2ad8..924bcd2cd66a5dfcf9c45aac0c63cd02 | ||||
|  #ifdef XP_WIN | ||||
|      <hbox id="windowsLaunchOnLoginBox" align="center" hidden="true"> | ||||
|        <checkbox id="windowsLaunchOnLogin" | ||||
| @@ -186,6 +189,7 @@ | ||||
|  </groupbox> | ||||
|   | ||||
| @@ -188,7 +191,8 @@ | ||||
|  <!-- Browser layout --> | ||||
| +#if 0 | ||||
|  <groupbox data-category="paneGeneral" | ||||
|            data-subcategory="layout" | ||||
|            hidden="true"> | ||||
| @@ -201,6 +205,7 @@ | ||||
|              preference="sidebar.revamp"/> | ||||
|    <description class="indent" data-l10n-id="browser-layout-show-sidebar-desc"></description> | ||||
|  </groupbox> | ||||
| +#endif | ||||
|   | ||||
|  <hbox id="languageAndAppearanceCategory" | ||||
|        class="subcategory" | ||||
| @@ -421,6 +426,7 @@ | ||||
| -          hidden="true"> | ||||
| +          hidden="true" | ||||
| +          style="display: none !important;"> | ||||
|    <label><html:h2 data-l10n-id="browser-layout-header"/></label> | ||||
|    <radiogroup id="browserLayoutRadioGroup" preference="sidebar.verticalTabs"> | ||||
|      <radio id="browserLayoutHorizontalTabs" data-l10n-id="browser-layout-horizontal-tabs" value="false"/> | ||||
| @@ -419,6 +423,7 @@ | ||||
|                languages-customize-add.label, | ||||
|              " /> | ||||
|    </hbox> | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs | ||||
| index e954a8df26ed84731b08b151f90a758206946582..5b8013c71c6b50579668d16a5f7d5a82b5d43e4d 100644 | ||||
| index e954a8df26ed84731b08b151f90a758206946582..64ab1cce10324d574b49fe861975188c292756c3 100644 | ||||
| --- a/browser/components/sessionstore/SessionStore.sys.mjs | ||||
| +++ b/browser/components/sessionstore/SessionStore.sys.mjs | ||||
| @@ -2135,7 +2135,6 @@ var SessionStoreInternal = { | ||||
| @@ -143,3 +143,12 @@ index e954a8df26ed84731b08b151f90a758206946582..5b8013c71c6b50579668d16a5f7d5a82 | ||||
|   | ||||
|      if (tabData.pinned) { | ||||
|        tabbrowser.pinTab(tab); | ||||
| @@ -7266,7 +7289,7 @@ var SessionStoreInternal = { | ||||
|   | ||||
|        let groupsToSave = new Map(); | ||||
|        for (let tIndex = 0; tIndex < window.tabs.length; ) { | ||||
| -        if (window.tabs[tIndex].pinned) { | ||||
| +        if (window.tabs[tIndex].pinned && false) { | ||||
|            // Adjust window.selected | ||||
|            if (tIndex + 1 < window.selected) { | ||||
|              window.selected -= 1; | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js | ||||
| index d80a66a01002e78a9c65545d08fe786328ddf124..4adabe030bfb322db1a9c95f71eb1adc58e2af77 100644 | ||||
| index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6fe685e62 100644 | ||||
| --- a/browser/components/tabbrowser/content/tabbrowser.js | ||||
| +++ b/browser/components/tabbrowser/content/tabbrowser.js | ||||
| @@ -422,15 +422,60 @@ | ||||
| @@ -391,10 +391,10 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..4adabe030bfb322db1a9c95f71eb1adc | ||||
| +            gZenWorkspaces._initialTab._shouldRemove = true; | ||||
| +          } | ||||
| +        } | ||||
| +      } | ||||
|        } | ||||
| +      else { | ||||
| +        gZenWorkspaces._tabToRemoveForEmpty = this.selectedTab; | ||||
|        } | ||||
| +      } | ||||
| +      this._hasAlreadyInitializedZenSessionStore = true; | ||||
|   | ||||
|        if (tabs.length > 1 || !tabs[0].selected) { | ||||
| @@ -623,11 +623,13 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..4adabe030bfb322db1a9c95f71eb1adc | ||||
|      } | ||||
|   | ||||
|      /** | ||||
| @@ -6049,7 +6181,7 @@ | ||||
| @@ -6048,8 +6180,8 @@ | ||||
|        } | ||||
|   | ||||
|        // Don't allow mixing pinned and unpinned tabs. | ||||
|        if (this.isTab(element) && element.pinned) { | ||||
| -      if (this.isTab(element) && element.pinned) { | ||||
| -        tabIndex = Math.min(tabIndex, this.pinnedTabCount - 1); | ||||
| +      if (element.pinned) { | ||||
| +        tabIndex = element.hasAttribute('zen-essential') ? Math.min(tabIndex, this._numZenEssentials - 1) : Math.min(Math.max(tabIndex, this._numZenEssentials), this.pinnedTabCount - 1); | ||||
|        } else { | ||||
|          tabIndex = Math.max(tabIndex, this.pinnedTabCount); | ||||
| @@ -651,7 +653,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..4adabe030bfb322db1a9c95f71eb1adc | ||||
|            if (neighbor && this.isTab(element) && tabIndex > element._tPos) { | ||||
|              neighbor.after(element); | ||||
|            } else { | ||||
| @@ -6136,22 +6274,23 @@ | ||||
| @@ -6136,23 +6274,28 @@ | ||||
|      #moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) { | ||||
|        if (this.isTabGroupLabel(targetElement)) { | ||||
|          targetElement = targetElement.group; | ||||
| @@ -679,9 +681,14 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..4adabe030bfb322db1a9c95f71eb1adc | ||||
| -        targetElement = this.tabs[this.pinnedTabCount - 1]; | ||||
| +        targetElement = this.tabsWithoutGlance[this.pinnedTabCount - 1]; | ||||
|          moveBefore = false; | ||||
| +        if (!this.visibleTabs.includes(targetElement)) { | ||||
| +          targetElement = gZenWorkspaces.pinnedTabsContainer.querySelector('.pinned-tabs-container-separator') | ||||
| +          moveBefore = true; | ||||
| +        } | ||||
|        } else if (!element.pinned && targetElement && targetElement.pinned) { | ||||
|          // If the caller asks to move an unpinned element next to a pinned | ||||
| @@ -6165,14 +6304,34 @@ | ||||
|          // tab, move the unpinned element to be the first unpinned element | ||||
| @@ -6165,14 +6308,34 @@ | ||||
|          //    move the tab group right before the first unpinned tab. | ||||
|          // 4. Moving a tab group and the first unpinned tab is grouped: | ||||
|          //    move the tab group right before the first unpinned tab's tab group. | ||||
| @@ -717,7 +724,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..4adabe030bfb322db1a9c95f71eb1adc | ||||
|          element.pinned | ||||
|            ? this.tabContainer.pinnedTabsContainer | ||||
|            : this.tabContainer; | ||||
| @@ -6181,7 +6340,7 @@ | ||||
| @@ -6181,7 +6344,7 @@ | ||||
|          element, | ||||
|          () => { | ||||
|            if (moveBefore) { | ||||
| @@ -726,7 +733,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..4adabe030bfb322db1a9c95f71eb1adc | ||||
|            } else if (targetElement) { | ||||
|              targetElement.after(element); | ||||
|            } else { | ||||
| @@ -6227,10 +6386,10 @@ | ||||
| @@ -6227,10 +6390,10 @@ | ||||
|       * @param {TabMetricsContext} [metricsContext] | ||||
|       */ | ||||
|      moveTabToGroup(aTab, aGroup, metricsContext) { | ||||
| @@ -739,7 +746,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..4adabe030bfb322db1a9c95f71eb1adc | ||||
|          return; | ||||
|        } | ||||
|        if (aTab.group && aTab.group.id === aGroup.id) { | ||||
| @@ -6324,6 +6483,10 @@ | ||||
| @@ -6324,6 +6487,10 @@ | ||||
|   | ||||
|        moveActionCallback(); | ||||
|   | ||||
| @@ -750,7 +757,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..4adabe030bfb322db1a9c95f71eb1adc | ||||
|        // Clear tabs cache after moving nodes because the order of tabs may have | ||||
|        // changed. | ||||
|        this.tabContainer._invalidateCachedTabs(); | ||||
| @@ -7221,7 +7384,7 @@ | ||||
| @@ -7221,7 +7388,7 @@ | ||||
|              // preventDefault(). It will still raise the window if appropriate. | ||||
|              break; | ||||
|            } | ||||
| @@ -759,7 +766,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..4adabe030bfb322db1a9c95f71eb1adc | ||||
|            window.focus(); | ||||
|            aEvent.preventDefault(); | ||||
|            break; | ||||
| @@ -8166,6 +8329,7 @@ | ||||
| @@ -8166,6 +8333,7 @@ | ||||
|              aWebProgress.isTopLevel | ||||
|            ) { | ||||
|              this.mTab.setAttribute("busy", "true"); | ||||
| @@ -767,7 +774,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..4adabe030bfb322db1a9c95f71eb1adc | ||||
|              gBrowser._tabAttrModified(this.mTab, ["busy"]); | ||||
|              this.mTab._notselectedsinceload = !this.mTab.selected; | ||||
|            } | ||||
| @@ -9157,7 +9321,7 @@ var TabContextMenu = { | ||||
| @@ -9157,7 +9325,7 @@ var TabContextMenu = { | ||||
|      ); | ||||
|      contextUnpinSelectedTabs.hidden = | ||||
|        !this.contextTab.pinned || !this.multiselected; | ||||
| @@ -776,7 +783,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..4adabe030bfb322db1a9c95f71eb1adc | ||||
|      // Build Ask Chat items | ||||
|      TabContextMenu.GenAI.buildTabMenu( | ||||
|        document.getElementById("context_askChat"), | ||||
| @@ -9476,6 +9640,7 @@ var TabContextMenu = { | ||||
| @@ -9476,6 +9644,7 @@ var TabContextMenu = { | ||||
|          ) | ||||
|        ); | ||||
|      } else { | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js | ||||
| index caea196b22b4689f55780a528661d87b52f4e728..c107c803d0820a209c0859745dcc8370294eb7b2 100644 | ||||
| index caea196b22b4689f55780a528661d87b52f4e728..729848f1d3856bc4a5225e1a83cc10ef22819ca1 100644 | ||||
| --- a/browser/components/tabbrowser/content/tabgroup.js | ||||
| +++ b/browser/components/tabbrowser/content/tabgroup.js | ||||
| @@ -13,10 +13,12 @@ | ||||
| @@ -92,7 +92,17 @@ index caea196b22b4689f55780a528661d87b52f4e728..c107c803d0820a209c0859745dcc8370 | ||||
|      } | ||||
|   | ||||
|      get color() { | ||||
| @@ -338,12 +356,61 @@ | ||||
| @@ -285,6 +303,9 @@ | ||||
|      } | ||||
|   | ||||
|      set collapsed(val) { | ||||
| +      if (this.hasAttribute("split-view-group")) { | ||||
| +        return; | ||||
| +      } | ||||
|        if (!!val == this.collapsed) { | ||||
|          return; | ||||
|        } | ||||
| @@ -338,12 +359,61 @@ | ||||
|            tabGroupName, | ||||
|          }) | ||||
|          .then(result => { | ||||
| @@ -156,7 +166,7 @@ index caea196b22b4689f55780a528661d87b52f4e728..c107c803d0820a209c0859745dcc8370 | ||||
|      } | ||||
|   | ||||
|      /** | ||||
| @@ -373,7 +440,7 @@ | ||||
| @@ -373,7 +443,7 @@ | ||||
|       */ | ||||
|      addTabs(tabs, metricsContext) { | ||||
|        for (let tab of tabs) { | ||||
| @@ -165,7 +175,7 @@ index caea196b22b4689f55780a528661d87b52f4e728..c107c803d0820a209c0859745dcc8370 | ||||
|            tab.ownerGlobal.gBrowser.unpinTab(tab); | ||||
|          } | ||||
|          let tabToMove = | ||||
| @@ -437,7 +504,7 @@ | ||||
| @@ -437,7 +507,7 @@ | ||||
|       */ | ||||
|      on_click(event) { | ||||
|        let isToggleElement = | ||||
| @@ -174,7 +184,7 @@ index caea196b22b4689f55780a528661d87b52f4e728..c107c803d0820a209c0859745dcc8370 | ||||
|          event.target === this.#overflowCountLabel; | ||||
|        if (isToggleElement && event.button === 0) { | ||||
|          event.preventDefault(); | ||||
| @@ -470,5 +537,6 @@ | ||||
| @@ -470,5 +540,6 @@ | ||||
|      } | ||||
|    } | ||||
|   | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js | ||||
| index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d075b9cf7 100644 | ||||
| index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c3b65f80b 100644 | ||||
| --- a/browser/components/tabbrowser/content/tabs.js | ||||
| +++ b/browser/components/tabbrowser/content/tabs.js | ||||
| @@ -332,7 +332,7 @@ | ||||
| @@ -28,20 +28,16 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|          let tabsPerRow = 0; | ||||
|          let position = RTL_UI | ||||
|            ? window.windowUtils.getBoundsWithoutFlushing( | ||||
| @@ -772,9 +771,10 @@ | ||||
| @@ -851,7 +850,7 @@ | ||||
|        let dropEffect = this.getDropEffectForTabDrag(event); | ||||
|        let isMovingInTabStrip = !fromTabList && dropEffect == "move"; | ||||
|        let collapseTabGroupDuringDrag = | ||||
| -        isMovingInTabStrip && isTabGroupLabel(tab) && !tab.group.collapsed; | ||||
| +        isMovingInTabStrip && isTabGroupLabel(tab) && (!tab.group.collapsed || tab.group.hasAttribute("has-active")); | ||||
|   | ||||
|          if (tab.multiselected) { | ||||
|            this.#moveTogetherSelectedTabs(tab); | ||||
| -        } else if (isTabGroupLabel(tab) && !tab.group.collapsed) { | ||||
| -          tab.group.collapsed = true; | ||||
| +        } else if (isTabGroupLabel(tab) && (!tab.group.collapsed || tab.group.hasAttribute("has-active"))) { | ||||
| +          tab.group.collapsed = !tab.group.hasAttribute("split-view-group"); | ||||
|            expandGroupOnDrop = true; | ||||
| +          gZenFolders.collapseVisibleTab(tab.group); | ||||
|          } | ||||
|        } | ||||
|   | ||||
| @@ -872,7 +872,7 @@ | ||||
|        tab._dragData = { | ||||
|          offsetX: this.verticalMode | ||||
| @@ -861,7 +860,7 @@ | ||||
|            ? event.screenY - window.screenY - tabOffset | ||||
|            : event.screenY - window.screenY, | ||||
|          scrollPos: | ||||
| @@ -50,7 +46,15 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|              ? this.pinnedTabsContainer.scrollPosition | ||||
|              : this.arrowScrollbox.scrollPosition, | ||||
|          screenX: event.screenX, | ||||
| @@ -933,6 +933,10 @@ | ||||
| @@ -886,6 +885,7 @@ | ||||
|          if (tab.multiselected) { | ||||
|            this.#moveTogetherSelectedTabs(tab); | ||||
|          } else if (collapseTabGroupDuringDrag) { | ||||
| +          gZenFolders.collapseVisibleTab(tab.group); | ||||
|            tab.group.collapsed = true; | ||||
|          } | ||||
|        } | ||||
| @@ -932,6 +932,10 @@ | ||||
|        } | ||||
|   | ||||
|        let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0); | ||||
| @@ -61,7 +65,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|        if ( | ||||
|          (dropEffect == "move" || dropEffect == "copy") && | ||||
|          document == draggedTab.ownerDocument && | ||||
| @@ -1060,7 +1064,9 @@ | ||||
| @@ -1059,7 +1063,9 @@ | ||||
|          isTabGroupLabel(draggedTab) && | ||||
|          draggedTab._dragData?.expandGroupOnDrop | ||||
|        ) { | ||||
| @@ -72,7 +76,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|        } | ||||
|      } | ||||
|   | ||||
| @@ -1096,6 +1102,18 @@ | ||||
| @@ -1095,6 +1101,18 @@ | ||||
|   | ||||
|        this._tabDropIndicator.hidden = true; | ||||
|        event.stopPropagation(); | ||||
| @@ -91,7 +95,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|        if (draggedTab && dropEffect == "copy") { | ||||
|          let duplicatedDraggedTab; | ||||
|          let duplicatedTabs = []; | ||||
| @@ -1120,8 +1138,9 @@ | ||||
| @@ -1119,8 +1137,9 @@ | ||||
|          let translateOffsetY = oldTranslateY % tabHeight; | ||||
|          let newTranslateX = oldTranslateX - translateOffsetX; | ||||
|          let newTranslateY = oldTranslateY - translateOffsetY; | ||||
| @@ -103,7 +107,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|   | ||||
|          if (this.#isContainerVerticalPinnedGrid(draggedTab)) { | ||||
|            // Update both translate axis for pinned vertical expanded tabs | ||||
| @@ -1137,8 +1156,8 @@ | ||||
| @@ -1136,8 +1155,8 @@ | ||||
|            } | ||||
|          } else { | ||||
|            let tabs = this.ariaFocusableItems.slice( | ||||
| @@ -114,7 +118,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|            ); | ||||
|            let size = this.verticalMode ? "height" : "width"; | ||||
|            let screenAxis = this.verticalMode ? "screenY" : "screenX"; | ||||
| @@ -1179,11 +1198,9 @@ | ||||
| @@ -1178,11 +1197,9 @@ | ||||
|          } | ||||
|   | ||||
|          let shouldPin = | ||||
| @@ -128,7 +132,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|          let shouldTranslate = | ||||
|            !gReduceMotion && | ||||
|            !shouldCreateGroupOnDrop && | ||||
| @@ -1196,6 +1213,7 @@ | ||||
| @@ -1195,6 +1212,7 @@ | ||||
|              (oldTranslateY && oldTranslateY != newTranslateY); | ||||
|          } else if (this.verticalMode) { | ||||
|            shouldTranslate &&= oldTranslateY && oldTranslateY != newTranslateY; | ||||
| @@ -136,7 +140,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|          } else { | ||||
|            shouldTranslate &&= oldTranslateX && oldTranslateX != newTranslateX; | ||||
|          } | ||||
| @@ -1379,6 +1397,7 @@ | ||||
| @@ -1376,6 +1394,7 @@ | ||||
|   | ||||
|            let nextItem = this.ariaFocusableItems[newIndex]; | ||||
|            let tabGroup = isTab(nextItem) && nextItem.group; | ||||
| @@ -144,7 +148,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|            gBrowser.loadTabs(urls, { | ||||
|              inBackground, | ||||
|              replace, | ||||
| @@ -1411,6 +1430,17 @@ | ||||
| @@ -1408,6 +1427,17 @@ | ||||
|   | ||||
|        this.finishMoveTogetherSelectedTabs(draggedTab); | ||||
|        this.finishAnimateTabMove(); | ||||
| @@ -159,10 +163,10 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
| +        if (gZenViewSplitter._lastOpenedTab) gZenViewSplitter._lastOpenedTab._visuallySelected = false; | ||||
| +      } | ||||
| + | ||||
|        this.#keepTabSizeLocked = false; | ||||
|        this._unlockTabSizing(); | ||||
|        this.#expandGroupOnDrop(draggedTab); | ||||
| @@ -1582,7 +1612,6 @@ | ||||
|        this.#resetTabsAfterDrop(draggedTab.ownerDocument); | ||||
|   | ||||
| @@ -1577,7 +1607,6 @@ | ||||
|   | ||||
|        this.toggleAttribute("overflow", true); | ||||
|        this._updateCloseButtons(); | ||||
| @@ -170,7 +174,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|   | ||||
|        document | ||||
|          .getElementById("tab-preview-panel") | ||||
| @@ -1640,7 +1669,7 @@ | ||||
| @@ -1635,7 +1664,7 @@ | ||||
|      } | ||||
|   | ||||
|      get newTabButton() { | ||||
| @@ -179,7 +183,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|      } | ||||
|   | ||||
|      get verticalMode() { | ||||
| @@ -1656,6 +1685,7 @@ | ||||
| @@ -1651,6 +1680,7 @@ | ||||
|      } | ||||
|   | ||||
|      get overflowing() { | ||||
| @@ -187,7 +191,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|        return this.hasAttribute("overflow"); | ||||
|      } | ||||
|   | ||||
| @@ -1664,26 +1694,54 @@ | ||||
| @@ -1659,26 +1689,54 @@ | ||||
|        if (this.#allTabs) { | ||||
|          return this.#allTabs; | ||||
|        } | ||||
| @@ -249,7 +253,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|      } | ||||
|   | ||||
|      /** | ||||
| @@ -1750,32 +1808,27 @@ | ||||
| @@ -1745,32 +1803,27 @@ | ||||
|   | ||||
|        let elementIndex = 0; | ||||
|   | ||||
| @@ -291,7 +295,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|   | ||||
|        return this.#focusableItems; | ||||
|      } | ||||
| @@ -1783,6 +1836,7 @@ | ||||
| @@ -1778,6 +1831,7 @@ | ||||
|      _invalidateCachedTabs() { | ||||
|        this.#allTabs = null; | ||||
|        this._invalidateCachedVisibleTabs(); | ||||
| @@ -299,7 +303,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|      } | ||||
|   | ||||
|      _invalidateCachedVisibleTabs() { | ||||
| @@ -1798,8 +1852,8 @@ | ||||
| @@ -1793,8 +1847,8 @@ | ||||
|      #isContainerVerticalPinnedGrid(tab) { | ||||
|        return ( | ||||
|          this.verticalMode && | ||||
| @@ -310,7 +314,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|          !this.expandOnHover | ||||
|        ); | ||||
|      } | ||||
| @@ -1815,7 +1869,7 @@ | ||||
| @@ -1810,7 +1864,7 @@ | ||||
|   | ||||
|        if (node == null) { | ||||
|          // We have a container for non-tab elements at the end of the scrollbox. | ||||
| @@ -319,7 +323,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|        } | ||||
|   | ||||
|        node.before(tab); | ||||
| @@ -1910,7 +1964,7 @@ | ||||
| @@ -1905,7 +1959,7 @@ | ||||
|            // There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and | ||||
|            // for when the tab strip is overflowed (which is shared by vertical and horizontal tabs); | ||||
|            // Attach the long click popup to all of them. | ||||
| @@ -328,7 +332,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|            const newTab2 = this.newTabButton; | ||||
|            const newTabVertical = document.getElementById( | ||||
|              "vertical-tabs-newtab-button" | ||||
| @@ -2005,10 +2059,12 @@ | ||||
| @@ -2000,10 +2054,12 @@ | ||||
|   | ||||
|      _handleTabSelect(aInstant) { | ||||
|        let selectedTab = this.selectedItem; | ||||
| @@ -341,7 +345,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|        selectedTab._notselectedsinceload = false; | ||||
|      } | ||||
|   | ||||
| @@ -2152,6 +2208,16 @@ | ||||
| @@ -2140,6 +2196,16 @@ | ||||
|        when the tab is first selected to be dragged. | ||||
|      */ | ||||
|      #updateTabStylesOnDrag(tab) { | ||||
| @@ -358,7 +362,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|        let isPinned = tab.pinned; | ||||
|        let numPinned = gBrowser.pinnedTabCount; | ||||
|        let allTabs = this.ariaFocusableItems; | ||||
| @@ -2385,7 +2451,7 @@ | ||||
| @@ -2398,7 +2464,7 @@ | ||||
|          return; | ||||
|        } | ||||
|   | ||||
| @@ -367,7 +371,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|   | ||||
|        let directionX = screenX > dragData.animLastScreenX; | ||||
|        let directionY = screenY > dragData.animLastScreenY; | ||||
| @@ -2394,6 +2460,8 @@ | ||||
| @@ -2407,6 +2473,8 @@ | ||||
|   | ||||
|        let { width: tabWidth, height: tabHeight } = | ||||
|          draggedTab.getBoundingClientRect(); | ||||
| @@ -376,7 +380,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|        let shiftSizeX = tabWidth * movingTabs.length; | ||||
|        let shiftSizeY = tabHeight; | ||||
|        dragData.tabWidth = tabWidth; | ||||
| @@ -2430,8 +2498,8 @@ | ||||
| @@ -2443,8 +2511,8 @@ | ||||
|        let lastBoundX = | ||||
|          lastTabInRow.screenX + | ||||
|          lastTabInRow.getBoundingClientRect().width - | ||||
| @@ -387,7 +391,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|        translateX = Math.min(Math.max(translateX, firstBoundX), lastBoundX); | ||||
|        translateY = Math.min(Math.max(translateY, firstBoundY), lastBoundY); | ||||
|   | ||||
| @@ -2547,7 +2615,7 @@ | ||||
| @@ -2560,7 +2628,7 @@ | ||||
|        } | ||||
|   | ||||
|        dragData.animDropElementIndex = newIndex; | ||||
| @@ -396,7 +400,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|        dragData.dropBefore = newIndex < tabs.length; | ||||
|   | ||||
|        // Shift background tabs to leave a gap where the dragged tab | ||||
| @@ -2580,13 +2648,18 @@ | ||||
| @@ -2593,13 +2661,18 @@ | ||||
|   | ||||
|        this.#clearDragOverCreateGroupTimer(); | ||||
|   | ||||
| @@ -419,7 +423,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|   | ||||
|        if (this.#rtlMode) { | ||||
|          tabs.reverse(); | ||||
| @@ -2597,7 +2670,7 @@ | ||||
| @@ -2610,7 +2683,7 @@ | ||||
|        let screenAxis = this.verticalMode ? "screenY" : "screenX"; | ||||
|        let size = this.verticalMode ? "height" : "width"; | ||||
|        let translateAxis = this.verticalMode ? "translateY" : "translateX"; | ||||
| @@ -428,7 +432,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|        let translateX = event.screenX - dragData.screenX; | ||||
|        let translateY = event.screenY - dragData.screenY; | ||||
|   | ||||
| @@ -2607,10 +2680,16 @@ | ||||
| @@ -2620,10 +2693,16 @@ | ||||
|        dragData.translateY = translateY; | ||||
|   | ||||
|        // Move the dragged tab based on the mouse position. | ||||
| @@ -447,7 +451,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|        let endEdge = ele => ele[screenAxis] + bounds(ele)[size]; | ||||
|        let lastMovingTabScreen = endEdge(lastMovingTab); | ||||
|        let firstMovingTabScreen = firstMovingTab[screenAxis]; | ||||
| @@ -2619,6 +2698,7 @@ | ||||
| @@ -2632,6 +2711,7 @@ | ||||
|        // Constrain the range over which the moving tabs can move between the first and last tab | ||||
|        let firstBound = firstTab[screenAxis] - firstMovingTabScreen; | ||||
|        let lastBound = endEdge(lastTab) - lastMovingTabScreen; | ||||
| @@ -455,7 +459,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|   | ||||
|        // Center the tab under the cursor if the tab is not under the cursor while dragging | ||||
|        if ( | ||||
| @@ -2636,6 +2716,9 @@ | ||||
| @@ -2649,6 +2729,9 @@ | ||||
|            // Shift the `.tab-group-label-container` to shift the label element. | ||||
|            item = item.parentElement; | ||||
|          } | ||||
| @@ -465,7 +469,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|          item.style.transform = `${translateAxis}(${translate}px)`; | ||||
|        } | ||||
|   | ||||
| @@ -2773,6 +2856,9 @@ | ||||
| @@ -2786,6 +2869,9 @@ | ||||
|              break; | ||||
|            } | ||||
|            let element = tabs[mid]; | ||||
| @@ -475,7 +479,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|            let elementForSize = isTabGroupLabel(element) | ||||
|              ? element.parentElement | ||||
|              : element; | ||||
| @@ -2792,6 +2878,8 @@ | ||||
| @@ -2805,6 +2891,8 @@ | ||||
|        }; | ||||
|   | ||||
|        let dropElement = getOverlappedElement(); | ||||
| @@ -484,7 +488,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|   | ||||
|        let newDropElementIndex; | ||||
|        if (dropElement) { | ||||
| @@ -2856,7 +2944,10 @@ | ||||
| @@ -2869,7 +2957,10 @@ | ||||
|        let shouldCreateGroupOnDrop; | ||||
|        let dropBefore; | ||||
|        if (dropElement) { | ||||
| @@ -496,7 +500,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|            ? dropElement.parentElement | ||||
|            : dropElement; | ||||
|   | ||||
| @@ -2876,7 +2967,7 @@ | ||||
| @@ -2889,7 +2980,7 @@ | ||||
|            ? Services.prefs.getIntPref( | ||||
|                "browser.tabs.dragDrop.moveOverThresholdPercent" | ||||
|              ) / 100 | ||||
| @@ -505,7 +509,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|          moveOverThreshold = Math.min(1, Math.max(0, moveOverThreshold)); | ||||
|          let shouldMoveOver = overlapPercent > moveOverThreshold; | ||||
|          if (logicalForward && shouldMoveOver) { | ||||
| @@ -2908,44 +2999,21 @@ | ||||
| @@ -2921,44 +3012,21 @@ | ||||
|   | ||||
|          // If dragging a group over another group, don't make it look like it is | ||||
|          // possible to drop the dragged group inside the other group. | ||||
| @@ -555,7 +559,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|          // When dragging tab(s) over an ungrouped tab, signal to the user | ||||
|          // that dropping the tab(s) will create a new tab group. | ||||
|          shouldCreateGroupOnDrop = | ||||
| @@ -2955,12 +3023,6 @@ | ||||
| @@ -2968,12 +3036,6 @@ | ||||
|            overlapPercent > dragOverGroupingThreshold; | ||||
|   | ||||
|          if (shouldCreateGroupOnDrop) { | ||||
| @@ -568,7 +572,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|          } else { | ||||
|            this.removeAttribute("movingtab-createGroup"); | ||||
|            document | ||||
| @@ -2987,19 +3049,14 @@ | ||||
| @@ -3000,19 +3062,14 @@ | ||||
|              dropElement = dropElementGroup; | ||||
|              colorCode = undefined; | ||||
|            } else if (isTabGroupLabel(dropElement)) { | ||||
| @@ -596,7 +600,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|            } | ||||
|            this.#setDragOverGroupColor(colorCode); | ||||
|            this.toggleAttribute("movingtab-ungroup", !colorCode); | ||||
| @@ -3017,19 +3074,28 @@ | ||||
| @@ -3030,19 +3087,28 @@ | ||||
|        dragData.dropElement = dropElement; | ||||
|        dragData.dropBefore = dropBefore; | ||||
|        dragData.animDropElementIndex = newDropElementIndex; | ||||
| @@ -627,7 +631,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|          } | ||||
|          item.style.transform = transform; | ||||
|        } | ||||
| @@ -3082,12 +3148,14 @@ | ||||
| @@ -3095,12 +3161,14 @@ | ||||
|        ); | ||||
|      } | ||||
|   | ||||
| @@ -644,7 +648,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|   | ||||
|        for (let item of this.ariaFocusableItems) { | ||||
|          if (isTabGroupLabel(item)) { | ||||
| @@ -3095,6 +3163,18 @@ | ||||
| @@ -3108,6 +3176,18 @@ | ||||
|            item = item.parentElement; | ||||
|          } | ||||
|          item.style.transform = ""; | ||||
| @@ -663,7 +667,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|          item.removeAttribute("dragover-createGroup"); | ||||
|        } | ||||
|        this.removeAttribute("movingtab-createGroup"); | ||||
| @@ -3116,16 +3196,15 @@ | ||||
| @@ -3129,16 +3209,15 @@ | ||||
|          tab.style.left = ""; | ||||
|          tab.style.top = ""; | ||||
|          tab.style.maxWidth = ""; | ||||
| @@ -682,7 +686,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|        } | ||||
|        let periphery = draggedTabDocument.getElementById( | ||||
|          "tabbrowser-arrowscrollbox-periphery" | ||||
| @@ -3198,7 +3277,7 @@ | ||||
| @@ -3211,7 +3290,7 @@ | ||||
|          let postTransitionCleanup = () => { | ||||
|            movingTab._moveTogetherSelectedTabsData.animate = false; | ||||
|          }; | ||||
| @@ -691,7 +695,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|            postTransitionCleanup(); | ||||
|          } else { | ||||
|            let onTransitionEnd = transitionendEvent => { | ||||
| @@ -3371,7 +3450,7 @@ | ||||
| @@ -3384,7 +3463,7 @@ | ||||
|      } | ||||
|   | ||||
|      _notifyBackgroundTab(aTab) { | ||||
| @@ -700,7 +704,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|          return; | ||||
|        } | ||||
|   | ||||
| @@ -3480,7 +3559,10 @@ | ||||
| @@ -3493,7 +3572,10 @@ | ||||
|      #getDragTarget(event, { ignoreSides = false } = {}) { | ||||
|        let { target } = event; | ||||
|        while (target) { | ||||
| @@ -712,7 +716,7 @@ index e47f735e4e4563c9b7537944628418d1478c068d..b6d52ef3179d66ecd7f06fd61a6bca6d | ||||
|            break; | ||||
|          } | ||||
|          target = target.parentNode; | ||||
| @@ -3497,6 +3579,9 @@ | ||||
| @@ -3510,6 +3592,9 @@ | ||||
|            return null; | ||||
|          } | ||||
|        } | ||||
|   | ||||
| @@ -1,8 +1,24 @@ | ||||
| diff --git a/toolkit/content/xul.css b/toolkit/content/xul.css | ||||
| index ba7642c9264ac201fec7be1bd492bc778bb147a2..9e89735e8a0886183ae7ecf98e6ce08142bf3bbc 100644 | ||||
| index ba7642c9264ac201fec7be1bd492bc778bb147a2..f0e02bcc000f106e186b3123ada96b4cbf83b40f 100644 | ||||
| --- a/toolkit/content/xul.css | ||||
| +++ b/toolkit/content/xul.css | ||||
| @@ -456,7 +456,8 @@ deck > *|*:not(:-moz-native-anonymous) { | ||||
| @@ -401,6 +401,15 @@ tooltip { | ||||
|        border-radius: 4px; | ||||
|      } | ||||
|    } | ||||
| + | ||||
| +  border-radius: 16px !important; | ||||
| +  border-top-left-radius: 4px !important; | ||||
| +  border: 1px solid rgba(225, 225, 225, 0.15) !important; | ||||
| +  padding: 5px 9px 6px 9px !important; | ||||
| +  font-weight: 600 !important; | ||||
| +  background: color-mix(in srgb, var(--zen-primary-color, white), black 80%) !important; | ||||
| +  color: #f3f3f3 !important; | ||||
| +  font-size: smaller !important; | ||||
|  } | ||||
|   | ||||
|  /******** tree ******/ | ||||
| @@ -456,7 +465,8 @@ deck > *|*:not(:-moz-native-anonymous) { | ||||
|  } | ||||
|   | ||||
|  tabpanels > .deck-selected, | ||||
|   | ||||
| @@ -228,3 +228,19 @@ body > #confetti { | ||||
|     linear-gradient(#fff 0 0); | ||||
|   mask-composite: exclude; | ||||
| } | ||||
|  | ||||
| /* Status panel */ | ||||
|  | ||||
| #statuspanel { | ||||
|   padding: 4px 3px; | ||||
|  | ||||
|   & > #statuspanel-label { | ||||
|     border-radius: 16px !important; | ||||
|     border: 1px solid rgba(225, 225, 225, 0.15) !important; | ||||
|     padding: 5px 9px 6px 9px !important; | ||||
|     font-weight: 600 !important; | ||||
|     background: color-mix(in srgb, var(--zen-primary-color), black 80%) !important; | ||||
|     color: #f3f3f3 !important; | ||||
|     font-size: smaller !important; | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -139,6 +139,9 @@ | ||||
|     } | ||||
|  | ||||
|     rename() { | ||||
|       if (!document.documentElement.hasAttribute('zen-sidebar-expanded')) { | ||||
|         return; | ||||
|       } | ||||
|       gZenVerticalTabsManager.renameTabStart({ | ||||
|         target: this.labelElement, | ||||
|         explicit: true, | ||||
| @@ -146,6 +149,12 @@ | ||||
|     } | ||||
|  | ||||
|     createSubfolder() { | ||||
|       // We need to expand all parent folders | ||||
|       let currentFolder = this; | ||||
|       do { | ||||
|         currentFolder.collapsed = false; | ||||
|         currentFolder = currentFolder.group; | ||||
|       } while (currentFolder); | ||||
|       gZenFolders.createFolder([], { | ||||
|         renameFolder: !gZenUIManager.testingEnabled, | ||||
|         label: 'Subfolder', | ||||
|   | ||||
| @@ -74,6 +74,11 @@ | ||||
|           folder = target.group; | ||||
|         } else if (gBrowser.isTabGroupLabel(target.parentElement)) { | ||||
|           folder = target.parentElement.group; | ||||
|         } else if ( | ||||
|           target.parentElement?.isZenFolder && | ||||
|           target?.classList.contains('tab-group-label-container') | ||||
|         ) { | ||||
|           folder = target.parentElement; | ||||
|         } | ||||
|  | ||||
|         // We only want to rename zen-folders as firefox groups don't work well with this | ||||
| @@ -226,7 +231,7 @@ | ||||
|       } | ||||
|  | ||||
|       if (group.collapsed && !this._sessionRestoring) { | ||||
|         group.collapsed = false; | ||||
|         group.collapsed = group.hasAttribute('has-active'); | ||||
|       } | ||||
|     } | ||||
|  | ||||
| @@ -237,7 +242,7 @@ | ||||
|     } | ||||
|  | ||||
|     async on_TabSelect(event) { | ||||
|       const tab = event.target; | ||||
|       const tab = gZenGlanceManager.getTabOrGlanceParent(event.target); | ||||
|       let group = tab?.group; | ||||
|       if (group?.hasAttribute('split-view-group')) group = group?.group; | ||||
|       if (!group?.isZenFolder) { | ||||
| @@ -265,6 +270,7 @@ | ||||
|         gBrowser.pinTab(tab); | ||||
|         group.addTabs([tab]); | ||||
|       } else { | ||||
|         tab._ignoreUngrouped = true; | ||||
|         // Otherwise, we must move it to the first tab since it was added in an unpinned state | ||||
|         gZenWorkspaces._emptyTab.after(tab); | ||||
|         gBrowser.tabContainer._invalidateCachedTabs(); | ||||
| @@ -274,6 +280,10 @@ | ||||
|     on_TabUngrouped(event) { | ||||
|       const tab = event.detail; | ||||
|       const group = event.target; | ||||
|       if (tab._ignoreUngrouped) { | ||||
|         delete tab._ignoreUngrouped; | ||||
|         return; | ||||
|       } | ||||
|       tab.removeAttribute('folder-active'); | ||||
|       if (group.hasAttribute('split-view-group') && tab.hasAttribute('had-zen-pinned-changed')) { | ||||
|         tab.setAttribute('zen-pinned-changed', true); | ||||
| @@ -286,7 +296,7 @@ | ||||
|           if (!folder.activeTabs.length) { | ||||
|             folder.removeAttribute('has-active'); | ||||
|           } | ||||
|           this.collapseVisibleTab(folder); | ||||
|           this.collapseVisibleTab(folder, true); | ||||
|           this.updateFolderIcon(folder, 'close', false); | ||||
|         } | ||||
|       } | ||||
| @@ -613,7 +623,23 @@ | ||||
|                 let activeGroup = folders.get(group?.id); | ||||
|                 // If group has active tabs, we need to update the indentation | ||||
|                 if (activeGroup) { | ||||
|                   this.on_TabGroupCollapse({ target: activeGroup }); | ||||
|                   const activeGroupStart = activeGroup.querySelector('.zen-tab-group-start'); | ||||
|                   const selectedTabs = activeGroup.activeTabs; | ||||
|                   if (selectedTabs.length > 0) { | ||||
|                     const selectedItem = selectedTabs[0]; | ||||
|                     const isSplitView = selectedItem.group?.hasAttribute('split-view-group'); | ||||
|                     const selectedContainer = isSplitView ? selectedItem.group : selectedItem; | ||||
|  | ||||
|                     const heightUntilSelected = | ||||
|                       window.windowUtils.getBoundsWithoutFlushing(selectedContainer).top - | ||||
|                       window.windowUtils.getBoundsWithoutFlushing(activeGroupStart).bottom; | ||||
|  | ||||
|                     const adjustedHeight = isSplitView | ||||
|                       ? heightUntilSelected - 2 | ||||
|                       : heightUntilSelected; | ||||
|                     activeGroupStart.style.marginTop = | ||||
|                       -(adjustedHeight + 4 * (selectedTabs.length === 0 ? 1 : 0)) + 'px'; | ||||
|                   } | ||||
|                   this.setFolderIndentation([tab], activeGroup, /* for collapse = */ true); | ||||
|                 } else { | ||||
|                   // Since the folder is now expanded, we should remove active attribute | ||||
| @@ -740,9 +766,11 @@ | ||||
|       const workspaceElement = gZenWorkspaces.workspaceElement(workspaceId); | ||||
|       const pinnedTabsContainer = workspaceElement.pinnedTabsContainer; | ||||
|       pinnedTabsContainer.insertBefore(folder, pinnedTabsContainer.lastChild); | ||||
|       folder.setAttribute('zen-workspace-id', workspaceId); | ||||
|       for (const tab of folder.tabs) { | ||||
|         tab.setAttribute('zen-workspace-id', workspaceId); | ||||
|         // This sets the ID for the current folder and any sub-folder | ||||
|         // we may encounter | ||||
|         tab.group.setAttribute('zen-workspace-id', workspaceId); | ||||
|         gBrowser.TabStateFlusher.flush(tab.linkedBrowser); | ||||
|         if (gZenWorkspaces._lastSelectedWorkspaceTabs[workspaceId] === tab) { | ||||
|           // This tab is no longer the last selected tab in the previous workspace because it's being moved to a new workspace | ||||
| @@ -750,7 +778,9 @@ | ||||
|         } | ||||
|       } | ||||
|       folder.dispatchEvent(new CustomEvent('ZenFolderChangedWorkspace', { bubbles: true })); | ||||
|       gZenWorkspaces.changeWorkspaceWithID(workspaceId); | ||||
|       gZenWorkspaces.changeWorkspaceWithID(workspaceId).then(() => { | ||||
|         gBrowser.moveTabTo(folder, { elementIndex: 0, forceUngrouped: true }); | ||||
|       }); | ||||
|     } | ||||
|  | ||||
|     canDropElement(element, targetElement) { | ||||
| @@ -1029,9 +1059,7 @@ | ||||
|           // We don't need to do anything if the URL is invalid. e.g. about:blank | ||||
|         } | ||||
|         let tabLabel = tab.label || ''; | ||||
|         let iconURL = | ||||
|           gBrowser.getIcon(tab) || | ||||
|           "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100'%3E%3C/svg%3E"; | ||||
|         let iconURL = gBrowser.getIcon(tab) || PlacesUtils.favicons.defaultFavicon; | ||||
|  | ||||
|         icon.src = iconURL; | ||||
|  | ||||
| @@ -1285,6 +1313,11 @@ | ||||
|         } | ||||
|       } | ||||
|  | ||||
|       if (group.activeTabs.length === 0) { | ||||
|         group.removeAttribute('has-active'); | ||||
|         this.updateFolderIcon(group, 'close', false); | ||||
|       } | ||||
|  | ||||
|       this.on_TabGroupExpand({ target: group, forExpandVisible: true }); | ||||
|  | ||||
|       gBrowser.tabContainer._invalidateCachedVisibleTabs(); | ||||
|   | ||||
| @@ -19,7 +19,9 @@ tab-group[split-view-group] { | ||||
|     transparent 40% | ||||
|   ); | ||||
|  | ||||
|   margin-inline-start: var(--zen-folder-indent) !important; | ||||
|   :root[zen-sidebar-expanded='true'] & { | ||||
|     margin-inline-start: var(--zen-folder-indent) !important; | ||||
|   } | ||||
|  | ||||
|   & .tab-group-label { | ||||
|     height: 100% !important; | ||||
| @@ -194,7 +196,9 @@ zen-folder { | ||||
|   -moz-window-dragging: no-drag; | ||||
|   transition: var(--zen-tabbox-element-indent-transition); | ||||
|  | ||||
|   margin-inline-start: var(--zen-folder-indent) !important; | ||||
|   :root[zen-sidebar-expanded='true'] & { | ||||
|     margin-inline-start: var(--zen-folder-indent) !important; | ||||
|   } | ||||
|  | ||||
|   &[selected] > .tab-group-label-container::before { | ||||
|     background-color: color-mix(in srgb, var(--zen-colors-border) 60%, transparent); | ||||
| @@ -243,8 +247,12 @@ zen-folder { | ||||
|     padding-block-end: 0 !important; | ||||
|     margin: 0 !important; | ||||
|     height: calc(var(--tab-block-margin) * 2 + var(--tab-min-height)); | ||||
|     padding-inline-start: var(--tab-group-label-padding); | ||||
|     padding-inline-end: calc(var(--tab-group-label-padding) * 2); | ||||
|     padding-inline: var(--tab-group-label-padding); | ||||
|  | ||||
|     :root[zen-sidebar-expanded='true'] & { | ||||
|       padding-inline-end: calc(var(--tab-group-label-padding) * 2); | ||||
|     } | ||||
|  | ||||
|     align-items: center; | ||||
|     font-weight: 600; | ||||
|  | ||||
| @@ -308,7 +316,7 @@ zen-folder { | ||||
|  | ||||
|     & > label, | ||||
|     & > #tab-label-input { | ||||
|       padding: 0 0 0 30px !important; | ||||
|       padding: 0 0 0 32px !important; | ||||
|       width: 100%; | ||||
|     } | ||||
|  | ||||
| @@ -472,3 +480,9 @@ zen-folder { | ||||
| .tab-group-overflow-count-container { | ||||
|   display: none !important; | ||||
| } | ||||
|  | ||||
| :root:not([zen-sidebar-expanded]) { | ||||
|   & #context_zenFolderRename { | ||||
|     display: none !important; | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -620,6 +620,11 @@ | ||||
|       this.animatingFullOpen = true; | ||||
|       this.#currentTab.setAttribute('zen-dont-split-glance', true); | ||||
|  | ||||
|       const isZenFolder = this.#currentParentTab?.group?.isZenFolder; | ||||
|       if (Services.prefs.getBoolPref('zen.folders.owned-tabs-in-folder') && isZenFolder) { | ||||
|         gBrowser.pinTab(this.#currentTab); | ||||
|       } | ||||
|  | ||||
|       gBrowser.moveTabAfter(this.#currentTab, this.#currentParentTab); | ||||
|  | ||||
|       const browserRect = window.windowUtils.getBoundsWithoutFlushing(this.browserWrapper); | ||||
| @@ -710,6 +715,10 @@ | ||||
|         const currentTab = this.#currentTab; | ||||
|         const currentParentTab = this.#currentParentTab; | ||||
|  | ||||
|         const isZenFolder = currentParentTab?.group?.isZenFolder; | ||||
|         if (Services.prefs.getBoolPref('zen.folders.owned-tabs-in-folder') && isZenFolder) { | ||||
|           gBrowser.pinTab(currentTab); | ||||
|         } | ||||
|         await this.fullyOpenGlance({ forSplit: true }); | ||||
|         gZenViewSplitter.splitTabs([currentTab, currentParentTab], 'vsep', 1); | ||||
|         const browserContainer = currentTab.linkedBrowser?.closest('.browserSidebarContainer'); | ||||
|   | ||||
| @@ -190,6 +190,7 @@ | ||||
|     async #initializePinnedTabs(init = false) { | ||||
|       const pins = this._pinsCache; | ||||
|       if (!pins?.length || !init) { | ||||
|         this.#hasInitializedPins = true; | ||||
|         return; | ||||
|       } | ||||
|  | ||||
| @@ -372,12 +373,12 @@ | ||||
|         } | ||||
|       } | ||||
|  | ||||
|       gBrowser._updateTabBarForPinnedTabs(); | ||||
|       gZenUIManager.updateTabsToolbar(); | ||||
|  | ||||
|       setTimeout(() => { | ||||
|         this.#hasInitializedPins = true; | ||||
|       }, 0); | ||||
|  | ||||
|       gBrowser._updateTabBarForPinnedTabs(); | ||||
|       gZenUIManager.updateTabsToolbar(); | ||||
|     } | ||||
|  | ||||
|     _onPinnedTabEvent(action, event) { | ||||
| @@ -445,6 +446,18 @@ | ||||
|         group._pPos | ||||
|       ); | ||||
|       group.setAttribute('zen-pin-id', id); | ||||
|       for (const tab of group.tabs) { | ||||
|         // Only add it if the tab is directly under the group | ||||
|         if ( | ||||
|           tab.pinned && | ||||
|           tab.hasAttribute('zen-pin-id') && | ||||
|           tab.group === group && | ||||
|           this.#hasInitializedPins | ||||
|         ) { | ||||
|           const tabPinId = tab.getAttribute('zen-pin-id'); | ||||
|           await ZenPinnedTabsStorage.addTabToGroup(tabPinId, id, /* position */ tab._pPos); | ||||
|         } | ||||
|       } | ||||
|       await this.refreshPinnedTabs(); | ||||
|     } | ||||
|  | ||||
| @@ -726,6 +739,10 @@ | ||||
|       const existingPin = this._pinsCache.find((p) => p.uuid === pin.uuid); | ||||
|       if (existingPin) { | ||||
|         Object.assign(existingPin, pin); | ||||
|       } else { | ||||
|         // We shouldn't need it, but just in case there's | ||||
|         // a race condition while making new pinned tabs. | ||||
|         this._pinsCache.push(pin); | ||||
|       } | ||||
|       await ZenPinnedTabsStorage.savePin(pin, notifyObservers); | ||||
|     } | ||||
|   | ||||
| @@ -295,7 +295,9 @@ | ||||
|         var(--zen-tabbox-element-indent-transition); | ||||
|     } | ||||
|  | ||||
|     margin-inline-start: var(--zen-folder-indent) !important; | ||||
|     :root[zen-sidebar-expanded='true'] & { | ||||
|       margin-inline-start: var(--zen-folder-indent) !important; | ||||
|     } | ||||
|  | ||||
|     /* Hide specific empty tabs (likely placeholders) */ | ||||
|     &[zen-empty-tab] { | ||||
|   | ||||
| @@ -137,7 +137,7 @@ | ||||
|       document.getElementById('zen-welcome-pages').style.display = 'flex'; | ||||
|       document.getElementById('zen-welcome-start').remove(); | ||||
|       window.maximize(); | ||||
|       animate('#zen-welcome-pages', { opacity: [0, 1] }, { delay: 0.2, duration: 0.2 }); | ||||
|       animate('#zen-welcome-pages', { opacity: [0, 1] }, { delay: 0.2, duration: 0.1 }); | ||||
|     } | ||||
|  | ||||
|     async fadeInTitles(page) { | ||||
| @@ -238,7 +238,7 @@ | ||||
|           delay: getMotion().stagger(0.05, { startDelay: 0.3 }), | ||||
|           type: 'spring', | ||||
|           bounce: 0, | ||||
|           duration: 0.2, | ||||
|           duration: 0.1, | ||||
|         } | ||||
|       ); | ||||
|     } | ||||
| @@ -271,7 +271,7 @@ | ||||
|       await animate('#zen-welcome-page-content', { x: [0, '100%'] }, { bounce: 0 }); | ||||
|       document.getElementById('zen-welcome-page-content').remove(); | ||||
|       await this.animHeart(); | ||||
|       this._pinRemainingTabs(); | ||||
|       await this.#pinRemainingTabs(); | ||||
|       await animate('#zen-welcome-pages', { opacity: [1, 0] }); | ||||
|       document.getElementById('zen-welcome').remove(); | ||||
|       document.documentElement.removeAttribute('zen-welcome-stage'); | ||||
| @@ -288,10 +288,13 @@ | ||||
|       gZenUIManager.showToast('zen-welcome-finished'); | ||||
|     } | ||||
|  | ||||
|     _pinRemainingTabs() { | ||||
|     async #pinRemainingTabs() { | ||||
|       for (const tab of _tabsToPin) { | ||||
|         tab.setAttribute('zen-workspace-id', gZenWorkspaces.activeWorkspace); | ||||
|         gBrowser.pinTab(tab); | ||||
|         await new Promise((resolve) => { | ||||
|           tab.addEventListener('ZenPinnedTabCreated', resolve, { once: true }); | ||||
|         }); | ||||
|       } | ||||
|       for (const tab of _tabsToPinEssentials) { | ||||
|         tab.removeAttribute('pending'); // Make it appear loaded | ||||
|   | ||||
| @@ -478,7 +478,7 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature { | ||||
|     return this.getEssentialsSection(currentWorkspace?.containerTabId); | ||||
|   } | ||||
|  | ||||
|   async _createWorkspaceTabsSection(workspace, tabs) { | ||||
|   async _createWorkspaceTabsSection(workspace, tabs = []) { | ||||
|     const workspaceWrapper = document.createXULElement('zen-workspace'); | ||||
|     const container = document.getElementById('tabbrowser-arrowscrollbox'); | ||||
|     workspaceWrapper.id = workspace.uuid; | ||||
| @@ -1354,6 +1354,12 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature { | ||||
|           detail: { activeIndex: browser.gZenWorkspaces.activeWorkspace }, | ||||
|         }) | ||||
|       ); | ||||
|       for (const workspace of workspaces.workspaces) { | ||||
|         // Add workspace elements if they dont exist on other windows | ||||
|         if (!browser.gZenWorkspaces.workspaceElement(workspace.uuid)) { | ||||
|           await browser.gZenWorkspaces._createWorkspaceTabsSection(workspace); | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     await browser.gZenWorkspaces.workspaceBookmarks(); | ||||
|     if (!ignoreStrip) { | ||||
| @@ -1499,7 +1505,7 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature { | ||||
|     return true; | ||||
|   } | ||||
|  | ||||
|   _prepareNewWorkspace(window) { | ||||
|   #prepareNewWorkspace(window) { | ||||
|     document.documentElement.setAttribute('zen-workspace-id', window.uuid); | ||||
|     let tabCount = 0; | ||||
|     for (let tab of gBrowser.tabs) { | ||||
| @@ -1535,7 +1541,7 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature { | ||||
|  | ||||
|   async changeWorkspaceWithID(workspaceID, ...args) { | ||||
|     const workspace = this.getWorkspaceFromId(workspaceID); | ||||
|     return await this.changeWorkspace(workspace, ...args); | ||||
|     await this.changeWorkspace(workspace, ...args); | ||||
|   } | ||||
|  | ||||
|   async changeWorkspace(workspace, ...args) { | ||||
| @@ -1618,7 +1624,7 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature { | ||||
|   } | ||||
|  | ||||
|   #fixTabPositions() { | ||||
|     gBrowser.tabContainer._invalidateCachedTabs(); | ||||
|     this.tabContainer._invalidateCachedTabs(); | ||||
|     // Fix tabs _tPos values relative to the actual order | ||||
|     const tabs = gBrowser.tabs; | ||||
|     const usedGroups = new Set(); | ||||
| @@ -2320,7 +2326,7 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature { | ||||
|       containerTabId, | ||||
|     }; | ||||
|     if (moveTabs) { | ||||
|       this._prepareNewWorkspace(workspace); | ||||
|       this.#prepareNewWorkspace(workspace); | ||||
|       await this._createWorkspaceTabsSection(workspace, tabs); | ||||
|       await this._organizeWorkspaceStripLocations(workspace); | ||||
|     } | ||||
|   | ||||
| @@ -5,8 +5,8 @@ | ||||
|   "binaryName": "zen", | ||||
|   "version": { | ||||
|     "product": "firefox", | ||||
|     "version": "142.0", | ||||
|     "candidate": "142.0" | ||||
|     "version": "142.0.1", | ||||
|     "candidate": "142.0.1" | ||||
|   }, | ||||
|   "buildOptions": { | ||||
|     "generateBranding": true | ||||
| @@ -19,7 +19,7 @@ | ||||
|       "brandShortName": "Zen", | ||||
|       "brandFullName": "Zen Browser", | ||||
|       "release": { | ||||
|         "displayVersion": "1.15b", | ||||
|         "displayVersion": "1.15.2b", | ||||
|         "github": { | ||||
|           "repo": "zen-browser/desktop" | ||||
|         }, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user