mirror of
https://github.com/zen-browser/desktop.git
synced 2026-02-07 20:37:14 +00:00
Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8f1cb88c11 | ||
|
|
3ef233a4c2 | ||
|
|
38fcd7e872 | ||
|
|
76f17c3a57 | ||
|
|
b5c2451525 | ||
|
|
ba2a854784 | ||
|
|
c9474cecc0 | ||
|
|
531be839c9 | ||
|
|
226486b973 | ||
|
|
5a137c95e5 | ||
|
|
e6154ceb99 | ||
|
|
1ea5d2fa6f | ||
|
|
97d5ebc21e | ||
|
|
442ec2a5d1 | ||
|
|
43ae672b44 | ||
|
|
84a54c9dbb | ||
|
|
6c53c3bf37 | ||
|
|
66686ab7f8 |
17
.github/workflows/sync-upstream.yml
vendored
17
.github/workflows/sync-upstream.yml
vendored
@@ -73,15 +73,13 @@ jobs:
|
|||||||
npm run sync
|
npm run sync
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Run formatter
|
- name: Install autopep8
|
||||||
if: steps.check-upstream-branch.outputs.branch_exists == 'false'
|
run: sudo apt install python3-autopep8
|
||||||
run: |
|
|
||||||
sudo apt install python3-autopep8
|
|
||||||
npm run pretty
|
|
||||||
|
|
||||||
- name: Check if any files changed
|
- name: Check if any files changed
|
||||||
id: git-check
|
id: git-check
|
||||||
run: |
|
run: |
|
||||||
|
npm run pretty
|
||||||
if [ -n "$(git status --porcelain)" ]; then
|
if [ -n "$(git status --porcelain)" ]; then
|
||||||
echo "files_changed=true" >> $GITHUB_OUTPUT
|
echo "files_changed=true" >> $GITHUB_OUTPUT
|
||||||
else
|
else
|
||||||
@@ -111,6 +109,15 @@ jobs:
|
|||||||
if: steps.git-check.outputs.files_changed == 'true'
|
if: steps.git-check.outputs.files_changed == 'true'
|
||||||
run: python3 scripts/import_external_tests.py || true
|
run: python3 scripts/import_external_tests.py || true
|
||||||
|
|
||||||
|
- name: Import external patches
|
||||||
|
if: steps.git-check.outputs.files_changed == 'true'
|
||||||
|
run: python3 scripts/import_external_patches.py || true
|
||||||
|
|
||||||
|
- name: Run formatter
|
||||||
|
if: steps.check-upstream-branch.outputs.branch_exists == 'false'
|
||||||
|
run: |
|
||||||
|
npm run pretty
|
||||||
|
|
||||||
- name: Create pull request
|
- name: Create pull request
|
||||||
uses: peter-evans/create-pull-request@v7
|
uses: peter-evans/create-pull-request@v7
|
||||||
if: steps.git-check.outputs.files_changed == 'true'
|
if: steps.git-check.outputs.files_changed == 'true'
|
||||||
|
|||||||
@@ -37,5 +37,6 @@ src/zen/common/ZenEmojis.mjs
|
|||||||
|
|
||||||
src/zen/split-view/zen-decks.css
|
src/zen/split-view/zen-decks.css
|
||||||
src/zen/workspaces/zen-workspaces.css
|
src/zen/workspaces/zen-workspaces.css
|
||||||
|
src/zen/common/styles/zen-toolbar.css
|
||||||
|
|
||||||
*.inc
|
*.inc
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ Zen is a firefox-based browser with the aim of pushing your productivity to a ne
|
|||||||
|
|
||||||
### Firefox Versions
|
### Firefox Versions
|
||||||
|
|
||||||
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `147.0.2`! 🚀
|
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `147.0.3`! 🚀
|
||||||
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 147.0.2`!
|
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 147.0.3`!
|
||||||
|
|
||||||
### Contributing
|
### Contributing
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
7712a9ac90683965f71be525fe2827467632715d
|
b1e00b74d3791a5a7bbd6ba3d32b69b60471e73b
|
||||||
@@ -9,9 +9,6 @@ ac_add_options --with-app-basename=Zen
|
|||||||
# Localization (Must be an absolute path)
|
# Localization (Must be an absolute path)
|
||||||
ac_add_options --with-l10n-base="${topsrcdir}/browser/locales"
|
ac_add_options --with-l10n-base="${topsrcdir}/browser/locales"
|
||||||
|
|
||||||
# See https://github.com/zen-browser/desktop/issues/11917 for future plans.
|
|
||||||
# We should be removing this at some point and start supporting XDG dirs.
|
|
||||||
ac_add_options --with-user-appdir=".${binName}"
|
|
||||||
export MOZ_APP_BASENAME=Zen
|
export MOZ_APP_BASENAME=Zen
|
||||||
export MOZ_BRANDING_DIRECTORY=${brandingDir}
|
export MOZ_BRANDING_DIRECTORY=${brandingDir}
|
||||||
export MOZ_OFFICIAL_BRANDING_DIRECTORY=${brandingDir}
|
export MOZ_OFFICIAL_BRANDING_DIRECTORY=${brandingDir}
|
||||||
@@ -85,6 +82,11 @@ if test "$ZEN_RELEASE"; then
|
|||||||
export MOZ_PACKAGE_JSSHELL=1
|
export MOZ_PACKAGE_JSSHELL=1
|
||||||
|
|
||||||
ac_add_options --disable-crashreporter
|
ac_add_options --disable-crashreporter
|
||||||
|
|
||||||
|
# Experimental flag, enabled only on nightly for Firefox.
|
||||||
|
# Should bring in some nice performance improvements,
|
||||||
|
# but may cause stability issues.
|
||||||
|
ac_add_options --enable-replace-malloc
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ac_add_options --enable-unverified-updates
|
ac_add_options --enable-unverified-updates
|
||||||
|
|||||||
@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = Commuta l'emmagatzematge
|
|||||||
zen-devtools-toggle-dom-shortcut = Commuta el DOM
|
zen-devtools-toggle-dom-shortcut = Commuta el DOM
|
||||||
zen-devtools-toggle-accessibility-shortcut = Commuta l'accessibilitat
|
zen-devtools-toggle-accessibility-shortcut = Commuta l'accessibilitat
|
||||||
zen-close-all-unpinned-tabs-shortcut = Tanca totes les pestanyes no fixades
|
zen-close-all-unpinned-tabs-shortcut = Tanca totes les pestanyes no fixades
|
||||||
zen-new-unsynced-window-shortcut = Nova finestra no sincronitzada
|
zen-new-unsynced-window-shortcut = Nova finestra en blanc
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
|||||||
zen-menubar-appearance-dark =
|
zen-menubar-appearance-dark =
|
||||||
.label = Fosca
|
.label = Fosca
|
||||||
zen-menubar-new-unsynced-window =
|
zen-menubar-new-unsynced-window =
|
||||||
.label = New Blank Window
|
.label = Nova finestra en blanc
|
||||||
|
|||||||
@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = Toglo Storio
|
|||||||
zen-devtools-toggle-dom-shortcut = Toglo DOM
|
zen-devtools-toggle-dom-shortcut = Toglo DOM
|
||||||
zen-devtools-toggle-accessibility-shortcut = Toglo Hygyrchedd
|
zen-devtools-toggle-accessibility-shortcut = Toglo Hygyrchedd
|
||||||
zen-close-all-unpinned-tabs-shortcut = Cau Pob Tab Heb ei Binio
|
zen-close-all-unpinned-tabs-shortcut = Cau Pob Tab Heb ei Binio
|
||||||
zen-new-unsynced-window-shortcut = Ffenestr Newydd Heb ei Chydweddu
|
zen-new-unsynced-window-shortcut = Ffenestr Wag Newydd
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
# 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/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
zen-panel-ui-current-profile-text = proffil cyfredol
|
zen-panel-ui-current-profile-text = y proffil cyfredol
|
||||||
unified-extensions-description = Mae ychwanegiadau'n cael ei defnyddio er mwyn ychwanegu fwy o weithrediadau i { -brand-short-name }.
|
unified-extensions-description = Mae estyniadau'n cael ei defnyddio er mwyn ychwanegu fwy o swyddogaeth i { -brand-short-name }.
|
||||||
tab-context-zen-reset-pinned-tab =
|
tab-context-zen-reset-pinned-tab =
|
||||||
.label = Ailosod Tab wedi'i Binio
|
.label = Ailosod Tab wedi'i Binio
|
||||||
.accesskey = A
|
.accesskey = A
|
||||||
@@ -109,7 +109,7 @@ zen-sidebar-notification-updated-tooltip =
|
|||||||
zen-sidebar-notification-restart-safe-mode-label = Rhywbeth wedi torri?
|
zen-sidebar-notification-restart-safe-mode-label = Rhywbeth wedi torri?
|
||||||
zen-sidebar-notification-restart-safe-mode-tooltip =
|
zen-sidebar-notification-restart-safe-mode-tooltip =
|
||||||
.title = Ailgychwyn yn y Modd Diogel
|
.title = Ailgychwyn yn y Modd Diogel
|
||||||
zen-window-sync-migration-dialog-title = Keep Your Windows in Sync
|
zen-window-sync-migration-dialog-title = Cadw Eich Ffenestr Wedi'u Cydweddu
|
||||||
zen-window-sync-migration-dialog-message = Zen now syncs windows on the same device, so changes in one window are reflected across the others instantly.
|
zen-window-sync-migration-dialog-message = Mae Zen bellach yn cydweddu ffenestri ar yr un ddyfais, felly mae newidiadau mewn un ffenestr yn cael eu dangos ar y lleill yn syth.
|
||||||
zen-window-sync-migration-dialog-learn-more = Learn More
|
zen-window-sync-migration-dialog-learn-more = Dysgu Rhagor
|
||||||
zen-window-sync-migration-dialog-accept = Got It
|
zen-window-sync-migration-dialog-accept = Iawn
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
|||||||
zen-menubar-appearance-dark =
|
zen-menubar-appearance-dark =
|
||||||
.label = Tywyll
|
.label = Tywyll
|
||||||
zen-menubar-new-unsynced-window =
|
zen-menubar-new-unsynced-window =
|
||||||
.label = New Blank Window
|
.label = Ffenestr Wag Newydd
|
||||||
|
|||||||
@@ -59,6 +59,9 @@ zen-tabs-select-recently-used-on-close =
|
|||||||
zen-tabs-close-on-back-with-no-history =
|
zen-tabs-close-on-back-with-no-history =
|
||||||
.label = Close tab and switch to its owner tab (or most recently used tab) when going back with no history
|
.label = Close tab and switch to its owner tab (or most recently used tab) when going back with no history
|
||||||
|
|
||||||
|
zen-settings-workspaces-sync-unpinned-tabs =
|
||||||
|
.label = Sync only pinned tabs in workspaces
|
||||||
|
|
||||||
zen-tabs-cycle-by-attribute =
|
zen-tabs-cycle-by-attribute =
|
||||||
.label = Ctrl+Tab cycles within Essential or Workspace tabs only
|
.label = Ctrl+Tab cycles within Essential or Workspace tabs only
|
||||||
zen-tabs-cycle-ignore-pending-tabs =
|
zen-tabs-cycle-ignore-pending-tabs =
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
|||||||
zen-menubar-appearance-dark =
|
zen-menubar-appearance-dark =
|
||||||
.label = Sombre
|
.label = Sombre
|
||||||
zen-menubar-new-unsynced-window =
|
zen-menubar-new-unsynced-window =
|
||||||
.label = New Blank Window
|
.label = Nouvelle fenêtre non synchronisée
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
|||||||
zen-menubar-appearance-dark =
|
zen-menubar-appearance-dark =
|
||||||
.label = Dorcha
|
.label = Dorcha
|
||||||
zen-menubar-new-unsynced-window =
|
zen-menubar-new-unsynced-window =
|
||||||
.label = New Blank Window
|
.label = Fuinneog Nua Bán
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
|||||||
zen-menubar-appearance-dark =
|
zen-menubar-appearance-dark =
|
||||||
.label = כהה
|
.label = כהה
|
||||||
zen-menubar-new-unsynced-window =
|
zen-menubar-new-unsynced-window =
|
||||||
.label = New Blank Window
|
.label = חלון ריק חדש
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
|||||||
zen-menubar-appearance-dark =
|
zen-menubar-appearance-dark =
|
||||||
.label = Sötét
|
.label = Sötét
|
||||||
zen-menubar-new-unsynced-window =
|
zen-menubar-new-unsynced-window =
|
||||||
.label = New Blank Window
|
.label = Új üres lap
|
||||||
|
|||||||
@@ -49,8 +49,8 @@ zen-tabs-close-on-back-with-no-history =
|
|||||||
zen-tabs-cycle-by-attribute =
|
zen-tabs-cycle-by-attribute =
|
||||||
.label = Ctrl+Tab berputar hanya dalam tab Esensial atau Ruang Kerja
|
.label = Ctrl+Tab berputar hanya dalam tab Esensial atau Ruang Kerja
|
||||||
zen-tabs-cycle-ignore-pending-tabs =
|
zen-tabs-cycle-ignore-pending-tabs =
|
||||||
.label = Ignore Pending tabs when cycling with Ctrl+Tab
|
.label = Lewati tab tak termuat saat beralih dengan Ctrl+Tab
|
||||||
zen-tabs-cycle-by-attribute-warning = Ctrl+Tab will cycle by recently used order, as it is enabled
|
zen-tabs-cycle-by-attribute-warning = Ctrl+Tab akan beralih berdasarkan urutan terakhir digunakan
|
||||||
zen-look-and-feel-compact-toolbar-themed =
|
zen-look-and-feel-compact-toolbar-themed =
|
||||||
.label = Gunakan latar belakang bertema untuk bilah atas dalam mode ringkas
|
.label = Gunakan latar belakang bertema untuk bilah atas dalam mode ringkas
|
||||||
zen-workspace-continue-where-left-off =
|
zen-workspace-continue-where-left-off =
|
||||||
@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = Ubah Penyimpanan
|
|||||||
zen-devtools-toggle-dom-shortcut = Ubah DOM
|
zen-devtools-toggle-dom-shortcut = Ubah DOM
|
||||||
zen-devtools-toggle-accessibility-shortcut = Ubah Aksesibilitas
|
zen-devtools-toggle-accessibility-shortcut = Ubah Aksesibilitas
|
||||||
zen-close-all-unpinned-tabs-shortcut = Tutup Semua Tab yang Tidak Disematkan
|
zen-close-all-unpinned-tabs-shortcut = Tutup Semua Tab yang Tidak Disematkan
|
||||||
zen-new-unsynced-window-shortcut = New Unsynced Window
|
zen-new-unsynced-window-shortcut = Jendela Kosong Baru
|
||||||
|
|||||||
@@ -60,8 +60,8 @@ zen-site-data-settings = Pengaturan
|
|||||||
zen-generic-manage = Kelola
|
zen-generic-manage = Kelola
|
||||||
zen-generic-more = Selengkapnya
|
zen-generic-more = Selengkapnya
|
||||||
zen-generic-next = Lanjut
|
zen-generic-next = Lanjut
|
||||||
zen-essentials-promo-label = Add to Essentials
|
zen-essentials-promo-label = Tambahkan ke Essentials
|
||||||
zen-essentials-promo-sublabel = Keep your favorite tabs just a click away
|
zen-essentials-promo-sublabel = Akses tab favorit Anda hanya dengan sekali klik
|
||||||
# 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
|
||||||
@@ -109,7 +109,7 @@ zen-sidebar-notification-updated-tooltip =
|
|||||||
zen-sidebar-notification-restart-safe-mode-label = Ada yang rusak?
|
zen-sidebar-notification-restart-safe-mode-label = Ada yang rusak?
|
||||||
zen-sidebar-notification-restart-safe-mode-tooltip =
|
zen-sidebar-notification-restart-safe-mode-tooltip =
|
||||||
.title = Mulai Ulang dalam Mode Aman
|
.title = Mulai Ulang dalam Mode Aman
|
||||||
zen-window-sync-migration-dialog-title = Keep Your Windows in Sync
|
zen-window-sync-migration-dialog-title = Jaga Jendela Anda Tetap Sinkron
|
||||||
zen-window-sync-migration-dialog-message = Zen now syncs windows on the same device, so changes in one window are reflected across the others instantly.
|
zen-window-sync-migration-dialog-message = Zen kini menyinkronkan jendela pada perangkat yang sama, sehingga perubahan di satu jendela akan langsung terlihat di jendela lainnya.
|
||||||
zen-window-sync-migration-dialog-learn-more = Learn More
|
zen-window-sync-migration-dialog-learn-more = Pelajari Lebih Lanjut
|
||||||
zen-window-sync-migration-dialog-accept = Got It
|
zen-window-sync-migration-dialog-accept = Oke!
|
||||||
|
|||||||
@@ -5,18 +5,18 @@
|
|||||||
zen-menubar-toggle-pinned-tabs =
|
zen-menubar-toggle-pinned-tabs =
|
||||||
.label =
|
.label =
|
||||||
{ $pinnedAreCollapsed ->
|
{ $pinnedAreCollapsed ->
|
||||||
[true] Expand Pinned Tabs
|
[true] Perluas Tab yang Disematkan
|
||||||
*[false] Collapse Pinned Tabs
|
*[false] Ciutkan Tab yang Disematkan
|
||||||
}
|
}
|
||||||
zen-menubar-appearance =
|
zen-menubar-appearance =
|
||||||
.label = Appearance
|
.label = Tampilan
|
||||||
zen-menubar-appearance-description =
|
zen-menubar-appearance-description =
|
||||||
.label = Websites will use:
|
.label = Situs web akan menggunakan:
|
||||||
zen-menubar-appearance-auto =
|
zen-menubar-appearance-auto =
|
||||||
.label = Automatic
|
.label = Otomatis
|
||||||
zen-menubar-appearance-light =
|
zen-menubar-appearance-light =
|
||||||
.label = Light
|
.label = Terang
|
||||||
zen-menubar-appearance-dark =
|
zen-menubar-appearance-dark =
|
||||||
.label = Dark
|
.label = Gelap
|
||||||
zen-menubar-new-unsynced-window =
|
zen-menubar-new-unsynced-window =
|
||||||
.label = New Blank Window
|
.label = Jendela Kosong Baru
|
||||||
|
|||||||
@@ -4,13 +4,13 @@
|
|||||||
|
|
||||||
zen-panel-ui-workspaces-text = Ruang Kerja Lainnya
|
zen-panel-ui-workspaces-text = Ruang Kerja Lainnya
|
||||||
zen-panel-ui-spaces-label =
|
zen-panel-ui-spaces-label =
|
||||||
.label = Spaces
|
.label = Ruang
|
||||||
zen-panel-ui-workspaces-create =
|
zen-panel-ui-workspaces-create =
|
||||||
.label = Buat Ruang
|
.label = Buat Ruang
|
||||||
zen-panel-ui-folder-create =
|
zen-panel-ui-folder-create =
|
||||||
.label = Buat Folder
|
.label = Buat Folder
|
||||||
zen-panel-ui-new-empty-split =
|
zen-panel-ui-new-empty-split =
|
||||||
.label = New Split
|
.label = Split Baru
|
||||||
zen-workspaces-panel-context-delete =
|
zen-workspaces-panel-context-delete =
|
||||||
.label = Hapus Ruang
|
.label = Hapus Ruang
|
||||||
.accesskey = D
|
.accesskey = D
|
||||||
@@ -66,6 +66,6 @@ zen-workspaces-close-all-unpinned-tabs-title =
|
|||||||
.label = Bersihkan
|
.label = Bersihkan
|
||||||
.tooltiptext = Tutup semua tab yang tidak disematkan
|
.tooltiptext = Tutup semua tab yang tidak disematkan
|
||||||
zen-panel-ui-workspaces-change-forward =
|
zen-panel-ui-workspaces-change-forward =
|
||||||
.label = Next Space
|
.label = Ruang Selanjutnya
|
||||||
zen-panel-ui-workspaces-change-back =
|
zen-panel-ui-workspaces-change-back =
|
||||||
.label = Previous Space
|
.label = Ruang Sebelumnya
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
|||||||
zen-menubar-appearance-dark =
|
zen-menubar-appearance-dark =
|
||||||
.label = Dökkt
|
.label = Dökkt
|
||||||
zen-menubar-new-unsynced-window =
|
zen-menubar-new-unsynced-window =
|
||||||
.label = New Blank Window
|
.label = Nýr auður gluggi
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
|||||||
zen-menubar-appearance-dark =
|
zen-menubar-appearance-dark =
|
||||||
.label = 다크
|
.label = 다크
|
||||||
zen-menubar-new-unsynced-window =
|
zen-menubar-new-unsynced-window =
|
||||||
.label = New Blank Window
|
.label = 새 빈 창
|
||||||
|
|||||||
@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = Perjungti saugyklą
|
|||||||
zen-devtools-toggle-dom-shortcut = Perjungti DOM
|
zen-devtools-toggle-dom-shortcut = Perjungti DOM
|
||||||
zen-devtools-toggle-accessibility-shortcut = Perjungti prieinamumą
|
zen-devtools-toggle-accessibility-shortcut = Perjungti prieinamumą
|
||||||
zen-close-all-unpinned-tabs-shortcut = Užverti visas neprisegtas korteles
|
zen-close-all-unpinned-tabs-shortcut = Užverti visas neprisegtas korteles
|
||||||
zen-new-unsynced-window-shortcut = Naujas nesinchronizuotas langas
|
zen-new-unsynced-window-shortcut = Naujas tuščias langas
|
||||||
|
|||||||
@@ -60,8 +60,8 @@ zen-site-data-settings = Nustatymai
|
|||||||
zen-generic-manage = Tvarkyti
|
zen-generic-manage = Tvarkyti
|
||||||
zen-generic-more = Daugiau
|
zen-generic-more = Daugiau
|
||||||
zen-generic-next = Sekantis
|
zen-generic-next = Sekantis
|
||||||
zen-essentials-promo-label = Add to Essentials
|
zen-essentials-promo-label = Įtraukti į būtiniausius
|
||||||
zen-essentials-promo-sublabel = Keep your favorite tabs just a click away
|
zen-essentials-promo-sublabel = Laikykite mėgstamas korteles vos nuo vienu paspaudimu
|
||||||
# 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
|
||||||
@@ -109,7 +109,7 @@ zen-sidebar-notification-updated-tooltip =
|
|||||||
zen-sidebar-notification-restart-safe-mode-label = Kažkas sugedo?
|
zen-sidebar-notification-restart-safe-mode-label = Kažkas sugedo?
|
||||||
zen-sidebar-notification-restart-safe-mode-tooltip =
|
zen-sidebar-notification-restart-safe-mode-tooltip =
|
||||||
.title = Paleisti iš naujo saugioje režime
|
.title = Paleisti iš naujo saugioje režime
|
||||||
zen-window-sync-migration-dialog-title = Keep Your Windows in Sync
|
zen-window-sync-migration-dialog-title = Išlaikykite savo langus sinchronizuotus
|
||||||
zen-window-sync-migration-dialog-message = Zen now syncs windows on the same device, so changes in one window are reflected across the others instantly.
|
zen-window-sync-migration-dialog-message = „Zen“ dabar sinchronizuoja langus tame pačiame įrenginyje, todėl viename lange atlikti pakeitimai iš karto atsispindi ir kituose.
|
||||||
zen-window-sync-migration-dialog-learn-more = Learn More
|
zen-window-sync-migration-dialog-learn-more = Sužinoti daugiau
|
||||||
zen-window-sync-migration-dialog-accept = Got It
|
zen-window-sync-migration-dialog-accept = Supratau
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
|||||||
zen-menubar-appearance-dark =
|
zen-menubar-appearance-dark =
|
||||||
.label = Tamsų
|
.label = Tamsų
|
||||||
zen-menubar-new-unsynced-window =
|
zen-menubar-new-unsynced-window =
|
||||||
.label = New Blank Window
|
.label = Naujas tuščias langas
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
|||||||
zen-menubar-appearance-dark =
|
zen-menubar-appearance-dark =
|
||||||
.label = Escuro
|
.label = Escuro
|
||||||
zen-menubar-new-unsynced-window =
|
zen-menubar-new-unsynced-window =
|
||||||
.label = New Blank Window
|
.label = Nova janela em branco
|
||||||
|
|||||||
@@ -18,9 +18,9 @@ tab-context-zen-replace-pinned-url-with-current =
|
|||||||
.label = Substituir o URL Fixado pelo URL Atual
|
.label = Substituir o URL Fixado pelo URL Atual
|
||||||
.accesskey = C
|
.accesskey = C
|
||||||
tab-context-zen-edit-title =
|
tab-context-zen-edit-title =
|
||||||
.label = Change Label...
|
.label = Alterar etiqueta...
|
||||||
tab-context-zen-edit-icon =
|
tab-context-zen-edit-icon =
|
||||||
.label = Change Icon...
|
.label = Alterar ícone...
|
||||||
zen-themes-corrupted = O seu ficheiro de modificações do { -brand-short-name } está corrompido. Elas foram redefinidas como iguais às do tema padrão.
|
zen-themes-corrupted = O seu ficheiro de modificações do { -brand-short-name } está corrompido. Elas foram redefinidas como iguais às do tema padrão.
|
||||||
zen-shortcuts-corrupted = O seu ficheiro de atalhos do { -brand-short-name } está corrompido. Eles foram redefinidos para os atalhos padrão.
|
zen-shortcuts-corrupted = O seu ficheiro de atalhos do { -brand-short-name } está corrompido. Eles foram redefinidos para os atalhos padrão.
|
||||||
# note: Do not translate the "<br/>" tags in the following string
|
# note: Do not translate the "<br/>" tags in the following string
|
||||||
@@ -109,7 +109,7 @@ zen-sidebar-notification-updated-tooltip =
|
|||||||
zen-sidebar-notification-restart-safe-mode-label = Falhou alguma coisa?
|
zen-sidebar-notification-restart-safe-mode-label = Falhou alguma coisa?
|
||||||
zen-sidebar-notification-restart-safe-mode-tooltip =
|
zen-sidebar-notification-restart-safe-mode-tooltip =
|
||||||
.title = Reiniciar em Modo de Segurança
|
.title = Reiniciar em Modo de Segurança
|
||||||
zen-window-sync-migration-dialog-title = Keep Your Windows in Sync
|
zen-window-sync-migration-dialog-title = Mantenha As Suas Janelas Sincronizadas
|
||||||
zen-window-sync-migration-dialog-message = Zen now syncs windows on the same device, so changes in one window are reflected across the others instantly.
|
zen-window-sync-migration-dialog-message = Agora, o Zen sincroniza as janelas no dispositivo, pelo que alterações numa janela são refletidas instantaneamente nas outras.
|
||||||
zen-window-sync-migration-dialog-learn-more = Learn More
|
zen-window-sync-migration-dialog-learn-more = Learn More
|
||||||
zen-window-sync-migration-dialog-accept = Got It
|
zen-window-sync-migration-dialog-accept = Entendido
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
|||||||
zen-menubar-appearance-dark =
|
zen-menubar-appearance-dark =
|
||||||
.label = Escuro
|
.label = Escuro
|
||||||
zen-menubar-new-unsynced-window =
|
zen-menubar-new-unsynced-window =
|
||||||
.label = New Blank Window
|
.label = Nova janela sem sincronização
|
||||||
|
|||||||
@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = Переключить хранилище
|
|||||||
zen-devtools-toggle-dom-shortcut = Переключить DOM
|
zen-devtools-toggle-dom-shortcut = Переключить DOM
|
||||||
zen-devtools-toggle-accessibility-shortcut = Включить/выключить специальные возможности
|
zen-devtools-toggle-accessibility-shortcut = Включить/выключить специальные возможности
|
||||||
zen-close-all-unpinned-tabs-shortcut = Закрыть все не закреплённые вкладки
|
zen-close-all-unpinned-tabs-shortcut = Закрыть все не закреплённые вкладки
|
||||||
zen-new-unsynced-window-shortcut = Новое несинхронизированное окно
|
zen-new-unsynced-window-shortcut = Новое пустое окно
|
||||||
|
|||||||
@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = Växla lagring
|
|||||||
zen-devtools-toggle-dom-shortcut = Växla DOM
|
zen-devtools-toggle-dom-shortcut = Växla DOM
|
||||||
zen-devtools-toggle-accessibility-shortcut = Växla tillgänglighetsinställningar
|
zen-devtools-toggle-accessibility-shortcut = Växla tillgänglighetsinställningar
|
||||||
zen-close-all-unpinned-tabs-shortcut = Stäng alla flikar som inte är fästa
|
zen-close-all-unpinned-tabs-shortcut = Stäng alla flikar som inte är fästa
|
||||||
zen-new-unsynced-window-shortcut = Nytt osynkroniserat fönster
|
zen-new-unsynced-window-shortcut = Nytt tomt fönster
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
|||||||
zen-menubar-appearance-dark =
|
zen-menubar-appearance-dark =
|
||||||
.label = Mörkt
|
.label = Mörkt
|
||||||
zen-menubar-new-unsynced-window =
|
zen-menubar-new-unsynced-window =
|
||||||
.label = New Blank Window
|
.label = Nytt tomt fönster
|
||||||
|
|||||||
@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = Depolamayı Aç/Kapat
|
|||||||
zen-devtools-toggle-dom-shortcut = DOM'u Aç/Kapat
|
zen-devtools-toggle-dom-shortcut = DOM'u Aç/Kapat
|
||||||
zen-devtools-toggle-accessibility-shortcut = Erişilebilirliği Aç/Kapat
|
zen-devtools-toggle-accessibility-shortcut = Erişilebilirliği Aç/Kapat
|
||||||
zen-close-all-unpinned-tabs-shortcut = Sabitlenmemiş Tüm Sekmeleri Kapat
|
zen-close-all-unpinned-tabs-shortcut = Sabitlenmemiş Tüm Sekmeleri Kapat
|
||||||
zen-new-unsynced-window-shortcut = Senkronize Edilmemiş Yeni Pencere
|
zen-new-unsynced-window-shortcut = Yeni Boş Pencere
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
|||||||
zen-menubar-appearance-dark =
|
zen-menubar-appearance-dark =
|
||||||
.label = Koyu
|
.label = Koyu
|
||||||
zen-menubar-new-unsynced-window =
|
zen-menubar-new-unsynced-window =
|
||||||
.label = New Blank Window
|
.label = Yeni Boş Pencere
|
||||||
|
|||||||
@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = 開啟儲存空間檢測器
|
|||||||
zen-devtools-toggle-dom-shortcut = 開啟 DOM
|
zen-devtools-toggle-dom-shortcut = 開啟 DOM
|
||||||
zen-devtools-toggle-accessibility-shortcut = 開啟輔助功能
|
zen-devtools-toggle-accessibility-shortcut = 開啟輔助功能
|
||||||
zen-close-all-unpinned-tabs-shortcut = 關閉所有未釘選的分頁
|
zen-close-all-unpinned-tabs-shortcut = 關閉所有未釘選的分頁
|
||||||
zen-new-unsynced-window-shortcut = 開新未同步視窗
|
zen-new-unsynced-window-shortcut = 開新初始視窗
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
|||||||
zen-menubar-appearance-dark =
|
zen-menubar-appearance-dark =
|
||||||
.label = 暗色
|
.label = 暗色
|
||||||
zen-menubar-new-unsynced-window =
|
zen-menubar-new-unsynced-window =
|
||||||
.label = 新的初始視窗
|
.label = 開新初始視窗
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ zen-panel-ui-gradient-click-to-add = 點擊新增顏色
|
|||||||
zen-workspace-creation-name =
|
zen-workspace-creation-name =
|
||||||
.placeholder = 工作區名稱
|
.placeholder = 工作區名稱
|
||||||
zen-move-tab-to-workspace-button =
|
zen-move-tab-to-workspace-button =
|
||||||
.label = 移動至……
|
.label = 移動至…
|
||||||
.tooltiptext = 將此視窗所有頁面移至單一工作區
|
.tooltiptext = 將此視窗所有頁面移至單一工作區
|
||||||
zen-workspaces-panel-context-reorder =
|
zen-workspaces-panel-context-reorder =
|
||||||
.label = 排序工作區
|
.label = 排序工作區
|
||||||
|
|||||||
6
package-lock.json
generated
6
package-lock.json
generated
@@ -5610,9 +5610,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lodash": {
|
"node_modules/lodash": {
|
||||||
"version": "4.17.21",
|
"version": "4.17.23",
|
||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
|
||||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
|
"integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -54,3 +54,6 @@
|
|||||||
|
|
||||||
- name: zen.view.draggable-sidebar
|
- name: zen.view.draggable-sidebar
|
||||||
value: true
|
value: true
|
||||||
|
|
||||||
|
- name: zen.view.overflow-webext-toolbar
|
||||||
|
value: true
|
||||||
|
|||||||
@@ -13,3 +13,6 @@
|
|||||||
|
|
||||||
- name: zen.window-sync.open-link-in-new-unsynced-window
|
- name: zen.window-sync.open-link-in-new-unsynced-window
|
||||||
value: true
|
value: true
|
||||||
|
|
||||||
|
- name: zen.window-sync.sync-only-pinned-tabs
|
||||||
|
value: false
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
||||||
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
import requests
|
|
||||||
|
|
||||||
BASE_URI = "https://phabricator.services.mozilla.com"
|
|
||||||
OUTPUT_DIR = os.path.join(os.getcwd(), "src", "firefox-patches")
|
|
||||||
|
|
||||||
|
|
||||||
def download_phab_patch(phab_id, output_file):
|
|
||||||
"""Download a Phabricator patch by its ID and save it to output_file."""
|
|
||||||
patch_url = f"{BASE_URI}/{phab_id}?download=true"
|
|
||||||
try:
|
|
||||||
print(f"Downloading patch from {patch_url}")
|
|
||||||
response = requests.get(patch_url)
|
|
||||||
response.raise_for_status() # Raise an error for bad responses
|
|
||||||
with open(output_file, 'wb') as f:
|
|
||||||
f.write(response.content)
|
|
||||||
print(f"Patch saved to {output_file}")
|
|
||||||
except requests.RequestException as e:
|
|
||||||
print(f"Error downloading patch: {e}")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
if len(sys.argv) < 2:
|
|
||||||
print("Usage: python download_phab_patch.py <PHABRICATOR_ID> [output_file]", file=sys.stderr)
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
phab_id = sys.argv[1]
|
|
||||||
output_file = sys.argv[2] if len(sys.argv) > 2 else f"phab_{phab_id}"
|
|
||||||
output_file = os.path.join(OUTPUT_DIR, output_file + ".patch")
|
|
||||||
|
|
||||||
download_phab_patch(phab_id, output_file)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
99
scripts/update_external_patches.py
Normal file
99
scripts/update_external_patches.py
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
# 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 os
|
||||||
|
import sys
|
||||||
|
import json
|
||||||
|
import requests
|
||||||
|
from json_with_comments import JSONWithCommentsDecoder
|
||||||
|
|
||||||
|
BASE_URI = "https://phabricator.services.mozilla.com"
|
||||||
|
OUTPUT_DIR = os.path.join(os.getcwd(), "src", "external-patches")
|
||||||
|
|
||||||
|
|
||||||
|
def die(message):
|
||||||
|
print(f"Error: {message}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def download_phab_patch(phab_id, output_file):
|
||||||
|
"""Download a Phabricator patch by its ID and save it to output_file."""
|
||||||
|
patch_url = f"{BASE_URI}/{phab_id}?download=true"
|
||||||
|
try:
|
||||||
|
print(f"Downloading patch from {patch_url}")
|
||||||
|
response = requests.get(patch_url)
|
||||||
|
response.raise_for_status() # Raise an error for bad responses
|
||||||
|
with open(output_file, 'wb') as f:
|
||||||
|
f.write(response.content)
|
||||||
|
print(f"Patch saved to {output_file}")
|
||||||
|
except requests.RequestException as e:
|
||||||
|
die(f"Failed to download patch {phab_id}: {e}")
|
||||||
|
|
||||||
|
|
||||||
|
def download_patch_from_url(url, output_file):
|
||||||
|
"""Download a patch from a given URL and save it to output_file."""
|
||||||
|
try:
|
||||||
|
print(f"Downloading patch from {url}")
|
||||||
|
response = requests.get(url)
|
||||||
|
response.raise_for_status() # Raise an error for bad responses
|
||||||
|
with open(output_file, 'wb') as f:
|
||||||
|
f.write(response.content)
|
||||||
|
print(f"Patch saved to {output_file}")
|
||||||
|
except requests.RequestException as e:
|
||||||
|
die(f"Failed to download patch from {url}: {e}")
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
with open(os.path.join(OUTPUT_DIR, "manifest.json"), 'r') as f:
|
||||||
|
manifest = json.load(f, cls=JSONWithCommentsDecoder)
|
||||||
|
|
||||||
|
expected_files = set()
|
||||||
|
for patch in manifest:
|
||||||
|
if patch.get("type") == "phabricator":
|
||||||
|
phab_id = patch.get("id")
|
||||||
|
name = patch.get("name")
|
||||||
|
if not phab_id or not name:
|
||||||
|
die(f"Patch entry missing 'id' or 'name': {patch}")
|
||||||
|
name = name.replace(" ", "_").lower()
|
||||||
|
output_file = os.path.join(OUTPUT_DIR, "firefox", f"{name}.patch")
|
||||||
|
print(f"Processing Phabricator patch: {phab_id} -> {output_file}")
|
||||||
|
download_phab_patch(phab_id, output_file)
|
||||||
|
expected_files.add(output_file)
|
||||||
|
elif patch.get("type") == "local":
|
||||||
|
print(f"Local patch: {patch.get('path')}")
|
||||||
|
expected_files.add(os.path.join(OUTPUT_DIR, patch.get("path")))
|
||||||
|
elif patch.get("type") == "patch":
|
||||||
|
url = patch.get("url")
|
||||||
|
dest = patch.get("dest")
|
||||||
|
if not url or not dest:
|
||||||
|
die(f"Patch entry missing 'url' or 'dest': {patch}")
|
||||||
|
filename = url.split("/")[-1]
|
||||||
|
output_file = os.path.join(OUTPUT_DIR, dest, filename)
|
||||||
|
download_patch_from_url(url, output_file)
|
||||||
|
replaces = patch.get("replaces", {})
|
||||||
|
for replace in replaces.keys():
|
||||||
|
value = replaces[replace]
|
||||||
|
with open(output_file, 'r') as f:
|
||||||
|
content = f.read()
|
||||||
|
if replace not in content:
|
||||||
|
die(f"Replace string '{replace}' not found in {output_file}")
|
||||||
|
with open(output_file, 'w') as f:
|
||||||
|
f.write(content.replace(replace, value))
|
||||||
|
expected_files.add(output_file)
|
||||||
|
else:
|
||||||
|
die(f"Unknown patch type: {patch.get('type')}")
|
||||||
|
|
||||||
|
# Check for unexpected files in the output directory
|
||||||
|
# and remove them if they are not in the expected_files set.
|
||||||
|
for root, dirs, files in os.walk(OUTPUT_DIR):
|
||||||
|
for file in files:
|
||||||
|
if file.endswith(".patch"):
|
||||||
|
file_path = os.path.join(root, file)
|
||||||
|
if file_path not in expected_files:
|
||||||
|
print(f"Removing unexpected patch file: {file_path}")
|
||||||
|
os.remove(file_path)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
|
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||||
index 68c24f730d56f548cf1e286198a04f8363529378..71418c93ce7216d71412f2fa67295322bb73abad 100644
|
index 68c24f730d56f548cf1e286198a04f8363529378..eb9aa5e77cf549062d8d3770f8057ceafe67c317 100644
|
||||||
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
||||||
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||||
@@ -2,7 +2,7 @@
|
@@ -2,7 +2,7 @@
|
||||||
@@ -22,16 +22,17 @@ index 68c24f730d56f548cf1e286198a04f8363529378..71418c93ce7216d71412f2fa67295322
|
|||||||
<toolbar id="TabsToolbar"
|
<toolbar id="TabsToolbar"
|
||||||
class="browser-toolbar browser-titlebar"
|
class="browser-toolbar browser-titlebar"
|
||||||
fullscreentoolbar="true"
|
fullscreentoolbar="true"
|
||||||
@@ -62,6 +61,8 @@
|
@@ -62,6 +61,9 @@
|
||||||
<html:sidebar-pins-promo id="drag-to-pin-promo-card"></html:sidebar-pins-promo>
|
<html:sidebar-pins-promo id="drag-to-pin-promo-card"></html:sidebar-pins-promo>
|
||||||
<arrowscrollbox id="pinned-tabs-container" orient="horizontal" clicktoscroll=""></arrowscrollbox>
|
<arrowscrollbox id="pinned-tabs-container" orient="horizontal" clicktoscroll=""></arrowscrollbox>
|
||||||
<splitter orient="vertical" id="vertical-pinned-tabs-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
|
<splitter orient="vertical" id="vertical-pinned-tabs-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
|
||||||
|
+<html:div id="zen-overflow-extensions-list" skipintoolbarset="true"></html:div>
|
||||||
+<html:div id="zen-essentials" skipintoolbarset="true"></html:div>
|
+<html:div id="zen-essentials" skipintoolbarset="true"></html:div>
|
||||||
+<html:div id="zen-tabs-wrapper">
|
+<html:div id="zen-tabs-wrapper">
|
||||||
<hbox class="tab-drop-indicator" hidden="true"/>
|
<hbox class="tab-drop-indicator" hidden="true"/>
|
||||||
<arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend="">
|
<arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend="">
|
||||||
<tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/>
|
<tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/>
|
||||||
@@ -81,6 +82,7 @@
|
@@ -81,6 +83,7 @@
|
||||||
tooltip="dynamic-shortcut-tooltip"
|
tooltip="dynamic-shortcut-tooltip"
|
||||||
data-l10n-id="tabs-toolbar-new-tab"/>
|
data-l10n-id="tabs-toolbar-new-tab"/>
|
||||||
<html:span id="tabbrowser-tab-a11y-desc" hidden="true"/>
|
<html:span id="tabbrowser-tab-a11y-desc" hidden="true"/>
|
||||||
@@ -39,7 +40,7 @@ index 68c24f730d56f548cf1e286198a04f8363529378..71418c93ce7216d71412f2fa67295322
|
|||||||
</tabs>
|
</tabs>
|
||||||
|
|
||||||
<toolbarbutton id="new-tab-button"
|
<toolbarbutton id="new-tab-button"
|
||||||
@@ -106,9 +108,10 @@
|
@@ -106,9 +109,10 @@
|
||||||
#include private-browsing-indicator.inc.xhtml
|
#include private-browsing-indicator.inc.xhtml
|
||||||
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>
|
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>
|
||||||
|
|
||||||
|
|||||||
@@ -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 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b46db12e2 100644
|
index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..c50781a1e8fd1a71baf497ba64d85292fa1347f4 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, {
|
||||||
@@ -153,7 +153,17 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
|
|||||||
/**
|
/**
|
||||||
* Add a widget to an area.
|
* Add a widget to an area.
|
||||||
* If the area to which you try to add is not known to CustomizableUI,
|
* If the area to which you try to add is not known to CustomizableUI,
|
||||||
@@ -7858,7 +7858,7 @@ class OverflowableToolbar {
|
@@ -7798,7 +7798,9 @@ class OverflowableToolbar {
|
||||||
|
);
|
||||||
|
|
||||||
|
if (webExtList && CustomizableUI.isWebExtensionWidget(child.id)) {
|
||||||
|
+ if (webExtList.id !== "zen-overflow-extensions-list") {
|
||||||
|
child.setAttribute("cui-anchorid", webExtButtonID);
|
||||||
|
+ }
|
||||||
|
webExtList.insertBefore(child, webExtList.firstElementChild);
|
||||||
|
} else {
|
||||||
|
child.setAttribute("cui-anchorid", this.#defaultListButton.id);
|
||||||
|
@@ -7858,7 +7860,7 @@ class OverflowableToolbar {
|
||||||
) {
|
) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -162,7 +172,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
|
|||||||
if (child != aExceptChild) {
|
if (child != aExceptChild) {
|
||||||
sum += getInlineSize(child);
|
sum += getInlineSize(child);
|
||||||
}
|
}
|
||||||
@@ -7882,11 +7882,11 @@ class OverflowableToolbar {
|
@@ -7882,11 +7884,11 @@ class OverflowableToolbar {
|
||||||
parseFloat(style.paddingLeft) -
|
parseFloat(style.paddingLeft) -
|
||||||
parseFloat(style.paddingRight) -
|
parseFloat(style.paddingRight) -
|
||||||
toolbarChildrenWidth;
|
toolbarChildrenWidth;
|
||||||
@@ -176,7 +186,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
|
|||||||
});
|
});
|
||||||
|
|
||||||
lazy.log.debug(
|
lazy.log.debug(
|
||||||
@@ -7901,7 +7901,14 @@ class OverflowableToolbar {
|
@@ -7901,7 +7903,14 @@ class OverflowableToolbar {
|
||||||
Math.max(targetWidth, targetChildrenWidth)
|
Math.max(targetWidth, targetChildrenWidth)
|
||||||
);
|
);
|
||||||
totalAvailWidth = Math.ceil(totalAvailWidth);
|
totalAvailWidth = Math.ceil(totalAvailWidth);
|
||||||
@@ -192,7 +202,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
|
|||||||
return { isOverflowing, targetContentWidth, totalAvailWidth };
|
return { isOverflowing, targetContentWidth, totalAvailWidth };
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7962,7 +7969,11 @@ class OverflowableToolbar {
|
@@ -7962,7 +7971,11 @@ class OverflowableToolbar {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -205,7 +215,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
|
|||||||
lazy.log.debug(
|
lazy.log.debug(
|
||||||
`Need ${minSize} but width is ${totalAvailWidth} so bailing`
|
`Need ${minSize} but width is ${totalAvailWidth} so bailing`
|
||||||
);
|
);
|
||||||
@@ -7995,7 +8006,7 @@ class OverflowableToolbar {
|
@@ -7995,7 +8008,7 @@ class OverflowableToolbar {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!inserted) {
|
if (!inserted) {
|
||||||
@@ -214,7 +224,27 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
|
|||||||
}
|
}
|
||||||
child.removeAttribute("cui-anchorid");
|
child.removeAttribute("cui-anchorid");
|
||||||
child.removeAttribute("overflowedItem");
|
child.removeAttribute("overflowedItem");
|
||||||
@@ -8340,7 +8351,7 @@ class OverflowableToolbar {
|
@@ -8121,6 +8134,9 @@ class OverflowableToolbar {
|
||||||
|
* if no such list exists.
|
||||||
|
*/
|
||||||
|
get #webExtList() {
|
||||||
|
+ if (this.#toolbar.getAttribute("addon-webext-overflowtarget") !== this.#webExtListRef?.id) {
|
||||||
|
+ this.#webExtListRef = null;
|
||||||
|
+ }
|
||||||
|
if (!this.#webExtListRef) {
|
||||||
|
let targetID = this.#toolbar.getAttribute("addon-webext-overflowtarget");
|
||||||
|
if (!targetID) {
|
||||||
|
@@ -8132,6 +8148,9 @@ class OverflowableToolbar {
|
||||||
|
let win = this.#toolbar.ownerGlobal;
|
||||||
|
let { panel } = win.gUnifiedExtensions;
|
||||||
|
this.#webExtListRef = panel.querySelector(`#${targetID}`);
|
||||||
|
+ if (!this.#webExtListRef) {
|
||||||
|
+ this.#webExtListRef = win.document.getElementById(targetID);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
return this.#webExtListRef;
|
||||||
|
}
|
||||||
|
@@ -8340,7 +8359,7 @@ class OverflowableToolbar {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "mousedown": {
|
case "mousedown": {
|
||||||
|
|||||||
@@ -736,6 +736,7 @@ var gZenWorkspacesSettings = {
|
|||||||
Services.prefs.addObserver("zen.glance.enabled", tabsUnloaderPrefListener); // We can use the same listener for both prefs
|
Services.prefs.addObserver("zen.glance.enabled", tabsUnloaderPrefListener); // We can use the same listener for both prefs
|
||||||
Services.prefs.addObserver("zen.workspaces.separate-essentials", tabsUnloaderPrefListener);
|
Services.prefs.addObserver("zen.workspaces.separate-essentials", tabsUnloaderPrefListener);
|
||||||
Services.prefs.addObserver("zen.glance.activation-method", tabsUnloaderPrefListener);
|
Services.prefs.addObserver("zen.glance.activation-method", tabsUnloaderPrefListener);
|
||||||
|
Services.prefs.addObserver("zen.window-sync.sync-only-pinned-tabs", tabsUnloaderPrefListener);
|
||||||
Services.prefs.addObserver(
|
Services.prefs.addObserver(
|
||||||
"zen.tabs.ctrl-tab.ignore-essential-tabs",
|
"zen.tabs.ctrl-tab.ignore-essential-tabs",
|
||||||
toggleZenCycleByAttrWarning
|
toggleZenCycleByAttrWarning
|
||||||
@@ -745,6 +746,10 @@ var gZenWorkspacesSettings = {
|
|||||||
Services.prefs.removeObserver("zen.glance.enabled", tabsUnloaderPrefListener);
|
Services.prefs.removeObserver("zen.glance.enabled", tabsUnloaderPrefListener);
|
||||||
Services.prefs.removeObserver("zen.glance.activation-method", tabsUnloaderPrefListener);
|
Services.prefs.removeObserver("zen.glance.activation-method", tabsUnloaderPrefListener);
|
||||||
Services.prefs.removeObserver("zen.workspaces.separate-essentials", tabsUnloaderPrefListener);
|
Services.prefs.removeObserver("zen.workspaces.separate-essentials", tabsUnloaderPrefListener);
|
||||||
|
Services.prefs.removeObserver(
|
||||||
|
"zen.window-sync.sync-only-pinned-tabs",
|
||||||
|
tabsUnloaderPrefListener
|
||||||
|
);
|
||||||
Services.prefs.removeObserver(
|
Services.prefs.removeObserver(
|
||||||
"zen.tabs.ctrl-tab.ignore-essential-tabs",
|
"zen.tabs.ctrl-tab.ignore-essential-tabs",
|
||||||
toggleZenCycleByAttrWarning
|
toggleZenCycleByAttrWarning
|
||||||
@@ -1198,6 +1203,11 @@ Preferences.addAll([
|
|||||||
type: "bool",
|
type: "bool",
|
||||||
default: true,
|
default: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: "zen.window-sync.sync-only-pinned-tabs",
|
||||||
|
type: "bool",
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Preferences.addSetting({
|
Preferences.addSetting({
|
||||||
|
|||||||
@@ -20,6 +20,9 @@
|
|||||||
<label><html:h2 data-l10n-id="zen-settings-workspaces-header"/></label>
|
<label><html:h2 data-l10n-id="zen-settings-workspaces-header"/></label>
|
||||||
<description class="description-deemphasized" data-l10n-id="zen-settings-workspaces-description" />
|
<description class="description-deemphasized" data-l10n-id="zen-settings-workspaces-description" />
|
||||||
|
|
||||||
|
<checkbox id="zenWorkspacesSyncUnpinnedTabs"
|
||||||
|
data-l10n-id="zen-settings-workspaces-sync-unpinned-tabs"
|
||||||
|
preference="zen.window-sync.sync-only-pinned-tabs"/>
|
||||||
<checkbox id="zenWorkspacesHideDefaultContainer"
|
<checkbox id="zenWorkspacesHideDefaultContainer"
|
||||||
data-l10n-id="zen-settings-workspaces-hide-default-container-indicator"
|
data-l10n-id="zen-settings-workspaces-hide-default-container-indicator"
|
||||||
preference="zen.workspaces.hide-default-container-indicator"/>
|
preference="zen.workspaces.hide-default-container-indicator"/>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
|
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
|
||||||
index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c9b8386b3 100644
|
index 6528da245d922e2ccdb59cbf8106055bc34d1e74..b5d5ac633c06d7d9c909ec9456a5f3c165a6b925 100644
|
||||||
--- a/browser/components/tabbrowser/content/tab.js
|
--- a/browser/components/tabbrowser/content/tab.js
|
||||||
+++ b/browser/components/tabbrowser/content/tab.js
|
+++ b/browser/components/tabbrowser/content/tab.js
|
||||||
@@ -21,6 +21,7 @@
|
@@ -21,6 +21,7 @@
|
||||||
@@ -52,7 +52,7 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -224,11 +227,21 @@
|
@@ -224,11 +227,23 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
get visible() {
|
get visible() {
|
||||||
@@ -64,7 +64,6 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
|||||||
+ if (!this.isOpen || this.hidden || this.hasAttribute("zen-empty-tab")) {
|
+ if (!this.isOpen || this.hidden || this.hasAttribute("zen-empty-tab")) {
|
||||||
+ return false;
|
+ return false;
|
||||||
+ }
|
+ }
|
||||||
+
|
|
||||||
+ // Selected tabs are always visible
|
+ // Selected tabs are always visible
|
||||||
+ if (this.selected || this.multiselected || this.hasAttribute("folder-active")) return true;
|
+ if (this.selected || this.multiselected || this.hasAttribute("folder-active")) return true;
|
||||||
+ // Recursively check all parent groups
|
+ // Recursively check all parent groups
|
||||||
@@ -75,11 +74,14 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
|||||||
+ }
|
+ }
|
||||||
+ currentParent = currentParent.group;
|
+ currentParent = currentParent.group;
|
||||||
+ }
|
+ }
|
||||||
|
+ if (this.pinned && !this.hasAttribute("zen-essential") && gZenWorkspaces.activeWorkspaceElement?.hasCollapsedPinnedTabs) {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
+ return true;
|
+ return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
get hidden() {
|
get hidden() {
|
||||||
@@ -307,7 +320,7 @@
|
@@ -307,7 +322,7 @@
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,7 +90,7 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
|||||||
}
|
}
|
||||||
|
|
||||||
get lastAccessed() {
|
get lastAccessed() {
|
||||||
@@ -384,7 +397,18 @@
|
@@ -384,7 +399,18 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
get group() {
|
get group() {
|
||||||
@@ -108,7 +110,7 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
|||||||
}
|
}
|
||||||
|
|
||||||
get splitview() {
|
get splitview() {
|
||||||
@@ -489,6 +513,8 @@
|
@@ -489,6 +515,8 @@
|
||||||
this.style.MozUserFocus = "ignore";
|
this.style.MozUserFocus = "ignore";
|
||||||
} else if (
|
} else if (
|
||||||
event.target.classList.contains("tab-close-button") ||
|
event.target.classList.contains("tab-close-button") ||
|
||||||
@@ -117,7 +119,7 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
|||||||
event.target.classList.contains("tab-icon-overlay") ||
|
event.target.classList.contains("tab-icon-overlay") ||
|
||||||
event.target.classList.contains("tab-audio-button")
|
event.target.classList.contains("tab-audio-button")
|
||||||
) {
|
) {
|
||||||
@@ -543,6 +569,10 @@
|
@@ -543,6 +571,10 @@
|
||||||
this.style.MozUserFocus = "";
|
this.style.MozUserFocus = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,7 +130,7 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
|||||||
on_click(event) {
|
on_click(event) {
|
||||||
if (event.button != 0) {
|
if (event.button != 0) {
|
||||||
return;
|
return;
|
||||||
@@ -603,6 +633,14 @@
|
@@ -603,6 +635,14 @@
|
||||||
// (see tabbrowser-tabs 'click' handler).
|
// (see tabbrowser-tabs 'click' handler).
|
||||||
gBrowser.tabContainer._blockDblClick = true;
|
gBrowser.tabContainer._blockDblClick = true;
|
||||||
}
|
}
|
||||||
@@ -143,7 +145,7 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
|||||||
}
|
}
|
||||||
|
|
||||||
on_dblclick(event) {
|
on_dblclick(event) {
|
||||||
@@ -626,6 +664,8 @@
|
@@ -626,6 +666,8 @@
|
||||||
animate: true,
|
animate: true,
|
||||||
triggeringEvent: event,
|
triggeringEvent: event,
|
||||||
});
|
});
|
||||||
|
|||||||
3
src/external-patches/librewolf/README.md
Normal file
3
src/external-patches/librewolf/README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Patches imported from LibreWolf
|
||||||
|
|
||||||
|
Firefox sometimes makes changes without considering the impact on forks. This is the case of the patches that are imported from LibreWolf, which are already present in LibreWolf but not yet (or never) present in Firefox. Thanks to LibreWolf for making these patches available and for their work in maintaining them. We will keep these patches as long as they are needed, and we will remove them once they are no longer necessary (for example, when they are merged into Firefox or when the issue they solve is no longer present).
|
||||||
12
src/external-patches/librewolf/firefox-in-ua.patch
Normal file
12
src/external-patches/librewolf/firefox-in-ua.patch
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
diff --git a/toolkit/moz.configure b/toolkit/moz.configure
|
||||||
|
--- a/toolkit/moz.configure
|
||||||
|
+++ b/toolkit/moz.configure
|
||||||
|
@@ -28,7 +28,7 @@ project_flag(
|
||||||
|
|
||||||
|
project_flag(
|
||||||
|
env="MOZ_APP_UA_NAME",
|
||||||
|
- default="",
|
||||||
|
+ default="Firefox",
|
||||||
|
nargs=1,
|
||||||
|
help="Application name in the User Agent string",
|
||||||
|
)
|
||||||
65
src/external-patches/librewolf/xdg-dir.patch
Normal file
65
src/external-patches/librewolf/xdg-dir.patch
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
|
||||||
|
index 3cf7073..b1c782a 100644
|
||||||
|
--- a/toolkit/xre/nsXREDirProvider.cpp
|
||||||
|
+++ b/toolkit/xre/nsXREDirProvider.cpp
|
||||||
|
@@ -1283,9 +1283,11 @@ nsresult nsXREDirProvider::AppendFromAppData(nsIFile* aFile, bool aIsDotted) {
|
||||||
|
// Similar to nsXREDirProvider::AppendProfilePath.
|
||||||
|
// TODO: Bug 1990407 - Evaluate if refactoring might be required there in the
|
||||||
|
// future?
|
||||||
|
- if (gAppData->profile) {
|
||||||
|
+ // Use aIsDotted for a different purpose here, will probably break in the future
|
||||||
|
+ if (gAppData->profile && aIsDotted) {
|
||||||
|
nsAutoCString profile;
|
||||||
|
profile = gAppData->profile;
|
||||||
|
+ profile = "."_ns + nsDependentCString(gAppData->profile);
|
||||||
|
MOZ_TRY(aFile->AppendRelativeNativePath(profile));
|
||||||
|
} else {
|
||||||
|
nsAutoCString vendor;
|
||||||
|
@@ -1295,8 +1297,8 @@ nsresult nsXREDirProvider::AppendFromAppData(nsIFile* aFile, bool aIsDotted) {
|
||||||
|
ToLowerCase(vendor);
|
||||||
|
ToLowerCase(appName);
|
||||||
|
|
||||||
|
- MOZ_TRY(aFile->AppendRelativeNativePath(aIsDotted ? ("."_ns + vendor)
|
||||||
|
- : vendor));
|
||||||
|
+ //MOZ_TRY(aFile->AppendRelativeNativePath(aIsDotted ? ("."_ns + vendor)
|
||||||
|
+ // : vendor));
|
||||||
|
MOZ_TRY(aFile->AppendRelativeNativePath(appName));
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1435,28 +1437,22 @@ nsresult nsXREDirProvider::GetLegacyOrXDGHomePath(const char* aHomeDir,
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
- // If the build was made against a specific profile name, MOZ_APP_PROFILE=
|
||||||
|
- // then make sure we respect this and dont move to XDG directory
|
||||||
|
- if (gAppData->profile) {
|
||||||
|
- MOZ_TRY(NS_NewNativeLocalFile(nsDependentCString(aHomeDir),
|
||||||
|
- getter_AddRefs(localDir)));
|
||||||
|
- } else {
|
||||||
|
- MOZ_TRY(GetLegacyOrXDGConfigHome(aHomeDir, getter_AddRefs(localDir)));
|
||||||
|
- MOZ_TRY(localDir->Clone(getter_AddRefs(parentDir)));
|
||||||
|
- }
|
||||||
|
+ // Since we set gAppData->profile and don't want to force legacy behaviour
|
||||||
|
+ MOZ_TRY(GetLegacyOrXDGConfigHome(aHomeDir, getter_AddRefs(localDir)));
|
||||||
|
+ MOZ_TRY(localDir->Clone(getter_AddRefs(parentDir)));
|
||||||
|
|
||||||
|
MOZ_TRY(AppendFromAppData(localDir, false));
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // The profile root directory needs to exists at that point.
|
||||||
|
+ MOZ_TRY(EnsureDirectoryExists(localDir));
|
||||||
|
+
|
||||||
|
// If required return the parent directory that matches the profile root
|
||||||
|
// directory.
|
||||||
|
if (aFile) {
|
||||||
|
- parentDir.forget(aFile);
|
||||||
|
+ localDir.forget(aFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
- // The profile root directory needs to exists at that point.
|
||||||
|
- MOZ_TRY(EnsureDirectoryExists(localDir));
|
||||||
|
-
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
#endif // defined(MOZ_WIDGET_GTK)
|
||||||
|
|
||||||
29
src/external-patches/manifest.json
Normal file
29
src/external-patches/manifest.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
// 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/.
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "phabricator",
|
||||||
|
"id": "D279007",
|
||||||
|
"name": "Fix MacOS Crash on Shutdown Firefox 149"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "local",
|
||||||
|
"path": "firefox/no_liquid_glass_icon.patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "patch",
|
||||||
|
"url": "https://codeberg.org/librewolf/source/raw/branch/main/patches/firefox-in-ua.patch",
|
||||||
|
"dest": "librewolf",
|
||||||
|
"replaces": {
|
||||||
|
// They don't correctly export this patch, so we need to replace
|
||||||
|
// the parameter's help description with the correct one.
|
||||||
|
"application": "Application"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "patch",
|
||||||
|
"url": "https://codeberg.org/librewolf/source/raw/branch/main/patches/xdg-dir.patch",
|
||||||
|
"dest": "librewolf"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
diff --git a/netwerk/protocol/http/moz.build b/netwerk/protocol/http/moz.build
|
|
||||||
index d2330003caf35c43d6831fb0d356ece513906f78..76c2faf822ddaf645eb03d93380c58b4e3b510c0 100644
|
|
||||||
--- a/netwerk/protocol/http/moz.build
|
|
||||||
+++ b/netwerk/protocol/http/moz.build
|
|
||||||
@@ -227,7 +227,7 @@ LOCAL_INCLUDES += [
|
|
||||||
"/netwerk/url-classifier",
|
|
||||||
]
|
|
||||||
|
|
||||||
-DEFINES["MOZ_APP_UA_NAME"] = f'"{CONFIG["MOZ_APP_UA_NAME"]}"'
|
|
||||||
+DEFINES["MOZ_APP_UA_NAME"] = f'"Firefox"'
|
|
||||||
|
|
||||||
if CONFIG["MOZ_AUTH_EXTENSION"]:
|
|
||||||
LOCAL_INCLUDES += [
|
|
||||||
@@ -7,7 +7,7 @@ index 0d7a3e505b6bd30548c6dda1504dd343a517b083..54400def5e02e886765fab68c3854a6b
|
|||||||
getBrowserInfo: function () {
|
getBrowserInfo: function () {
|
||||||
const { name, vendor, version, appBuildID } = Services.appinfo;
|
const { name, vendor, version, appBuildID } = Services.appinfo;
|
||||||
- const info = { name, vendor, version, buildID: appBuildID };
|
- const info = { name, vendor, version, buildID: appBuildID };
|
||||||
+ const info = { name: 'firefox', vendor, version: AppConstants.ZEN_FIREFOX_VERSION, buildID: appBuildID };
|
+ const info = { name: 'Firefox', vendor, version: AppConstants.ZEN_FIREFOX_VERSION, buildID: appBuildID };
|
||||||
return Promise.resolve(info);
|
return Promise.resolve(info);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
content/browser/zen-styles/zen-panel-ui.css (../../zen/common/styles/zen-panel-ui.css)
|
content/browser/zen-styles/zen-panel-ui.css (../../zen/common/styles/zen-panel-ui.css)
|
||||||
content/browser/zen-styles/zen-single-components.css (../../zen/common/styles/zen-single-components.css)
|
content/browser/zen-styles/zen-single-components.css (../../zen/common/styles/zen-single-components.css)
|
||||||
content/browser/zen-styles/zen-sidebar.css (../../zen/common/styles/zen-sidebar.css)
|
content/browser/zen-styles/zen-sidebar.css (../../zen/common/styles/zen-sidebar.css)
|
||||||
content/browser/zen-styles/zen-toolbar.css (../../zen/common/styles/zen-toolbar.css)
|
* content/browser/zen-styles/zen-toolbar.css (../../zen/common/styles/zen-toolbar.css)
|
||||||
content/browser/zen-styles/zen-browser-container.css (../../zen/common/styles/zen-browser-container.css)
|
content/browser/zen-styles/zen-browser-container.css (../../zen/common/styles/zen-browser-container.css)
|
||||||
content/browser/zen-styles/zen-omnibox.css (../../zen/common/styles/zen-omnibox.css)
|
content/browser/zen-styles/zen-omnibox.css (../../zen/common/styles/zen-omnibox.css)
|
||||||
content/browser/zen-styles/zen-popup.css (../../zen/common/styles/zen-popup.css)
|
content/browser/zen-styles/zen-popup.css (../../zen/common/styles/zen-popup.css)
|
||||||
|
|||||||
@@ -1275,6 +1275,15 @@ window.gZenVerticalTabsManager = {
|
|||||||
appContentNavbarContaienr.append(windowButtons);
|
appContentNavbarContaienr.append(windowButtons);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
this._hasSetSingleToolbar &&
|
||||||
|
Services.prefs.getBoolPref("zen.view.overflow-webext-toolbar", true)
|
||||||
|
) {
|
||||||
|
topButtons.setAttribute("addon-webext-overflowtarget", "zen-overflow-extensions-list");
|
||||||
|
} else {
|
||||||
|
topButtons.setAttribute("addon-webext-overflowtarget", "overflowed-extensions-list");
|
||||||
|
}
|
||||||
|
|
||||||
gZenCompactModeManager.updateCompactModeContext(isSingleToolbar);
|
gZenCompactModeManager.updateCompactModeContext(isSingleToolbar);
|
||||||
|
|
||||||
// Always move the splitter next to the sidebar
|
// Always move the splitter next to the sidebar
|
||||||
|
|||||||
@@ -132,6 +132,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#nav-bar {
|
#nav-bar {
|
||||||
|
overflow: clip;
|
||||||
border-top-color: transparent !important;
|
border-top-color: transparent !important;
|
||||||
|
|
||||||
:root[zen-single-toolbar="true"] & {
|
:root[zen-single-toolbar="true"] & {
|
||||||
|
|||||||
@@ -80,7 +80,7 @@
|
|||||||
|
|
||||||
#urlbar:not([breakout-extend="true"]) {
|
#urlbar:not([breakout-extend="true"]) {
|
||||||
&:hover .urlbar-background {
|
&:hover .urlbar-background {
|
||||||
background-color: light-dark(rgba(0, 0, 0, 0.1), rgba(255, 255, 255, 0.2)) !important;
|
background-color: var(--zen-toolbar-element-bg-hover) !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
48
src/zen/common/styles/zen-overflowing-addons.css
Normal file
48
src/zen/common/styles/zen-overflowing-addons.css
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#zen-overflow-extensions-list:not(:empty) {
|
||||||
|
--uei-icon-size: 14px;
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 8px 2px;
|
||||||
|
padding-bottom: 0px;
|
||||||
|
|
||||||
|
& .unified-extensions-item {
|
||||||
|
flex: 1;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
& .toolbarbutton-badge-stack {
|
||||||
|
margin: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
padding: 8px 0;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
& .unified-extensions-item-action-button {
|
||||||
|
background-color: var(--zen-toolbar-element-bg);
|
||||||
|
height: 30px;
|
||||||
|
margin: 0;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: var(--border-radius-medium);
|
||||||
|
overflow: clip;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: var(--zen-toolbar-element-bg-hover);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.unified-extensions-item-contents,
|
||||||
|
.unified-extensions-item-menu-button,
|
||||||
|
unified-extensions-item-messagebar-wrapper {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -141,14 +141,11 @@
|
|||||||
--zen-button-padding: 0.6rem 1.2rem;
|
--zen-button-padding: 0.6rem 1.2rem;
|
||||||
|
|
||||||
--zen-toolbar-element-bg: light-dark(
|
--zen-toolbar-element-bg: light-dark(
|
||||||
color-mix(in oklch, var(--toolbox-textcolor) 10%, transparent),
|
color-mix(in oklch, var(--toolbox-textcolor) 8%, transparent),
|
||||||
color-mix(in oklch, var(--toolbox-textcolor) 15%, transparent)
|
color-mix(in oklch, var(--toolbox-textcolor) 15%, transparent)
|
||||||
);
|
);
|
||||||
|
|
||||||
--zen-toolbar-element-bg-hover: light-dark(
|
--zen-toolbar-element-bg-hover: light-dark(rgba(0, 0, 0, 0.1), rgba(255, 255, 255, 0.2));
|
||||||
color-mix(in srgb, var(--zen-toolbar-element-bg) 75%, transparent),
|
|
||||||
color-mix(in srgb, var(--zen-toolbar-element-bg) 60%, transparent)
|
|
||||||
);
|
|
||||||
|
|
||||||
/* Toolbar */
|
/* Toolbar */
|
||||||
--tab-selected-color-scheme: inherit !important;
|
--tab-selected-color-scheme: inherit !important;
|
||||||
@@ -231,10 +228,7 @@
|
|||||||
--toolbar-field-color: var(--toolbox-textcolor) !important;
|
--toolbar-field-color: var(--toolbox-textcolor) !important;
|
||||||
|
|
||||||
&[zen-private-window='true'] {
|
&[zen-private-window='true'] {
|
||||||
--zen-main-browser-background: linear-gradient(130deg,
|
--zen-main-browser-background: color-mix(in srgb, rgb(11, 10, 11) 90%, var(--zen-themed-toolbar-bg-transparent));
|
||||||
color-mix(in srgb, rgb(10, 6, 11) 80%, var(--zen-themed-toolbar-bg-transparent)) 0%,
|
|
||||||
color-mix(in srgb, rgb(19, 7, 22) 80%, var(--zen-themed-toolbar-bg-transparent)) 100%
|
|
||||||
);
|
|
||||||
--zen-main-browser-background-toolbar: var(--zen-main-browser-background);
|
--zen-main-browser-background-toolbar: var(--zen-main-browser-background);
|
||||||
--zen-primary-color: light-dark(rgb(93, 42, 107), rgb(110, 48, 125)) !important;
|
--zen-primary-color: light-dark(rgb(93, 42, 107), rgb(110, 48, 125)) !important;
|
||||||
--toolbox-textcolor: color-mix(in srgb, currentColor 95%, transparent) !important;
|
--toolbox-textcolor: color-mix(in srgb, currentColor 95%, transparent) !important;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* 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/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#nav-bar,
|
#nav-bar,
|
||||||
#zen-sidebar-top-buttons {
|
#zen-sidebar-top-buttons {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
@@ -11,3 +12,5 @@
|
|||||||
:root[inDOMFullscreen="true"] #zen-appcontent-navbar-wrapper {
|
:root[inDOMFullscreen="true"] #zen-appcontent-navbar-wrapper {
|
||||||
visibility: collapse;
|
visibility: collapse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%include zen-overflowing-addons.css
|
||||||
|
|||||||
@@ -10,9 +10,14 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#zen-dragover-background {
|
#zen-dragover-background {
|
||||||
width: calc(100% - var(--zen-toolbox-padding) * 2 - 5px);
|
width: calc(100% - var(--zen-toolbox-padding) * 2 - 7px);
|
||||||
left: unset;
|
left: unset;
|
||||||
|
right: calc(var(--zen-toolbox-padding) + 3px);
|
||||||
transform: translateY(-4px);
|
transform: translateY(-4px);
|
||||||
|
|
||||||
|
:root:not([zen-single-toolbar="true"]) & {
|
||||||
|
transform: translateY(calc(-100% - 2px));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#zen-tabbox-wrapper {
|
#zen-tabbox-wrapper {
|
||||||
|
|||||||
@@ -936,7 +936,9 @@
|
|||||||
let dropElementFromEvent = event.target.closest(dropZoneSelector);
|
let dropElementFromEvent = event.target.closest(dropZoneSelector);
|
||||||
dropElement = dropElementFromEvent || dropElement;
|
dropElement = dropElementFromEvent || dropElement;
|
||||||
if (!dropElementFromEvent) {
|
if (!dropElementFromEvent) {
|
||||||
let hoveringPeriphery = !!event.target.closest("#tabbrowser-arrowscrollbox-periphery");
|
let hoveringPeriphery = !!event.target.closest(
|
||||||
|
":is(#tabbrowser-arrowscrollbox-periphery, .pinned-tabs-container-separator)"
|
||||||
|
);
|
||||||
if (event.target.classList.contains("zen-workspace-empty-space") || hoveringPeriphery) {
|
if (event.target.classList.contains("zen-workspace-empty-space") || hoveringPeriphery) {
|
||||||
let lastTab = gBrowser.tabs.at(-1);
|
let lastTab = gBrowser.tabs.at(-1);
|
||||||
dropElement =
|
dropElement =
|
||||||
@@ -960,7 +962,8 @@
|
|||||||
dropElement = dragData.dropElement;
|
dropElement = dragData.dropElement;
|
||||||
dropBefore = dragData.dropBefore;
|
dropBefore = dragData.dropBefore;
|
||||||
}
|
}
|
||||||
if (!dropElement) {
|
// Essentials should be properly handled by ::animateVerticalPinnedGridDragOver
|
||||||
|
if (!dropElement || dropElement.hasAttribute("zen-essential")) {
|
||||||
this.clearDragOverVisuals();
|
this.clearDragOverVisuals();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ export class nsZenFolder extends MozTabbrowserTabGroup {
|
|||||||
|
|
||||||
static rawIcon = new DOMParser().parseFromString(
|
static rawIcon = new DOMParser().parseFromString(
|
||||||
`
|
`
|
||||||
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="29" height="29" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<defs>
|
<defs>
|
||||||
<linearGradient gradientUnits="userSpaceOnUse" x1="14" y1="5.625" x2="14" y2="22.375" id="gradient-0">
|
<linearGradient gradientUnits="userSpaceOnUse" x1="14" y1="5.625" x2="14" y2="22.375" id="gradient-0">
|
||||||
<stop offset="0" style="stop-color: rgb(255, 255, 255)"/>
|
<stop offset="0" style="stop-color: rgb(255, 255, 255)"/>
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
|||||||
PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.sys.mjs",
|
PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.sys.mjs",
|
||||||
SessionStore: "resource:///modules/sessionstore/SessionStore.sys.mjs",
|
SessionStore: "resource:///modules/sessionstore/SessionStore.sys.mjs",
|
||||||
gWindowSyncEnabled: "resource:///modules/zen/ZenWindowSync.sys.mjs",
|
gWindowSyncEnabled: "resource:///modules/zen/ZenWindowSync.sys.mjs",
|
||||||
|
gSyncOnlyPinnedTabs: "resource:///modules/zen/ZenWindowSync.sys.mjs",
|
||||||
DeferredTask: "resource://gre/modules/DeferredTask.sys.mjs",
|
DeferredTask: "resource://gre/modules/DeferredTask.sys.mjs",
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -562,10 +563,31 @@ export class nsZenSessionManager {
|
|||||||
if (!sidebar) {
|
if (!sidebar) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// If we should only sync the pinned tabs, we should only edit the unpinned
|
||||||
|
// tabs in the window data and keep the pinned tabs from the window data,
|
||||||
|
// as they should be the same as the ones in the sidebar.
|
||||||
|
if (lazy.gSyncOnlyPinnedTabs) {
|
||||||
|
let pinnedTabs = (sidebar.tabs || []).filter((tab) => tab.pinned);
|
||||||
|
let unpinedWindowTabs = (aWindowData.tabs || []).filter((tab) => !tab.pinned);
|
||||||
|
aWindowData.tabs = [...pinnedTabs, ...unpinedWindowTabs];
|
||||||
|
|
||||||
|
// We restore ALL the split view data in the sidebar, if the group doesn't exist in the window,
|
||||||
|
// it should be a no-op anyways.
|
||||||
|
aWindowData.splitViewData = [
|
||||||
|
...(sidebar.splitViewData || []),
|
||||||
|
...(aWindowData.splitViewData || []),
|
||||||
|
];
|
||||||
|
// Same thing with groups, we restore all the groups from the sidebar, if they don't have any
|
||||||
|
// existing tabs in the window, they should be a no-op.
|
||||||
|
aWindowData.groups = [...(sidebar.groups || []), ...(aWindowData.groups || [])];
|
||||||
|
} else {
|
||||||
aWindowData.tabs = sidebar.tabs || [];
|
aWindowData.tabs = sidebar.tabs || [];
|
||||||
aWindowData.splitViewData = sidebar.splitViewData;
|
aWindowData.splitViewData = sidebar.splitViewData;
|
||||||
aWindowData.folders = sidebar.folders;
|
|
||||||
aWindowData.groups = sidebar.groups;
|
aWindowData.groups = sidebar.groups;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Folders are always pinned, so we dont need to check for the pinned state here.
|
||||||
|
aWindowData.folders = sidebar.folders;
|
||||||
aWindowData.spaces = sidebar.spaces;
|
aWindowData.spaces = sidebar.spaces;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -599,9 +621,10 @@ export class nsZenSessionManager {
|
|||||||
this.#restoreWindowData(newWindow);
|
this.#restoreWindowData(newWindow);
|
||||||
}
|
}
|
||||||
newWindow.tabs = this.#filterUnusedTabs(newWindow.tabs || []);
|
newWindow.tabs = this.#filterUnusedTabs(newWindow.tabs || []);
|
||||||
if (!lazy.gWindowSyncEnabled) {
|
if (!lazy.gWindowSyncEnabled || lazy.gSyncOnlyPinnedTabs) {
|
||||||
// Don't bring over any unpinned tabs if window sync is disabled.
|
// Don't bring over any unpinned tabs if window sync is disabled or if syncing only pinned tabs.
|
||||||
newWindow.tabs = newWindow.tabs.filter((tab) => tab.pinned);
|
newWindow.tabs = newWindow.tabs.filter((tab) => tab.pinned);
|
||||||
|
newWindow.groups = newWindow.groups?.filter((group) => group.pinned);
|
||||||
}
|
}
|
||||||
|
|
||||||
// These are window-specific from the previous window state that
|
// These are window-specific from the previous window state that
|
||||||
|
|||||||
@@ -19,6 +19,12 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
|||||||
});
|
});
|
||||||
|
|
||||||
XPCOMUtils.defineLazyPreferenceGetter(lazy, "gWindowSyncEnabled", "zen.window-sync.enabled", true);
|
XPCOMUtils.defineLazyPreferenceGetter(lazy, "gWindowSyncEnabled", "zen.window-sync.enabled", true);
|
||||||
|
XPCOMUtils.defineLazyPreferenceGetter(
|
||||||
|
lazy,
|
||||||
|
"gSyncOnlyPinnedTabs",
|
||||||
|
"zen.window-sync.sync-only-pinned-tabs",
|
||||||
|
true
|
||||||
|
);
|
||||||
XPCOMUtils.defineLazyPreferenceGetter(lazy, "gShouldLog", "zen.window-sync.log", true);
|
XPCOMUtils.defineLazyPreferenceGetter(lazy, "gShouldLog", "zen.window-sync.log", true);
|
||||||
|
|
||||||
const OBSERVING = ["browser-window-before-show", "sessionstore-windows-restored"];
|
const OBSERVING = ["browser-window-before-show", "sessionstore-windows-restored"];
|
||||||
@@ -241,7 +247,7 @@ class nsZenWindowSync {
|
|||||||
if (tab.pinned && !tab._zenPinnedInitialState) {
|
if (tab.pinned && !tab._zenPinnedInitialState) {
|
||||||
await this.setPinnedTabState(tab);
|
await this.setPinnedTabState(tab);
|
||||||
}
|
}
|
||||||
if (!lazy.gWindowSyncEnabled) {
|
if (!lazy.gWindowSyncEnabled || (lazy.gSyncOnlyPinnedTabs && !tab.pinned)) {
|
||||||
tab._zenContentsVisible = true;
|
tab._zenContentsVisible = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -918,7 +924,9 @@ class nsZenWindowSync {
|
|||||||
// Ignore previous tabs that are still "active". These scenarios could happen for example,
|
// Ignore previous tabs that are still "active". These scenarios could happen for example,
|
||||||
// when selecting on a split view tab that was already active.
|
// when selecting on a split view tab that was already active.
|
||||||
if (aPreviousTab?._zenContentsVisible && !activeTabs.includes(aPreviousTab)) {
|
if (aPreviousTab?._zenContentsVisible && !activeTabs.includes(aPreviousTab)) {
|
||||||
let tabsToSwap = aPreviousTab.splitView ? aPreviousTab.group.tabs : [aPreviousTab];
|
let tabsToSwap = aPreviousTab.group?.hasAttribute("split-view-group")
|
||||||
|
? aPreviousTab.group.tabs
|
||||||
|
: [aPreviousTab];
|
||||||
for (const tab of tabsToSwap) {
|
for (const tab of tabsToSwap) {
|
||||||
const otherTabToShow = this.#getActiveTabFromOtherWindows(aWindow, tab.id, (t) =>
|
const otherTabToShow = this.#getActiveTabFromOtherWindows(aWindow, tab.id, (t) =>
|
||||||
t?.splitView ? t.group.tabs.some((st) => st.selected) : t?.selected
|
t?.splitView ? t.group.tabs.some((st) => st.selected) : t?.selected
|
||||||
@@ -953,6 +961,9 @@ class nsZenWindowSync {
|
|||||||
*/
|
*/
|
||||||
#delegateGenericSyncEvent(aEvent, flags = 0) {
|
#delegateGenericSyncEvent(aEvent, flags = 0) {
|
||||||
const item = aEvent.target;
|
const item = aEvent.target;
|
||||||
|
if (lazy.gSyncOnlyPinnedTabs && !item.pinned) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.#syncItemForAllWindows(item, flags);
|
this.#syncItemForAllWindows(item, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1089,16 +1100,19 @@ class nsZenWindowSync {
|
|||||||
|
|
||||||
/* Mark: Event Handlers */
|
/* Mark: Event Handlers */
|
||||||
|
|
||||||
on_TabOpen(aEvent) {
|
on_TabOpen(aEvent, { duringPinning = false } = {}) {
|
||||||
const tab = aEvent.target;
|
const tab = aEvent.target;
|
||||||
const window = tab.ownerGlobal;
|
const window = tab.ownerGlobal;
|
||||||
const isUnsyncedWindow = window.gZenWorkspaces.privateWindowOrDisabled;
|
const isUnsyncedWindow = window.gZenWorkspaces.privateWindowOrDisabled;
|
||||||
if (tab.id) {
|
if (tab.id && !duringPinning) {
|
||||||
// This tab was opened as part of a sync operation.
|
// This tab was opened as part of a sync operation.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
tab._zenContentsVisible = true;
|
tab._zenContentsVisible = true;
|
||||||
tab.id = this.#newTabSyncId;
|
tab.id = this.#newTabSyncId;
|
||||||
|
if (lazy.gSyncOnlyPinnedTabs && !tab.pinned) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (isUnsyncedWindow || !lazy.gWindowSyncEnabled) {
|
if (isUnsyncedWindow || !lazy.gWindowSyncEnabled) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1116,6 +1130,9 @@ class nsZenWindowSync {
|
|||||||
SYNC_FLAG_ICON | SYNC_FLAG_LABEL | SYNC_FLAG_MOVE
|
SYNC_FLAG_ICON | SYNC_FLAG_LABEL | SYNC_FLAG_MOVE
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
if (duringPinning && tab?.splitView) {
|
||||||
|
this.on_ZenSplitViewTabsSplit({ target: tab.group });
|
||||||
|
}
|
||||||
this.#maybeFlushTabState(tab);
|
this.#maybeFlushTabState(tab);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1137,7 +1154,8 @@ class nsZenWindowSync {
|
|||||||
}
|
}
|
||||||
|
|
||||||
on_TabMove(aEvent) {
|
on_TabMove(aEvent) {
|
||||||
return this.#delegateGenericSyncEvent(aEvent, SYNC_FLAG_MOVE);
|
this.#delegateGenericSyncEvent(aEvent, SYNC_FLAG_MOVE);
|
||||||
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
on_TabPinned(aEvent) {
|
on_TabPinned(aEvent) {
|
||||||
@@ -1149,7 +1167,14 @@ class nsZenWindowSync {
|
|||||||
if (!tab._zenPinnedInitialState) {
|
if (!tab._zenPinnedInitialState) {
|
||||||
tabStatePromise = this.setPinnedTabState(tab);
|
tabStatePromise = this.setPinnedTabState(tab);
|
||||||
}
|
}
|
||||||
return Promise.all([tabStatePromise, this.on_TabMove(aEvent)]);
|
return Promise.all([
|
||||||
|
tabStatePromise,
|
||||||
|
this.on_TabMove(aEvent).then(() => {
|
||||||
|
if (lazy.gSyncOnlyPinnedTabs) {
|
||||||
|
this.on_TabOpen({ target: tab }, { duringPinning: true });
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
on_TabUnpinned(aEvent) {
|
on_TabUnpinned(aEvent) {
|
||||||
@@ -1160,7 +1185,11 @@ class nsZenWindowSync {
|
|||||||
delete targetTab._zenPinnedInitialState;
|
delete targetTab._zenPinnedInitialState;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return this.on_TabMove(aEvent);
|
return this.on_TabMove(aEvent).then(() => {
|
||||||
|
if (lazy.gSyncOnlyPinnedTabs) {
|
||||||
|
this.on_TabClose({ target: tab });
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
on_TabAddedToEssentials(aEvent) {
|
on_TabAddedToEssentials(aEvent) {
|
||||||
@@ -1351,4 +1380,6 @@ class nsZenWindowSync {
|
|||||||
|
|
||||||
// eslint-disable-next-line mozilla/valid-lazy
|
// eslint-disable-next-line mozilla/valid-lazy
|
||||||
export const gWindowSyncEnabled = lazy.gWindowSyncEnabled;
|
export const gWindowSyncEnabled = lazy.gWindowSyncEnabled;
|
||||||
|
// eslint-disable-next-line mozilla/valid-lazy
|
||||||
|
export const gSyncOnlyPinnedTabs = lazy.gSyncOnlyPinnedTabs;
|
||||||
export const ZenWindowSync = new nsZenWindowSync();
|
export const ZenWindowSync = new nsZenWindowSync();
|
||||||
|
|||||||
@@ -560,9 +560,6 @@ class nsZenPinnedTabManager extends nsZenDOMOperatedFeature {
|
|||||||
|
|
||||||
// eslint-disable-next-line complexity
|
// eslint-disable-next-line complexity
|
||||||
moveToAnotherTabContainerIfNecessary(event, draggedTab, movingTabs, dropIndex) {
|
moveToAnotherTabContainerIfNecessary(event, draggedTab, movingTabs, dropIndex) {
|
||||||
if (!this.enabled) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
let newIndex = dropIndex;
|
let newIndex = dropIndex;
|
||||||
let fromDifferentWindow = false;
|
let fromDifferentWindow = false;
|
||||||
movingTabs = Array.from(movingTabs || draggedTab)
|
movingTabs = Array.from(movingTabs || draggedTab)
|
||||||
|
|||||||
@@ -209,7 +209,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
:root[zen-unsynced-window="true"] & {
|
:root[zen-unsynced-window="true"] & {
|
||||||
transform: translateY(-4px);
|
display: none !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1130,7 +1130,7 @@ class nsZenWorkspaces {
|
|||||||
return (
|
return (
|
||||||
!window.toolbar.visible ||
|
!window.toolbar.visible ||
|
||||||
Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab") ||
|
Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab") ||
|
||||||
this.privateWindowOrDisabled
|
(this.privateWindowOrDisabled && !this.isPrivateWindow)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2436,7 +2436,8 @@ class nsZenWorkspaces {
|
|||||||
if (!this.currentWindowIsSyncing) {
|
if (!this.currentWindowIsSyncing) {
|
||||||
containerTabId = parseInt(gBrowser.selectedTab.getAttribute("usercontextid")) || 0;
|
containerTabId = parseInt(gBrowser.selectedTab.getAttribute("usercontextid")) || 0;
|
||||||
let label = ContextualIdentityService.getUserContextLabel(containerTabId) || "Default";
|
let label = ContextualIdentityService.getUserContextLabel(containerTabId) || "Default";
|
||||||
name = this.isPrivateWindow ? "Private " + name : label;
|
name = this.isPrivateWindow ? "Incognito" : label;
|
||||||
|
icon = gZenEmojiPicker.getSVGURL("eye.svg");
|
||||||
}
|
}
|
||||||
let workspace = {
|
let workspace = {
|
||||||
uuid: gZenUIManager.generateUuidv4(),
|
uuid: gZenUIManager.generateUuidv4(),
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
"binaryName": "zen",
|
"binaryName": "zen",
|
||||||
"version": {
|
"version": {
|
||||||
"product": "firefox",
|
"product": "firefox",
|
||||||
"version": "147.0.2",
|
"version": "147.0.3",
|
||||||
"candidate": "147.0.2",
|
"candidate": "147.0.3",
|
||||||
"candidateBuild": 1
|
"candidateBuild": 1
|
||||||
},
|
},
|
||||||
"buildOptions": {
|
"buildOptions": {
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
"brandShortName": "Zen",
|
"brandShortName": "Zen",
|
||||||
"brandFullName": "Zen Browser",
|
"brandFullName": "Zen Browser",
|
||||||
"release": {
|
"release": {
|
||||||
"displayVersion": "1.18.4b",
|
"displayVersion": "1.18.5b",
|
||||||
"github": {
|
"github": {
|
||||||
"repo": "zen-browser/desktop"
|
"repo": "zen-browser/desktop"
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user