mirror of
https://github.com/zen-browser/desktop.git
synced 2026-05-28 07:45:09 +00:00
Compare commits
96 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a6839cfbf7 | ||
|
|
6e71a23ed8 | ||
|
|
368cb06d77 | ||
|
|
d28622e749 | ||
|
|
84679f912d | ||
|
|
b1ef36c670 | ||
|
|
c28d6520d6 | ||
|
|
97078b42ac | ||
|
|
29eae92fcb | ||
|
|
124bcee596 | ||
|
|
92faf227b7 | ||
|
|
7280e03c12 | ||
|
|
dbb1e28b2f | ||
|
|
a8e245b28a | ||
|
|
a30ddc98bd | ||
|
|
6273313ce3 | ||
|
|
dd26ec1171 | ||
|
|
1d2a14f9e4 | ||
|
|
5be2ffa418 | ||
|
|
a30798a275 | ||
|
|
214fd4aff0 | ||
|
|
ddd7f165bf | ||
|
|
ae5f9060d4 | ||
|
|
362764f497 | ||
|
|
083f388176 | ||
|
|
813fc16986 | ||
|
|
86a9c17acd | ||
|
|
3d0bdbc71b | ||
|
|
119bedce30 | ||
|
|
1493c6be21 | ||
|
|
4d4d6970e3 | ||
|
|
3914d33968 | ||
|
|
c4f98b0cd8 | ||
|
|
6e728d0e2f | ||
|
|
3bd1101f7b | ||
|
|
c55126085b | ||
|
|
9a6db5fb86 | ||
|
|
8274718d0d | ||
|
|
5511defb1e | ||
|
|
894fbd6a4f | ||
|
|
5a26cb6601 | ||
|
|
2eb09f092c | ||
|
|
66081e97f6 | ||
|
|
08873b0ce7 | ||
|
|
6dce6d60e9 | ||
|
|
302e321da6 | ||
|
|
5d5d51c6f3 | ||
|
|
262209f5a3 | ||
|
|
aa4aae9e26 | ||
|
|
827b89d4e8 | ||
|
|
a1e7af81cc | ||
|
|
1db7e19037 | ||
|
|
c7db15fe9d | ||
|
|
502d3f7d94 | ||
|
|
bd0651165c | ||
|
|
af4f336bf5 | ||
|
|
bffc16ba29 | ||
|
|
7c53549076 | ||
|
|
0fe3a4af10 | ||
|
|
4d1d4ab1b6 | ||
|
|
2990de8366 | ||
|
|
76966ee1c3 | ||
|
|
4f9a932e77 | ||
|
|
f2603521e5 | ||
|
|
24f695c452 | ||
|
|
f5effd4dcd | ||
|
|
b5bb7d7c8b | ||
|
|
604365dd38 | ||
|
|
466d089fc0 | ||
|
|
e28a10f6a9 | ||
|
|
102be6cd90 | ||
|
|
6e1e1d061b | ||
|
|
43250d6d37 | ||
|
|
12f0c455d1 | ||
|
|
049c3c6f54 | ||
|
|
658ac94334 | ||
|
|
09a90099c7 | ||
|
|
051470f139 | ||
|
|
8f1cb88c11 | ||
|
|
3ef233a4c2 | ||
|
|
38fcd7e872 | ||
|
|
76f17c3a57 | ||
|
|
b5c2451525 | ||
|
|
ba2a854784 | ||
|
|
c9474cecc0 | ||
|
|
531be839c9 | ||
|
|
226486b973 | ||
|
|
5a137c95e5 | ||
|
|
e6154ceb99 | ||
|
|
1ea5d2fa6f | ||
|
|
97d5ebc21e | ||
|
|
442ec2a5d1 | ||
|
|
43ae672b44 | ||
|
|
84a54c9dbb | ||
|
|
6c53c3bf37 | ||
|
|
66686ab7f8 |
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@@ -368,7 +368,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x86_64, aarch64]
|
||||
needs: [linux]
|
||||
needs: [linux, build-data]
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
@@ -406,6 +406,8 @@ jobs:
|
||||
sed -i -e 's/StartupWMClass=zen/StartupWMClass=zen-twilight/g' build/AppDir/zen.desktop
|
||||
fi
|
||||
|
||||
sed -i -e 's/\$VERSION/${{ needs.build-data.outputs.version }}/g' build/AppDir/zen.desktop
|
||||
|
||||
APPDIR=build/AppDir
|
||||
tar -xvf *.tar.* && rm -rf *.tar.*
|
||||
mv zen/* $APPDIR/
|
||||
@@ -565,7 +567,7 @@ jobs:
|
||||
./zen.installer.exe/*
|
||||
./zen.installer-arm64.exe/*
|
||||
./zen.macos-universal.dmg/*
|
||||
tag_name: "twilight"
|
||||
tag_name: "twilight-1"
|
||||
name: "Twilight build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }} at ${{ needs.build-data.outputs.build_time }})"
|
||||
draft: false
|
||||
generate_release_notes: false
|
||||
|
||||
1
.github/workflows/linux-release-build.yml
vendored
1
.github/workflows/linux-release-build.yml
vendored
@@ -92,7 +92,6 @@ jobs:
|
||||
|
||||
- name: Fix Rust version
|
||||
run: |
|
||||
# Install a rust version compatible with LLVM 18
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain $(cat .rust-toolchain)
|
||||
source $HOME/.cargo/env
|
||||
|
||||
|
||||
17
.github/workflows/sync-upstream.yml
vendored
17
.github/workflows/sync-upstream.yml
vendored
@@ -73,15 +73,13 @@ jobs:
|
||||
npm run sync
|
||||
fi
|
||||
|
||||
- name: Run formatter
|
||||
if: steps.check-upstream-branch.outputs.branch_exists == 'false'
|
||||
run: |
|
||||
sudo apt install python3-autopep8
|
||||
npm run pretty
|
||||
- name: Install autopep8
|
||||
run: sudo apt install python3-autopep8
|
||||
|
||||
- name: Check if any files changed
|
||||
id: git-check
|
||||
run: |
|
||||
npm run pretty
|
||||
if [ -n "$(git status --porcelain)" ]; then
|
||||
echo "files_changed=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
@@ -111,6 +109,15 @@ jobs:
|
||||
if: steps.git-check.outputs.files_changed == '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
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
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/workspaces/zen-workspaces.css
|
||||
src/zen/common/styles/zen-toolbar.css
|
||||
|
||||
*.inc
|
||||
|
||||
@@ -1 +1 @@
|
||||
1.83
|
||||
1.89
|
||||
@@ -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 `147.0.2`! 🚀
|
||||
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 147.0.2`!
|
||||
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `147.0.4`! 🚀
|
||||
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 148.0`!
|
||||
|
||||
### Contributing
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ Terminal=false
|
||||
X-MultipleArgs=false
|
||||
Keywords=Internet;WWW;Browser;Web;Explorer;
|
||||
Actions=new-window;new-private-window;profilemanager;
|
||||
X-AppImage-Version=$VERSION
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name=Open a New Window
|
||||
|
||||
@@ -1 +1 @@
|
||||
7712a9ac90683965f71be525fe2827467632715d
|
||||
b7d21837fa8fcae98dab2a4f016cc9fb3053903d
|
||||
@@ -25,6 +25,7 @@ finish-args:
|
||||
- --filesystem=xdg-run/speech-dispatcher:ro
|
||||
- --device=all
|
||||
- --talk-name=org.freedesktop.FileManager1
|
||||
- --talk-name=org.freedesktop.Notifications
|
||||
- --system-talk-name=org.freedesktop.NetworkManager
|
||||
- --talk-name=org.a11y.Bus
|
||||
- --talk-name=org.gtk.vfs.*
|
||||
@@ -62,12 +63,6 @@ modules:
|
||||
strip-components: 0
|
||||
only-arches:
|
||||
- x86_64
|
||||
x-checker-data:
|
||||
type: json
|
||||
url: https://api.github.com/repos/zen-browser/desktop/releases/latest
|
||||
version-query: .tag_name
|
||||
url-query: .assets[] | select(.name=="zen.linux-x86_64.tar.xz") | .browser_download_url
|
||||
is-main-source: true
|
||||
|
||||
- type: archive
|
||||
url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-aarch64.tar.xz
|
||||
@@ -75,12 +70,6 @@ modules:
|
||||
strip-components: 0
|
||||
only-arches:
|
||||
- aarch64
|
||||
x-checker-data:
|
||||
type: json
|
||||
url: https://api.github.com/repos/zen-browser/desktop/releases/latest
|
||||
version-query: .tag_name
|
||||
url-query: .assets[] | select(.name=="zen.linux-aarch64.tar.xz") | .browser_download_url
|
||||
is-main-source: true
|
||||
|
||||
- type: archive
|
||||
url: https://github.com/zen-browser/flatpak/releases/download/{version}/archive.tar
|
||||
|
||||
@@ -9,9 +9,6 @@ ac_add_options --with-app-basename=Zen
|
||||
# Localization (Must be an absolute path)
|
||||
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_BRANDING_DIRECTORY=${brandingDir}
|
||||
export MOZ_OFFICIAL_BRANDING_DIRECTORY=${brandingDir}
|
||||
@@ -85,6 +82,11 @@ if test "$ZEN_RELEASE"; then
|
||||
export MOZ_PACKAGE_JSSHELL=1
|
||||
|
||||
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
|
||||
|
||||
ac_add_options --enable-unverified-updates
|
||||
|
||||
@@ -30,17 +30,11 @@ if test "$ZEN_RELEASE"; then
|
||||
fi
|
||||
|
||||
# Disable DMD and ELF hacks, enable linker lld
|
||||
ac_add_options --disable-dmd
|
||||
ac_add_options --enable-linker=lld
|
||||
ac_add_options --disable-elf-hack
|
||||
ac_add_options --disable-necko-wifi
|
||||
|
||||
# Stripping options for release builds
|
||||
ac_add_options --enable-install-strip
|
||||
ac_add_options --enable-strip
|
||||
export STRIP_FLAGS="--strip-debug --strip-unneeded"
|
||||
fi
|
||||
|
||||
# Common options
|
||||
ac_add_options --enable-alsa
|
||||
ac_add_options --enable-pulseaudio
|
||||
|
||||
@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = Commuta l'emmagatzematge
|
||||
zen-devtools-toggle-dom-shortcut = Commuta el DOM
|
||||
zen-devtools-toggle-accessibility-shortcut = Commuta l'accessibilitat
|
||||
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 =
|
||||
.label = Fosca
|
||||
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-accessibility-shortcut = Toglo Hygyrchedd
|
||||
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
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
zen-panel-ui-current-profile-text = proffil cyfredol
|
||||
unified-extensions-description = Mae ychwanegiadau'n cael ei defnyddio er mwyn ychwanegu fwy o weithrediadau i { -brand-short-name }.
|
||||
zen-panel-ui-current-profile-text = y proffil cyfredol
|
||||
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 =
|
||||
.label = Ailosod Tab wedi'i Binio
|
||||
.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-tooltip =
|
||||
.title = Ailgychwyn yn y Modd Diogel
|
||||
zen-window-sync-migration-dialog-title = Keep Your Windows in Sync
|
||||
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-learn-more = Learn More
|
||||
zen-window-sync-migration-dialog-accept = Got It
|
||||
zen-window-sync-migration-dialog-title = Cadw Eich Ffenestr Wedi'u Cydweddu
|
||||
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 = Dysgu Rhagor
|
||||
zen-window-sync-migration-dialog-accept = Iawn
|
||||
|
||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
||||
zen-menubar-appearance-dark =
|
||||
.label = Tywyll
|
||||
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 =
|
||||
.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 =
|
||||
.label = Ctrl+Tab cycles within Essential or Workspace tabs only
|
||||
zen-tabs-cycle-ignore-pending-tabs =
|
||||
|
||||
@@ -6,7 +6,11 @@ zen-panel-ui-current-profile-text = current profile
|
||||
|
||||
unified-extensions-description = Extensions are used to bring more extra functionality into { -brand-short-name }.
|
||||
tab-context-zen-reset-pinned-tab =
|
||||
.label = Reset Pinned Tab
|
||||
.label =
|
||||
{ $isEssential ->
|
||||
[true] Reset Essential Tab
|
||||
*[false] Reset Pinned Tab
|
||||
}
|
||||
.accesskey = R
|
||||
tab-context-zen-add-essential =
|
||||
.label = Add to Essentials
|
||||
@@ -16,7 +20,11 @@ tab-context-zen-remove-essential =
|
||||
.label = Remove from Essentials
|
||||
.accesskey = R
|
||||
tab-context-zen-replace-pinned-url-with-current =
|
||||
.label = Replace Pinned URL with Current
|
||||
.label =
|
||||
{ $isEssential ->
|
||||
[true] Replace Essential URL with Current
|
||||
*[false] Replace Pinned URL with Current
|
||||
}
|
||||
.accesskey = C
|
||||
tab-context-zen-edit-title =
|
||||
.label = Change Label...
|
||||
@@ -137,3 +145,7 @@ zen-window-sync-migration-dialog-title = Keep Your Windows in Sync
|
||||
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-learn-more = Learn More
|
||||
zen-window-sync-migration-dialog-accept = Got It
|
||||
|
||||
zen-appmenu-new-blank-window =
|
||||
.label = New blank window
|
||||
|
||||
|
||||
98
locales/en-US/browser/browser/zen-live-folders.ftl
Normal file
98
locales/en-US/browser/browser/zen-live-folders.ftl
Normal file
@@ -0,0 +1,98 @@
|
||||
# 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-live-folder-options =
|
||||
.label = Live Folder Options
|
||||
|
||||
zen-live-folder-last-fetched =
|
||||
.label = Last fetch: { $time }
|
||||
|
||||
zen-live-folder-refresh =
|
||||
.label = Refresh
|
||||
|
||||
zen-live-folder-github-option-author-self =
|
||||
.label = Created by Me
|
||||
|
||||
zen-live-folder-github-option-assigned-self =
|
||||
.label = Assigned to Me
|
||||
|
||||
zen-live-folder-github-option-review-requested =
|
||||
.label = Review Requests
|
||||
|
||||
zen-live-folder-type-rss =
|
||||
.label = RSS Feed
|
||||
|
||||
zen-live-folder-option-fetch-interval =
|
||||
.label = Fetch Interval
|
||||
|
||||
zen-live-folder-fetch-interval-mins =
|
||||
.label = { $mins ->
|
||||
[one] 1 minute
|
||||
*[other] { $mins } minutes
|
||||
}
|
||||
|
||||
zen-live-folder-fetch-interval-hours =
|
||||
.label = { $hours ->
|
||||
[one] 1 hour
|
||||
*[other] { $hours } hours
|
||||
}
|
||||
|
||||
zen-live-folder-rss-option-time-range =
|
||||
.label = Time Range
|
||||
|
||||
zen-live-folder-time-range-hours =
|
||||
.label = { $hours ->
|
||||
[one] Last hour
|
||||
*[other] Last { $hours } hours
|
||||
}
|
||||
|
||||
zen-live-folder-time-range-all-time =
|
||||
.label = All time
|
||||
|
||||
zen-live-folder-time-range-days =
|
||||
.label = { $days ->
|
||||
[one] Last day
|
||||
*[other] Last { $days } days
|
||||
}
|
||||
|
||||
zen-live-folder-rss-option-item-limit =
|
||||
.label = Item Limit
|
||||
|
||||
zen-live-folder-rss-option-feed-url =
|
||||
.label = Feed URL
|
||||
|
||||
zen-live-folder-rss-prompt-feed-url = Please enter the feed URL
|
||||
|
||||
zen-live-folder-rss-option-item-limit-num =
|
||||
.label = { $limit } items
|
||||
|
||||
zen-live-folder-failed-fetch =
|
||||
.label = Failed to update
|
||||
.tooltiptext = Failed to update. Try again.
|
||||
|
||||
zen-live-folder-github-no-auth =
|
||||
.label = Not signed in to GitHub
|
||||
.tooltiptext = Sign back in to GitHub.
|
||||
|
||||
zen-live-folder-github-no-filter =
|
||||
.label = Filter is not set
|
||||
.tooltiptext = No filter set, nothing will be fetched.
|
||||
|
||||
zen-live-folder-rss-invalid-url-title = Failed to create the Live Folder
|
||||
zen-live-folder-rss-invalid-url-description = The feed URL is invalid. Check the address and try again
|
||||
|
||||
zen-live-folder-github-option-repo-filter =
|
||||
.label = Repositories
|
||||
|
||||
zen-live-folder-github-option-repo =
|
||||
.label = { $repo }
|
||||
|
||||
zen-live-folder-github-pull-requests =
|
||||
.label = Pull Requests
|
||||
|
||||
zen-live-folder-github-issues =
|
||||
.label = Issues
|
||||
|
||||
zen-live-folder-github-option-repo-list-note =
|
||||
.label = This list is generated based on your currently active pull requests.
|
||||
@@ -22,5 +22,5 @@ zen-menubar-appearance-light =
|
||||
zen-menubar-appearance-dark =
|
||||
.label = Dark
|
||||
|
||||
zen-menubar-new-unsynced-window =
|
||||
.label = New blank window
|
||||
zen-menubar-new-blank-window =
|
||||
.label = New Blank Window
|
||||
|
||||
@@ -16,7 +16,4 @@ zen-split-link =
|
||||
|
||||
zen-split-view-modifier-header = Split View
|
||||
zen-split-view-modifier-activate-reallocation =
|
||||
.label = Activate reallocation
|
||||
zen-split-view-modifier-enabled-toast = Split view rearrange is ON.
|
||||
zen-split-view-modifier-enabled-toast-description = Drag and drop the view to rearrange. Press Esc to exit.
|
||||
zen-split-view-modifier-disabled-toast = Split view rearrange is OFF.
|
||||
.label = Activate reallocation
|
||||
@@ -42,4 +42,9 @@ tabbrowser-reset-pin-button =
|
||||
[one] Reset and pin tab
|
||||
*[other] Reset and pin { $tabCount } tabs
|
||||
}
|
||||
tab-reset-pin-label = Back to pinned url
|
||||
|
||||
zen-tab-sublabel =
|
||||
{ $tabSubtitle ->
|
||||
[zen-default-pinned] Back to pinned url
|
||||
*[other] { $tabSubtitle }
|
||||
}
|
||||
|
||||
@@ -13,6 +13,9 @@ zen-panel-ui-workspaces-create =
|
||||
zen-panel-ui-folder-create =
|
||||
.label = Create Folder
|
||||
|
||||
zen-panel-ui-live-folder-create =
|
||||
.label = Live Folder
|
||||
|
||||
zen-panel-ui-new-empty-split =
|
||||
.label = New Split
|
||||
|
||||
|
||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
||||
zen-menubar-appearance-dark =
|
||||
.label = Sombre
|
||||
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 =
|
||||
.label = Dorcha
|
||||
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 =
|
||||
.label = כהה
|
||||
zen-menubar-new-unsynced-window =
|
||||
.label = New Blank Window
|
||||
.label = חלון ריק חדש
|
||||
|
||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
||||
zen-menubar-appearance-dark =
|
||||
.label = Sötét
|
||||
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 =
|
||||
.label = Ctrl+Tab berputar hanya dalam tab Esensial atau Ruang Kerja
|
||||
zen-tabs-cycle-ignore-pending-tabs =
|
||||
.label = Ignore Pending tabs when cycling with Ctrl+Tab
|
||||
zen-tabs-cycle-by-attribute-warning = Ctrl+Tab will cycle by recently used order, as it is enabled
|
||||
.label = Lewati tab tak termuat saat beralih dengan Ctrl+Tab
|
||||
zen-tabs-cycle-by-attribute-warning = Ctrl+Tab akan beralih berdasarkan urutan terakhir digunakan
|
||||
zen-look-and-feel-compact-toolbar-themed =
|
||||
.label = Gunakan latar belakang bertema untuk bilah atas dalam mode ringkas
|
||||
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-accessibility-shortcut = Ubah Aksesibilitas
|
||||
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-more = Selengkapnya
|
||||
zen-generic-next = Lanjut
|
||||
zen-essentials-promo-label = Add to Essentials
|
||||
zen-essentials-promo-sublabel = Keep your favorite tabs just a click away
|
||||
zen-essentials-promo-label = Tambahkan ke Essentials
|
||||
zen-essentials-promo-sublabel = Akses tab favorit Anda hanya dengan sekali klik
|
||||
# These labels will be used for the site data panel settings
|
||||
zen-site-data-setting-allow = Diizinkan
|
||||
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-tooltip =
|
||||
.title = Mulai Ulang dalam Mode Aman
|
||||
zen-window-sync-migration-dialog-title = Keep Your Windows in Sync
|
||||
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-learn-more = Learn More
|
||||
zen-window-sync-migration-dialog-accept = Got It
|
||||
zen-window-sync-migration-dialog-title = Jaga Jendela Anda Tetap Sinkron
|
||||
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 = Pelajari Lebih Lanjut
|
||||
zen-window-sync-migration-dialog-accept = Oke!
|
||||
|
||||
@@ -4,19 +4,19 @@
|
||||
|
||||
zen-menubar-toggle-pinned-tabs =
|
||||
.label =
|
||||
{ $pinnedAreCollapsed ->
|
||||
[true] Expand Pinned Tabs
|
||||
*[false] Collapse Pinned Tabs
|
||||
{ $pinnedAreCollapsed ->
|
||||
[true] Perluas Tab yang Disematkan
|
||||
*[false] Ciutkan Tab yang Disematkan
|
||||
}
|
||||
zen-menubar-appearance =
|
||||
.label = Appearance
|
||||
.label = Tampilan
|
||||
zen-menubar-appearance-description =
|
||||
.label = Websites will use:
|
||||
.label = Situs web akan menggunakan:
|
||||
zen-menubar-appearance-auto =
|
||||
.label = Automatic
|
||||
.label = Otomatis
|
||||
zen-menubar-appearance-light =
|
||||
.label = Light
|
||||
.label = Terang
|
||||
zen-menubar-appearance-dark =
|
||||
.label = Dark
|
||||
.label = Gelap
|
||||
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-spaces-label =
|
||||
.label = Spaces
|
||||
.label = Ruang
|
||||
zen-panel-ui-workspaces-create =
|
||||
.label = Buat Ruang
|
||||
zen-panel-ui-folder-create =
|
||||
.label = Buat Folder
|
||||
zen-panel-ui-new-empty-split =
|
||||
.label = New Split
|
||||
.label = Split Baru
|
||||
zen-workspaces-panel-context-delete =
|
||||
.label = Hapus Ruang
|
||||
.accesskey = D
|
||||
@@ -66,6 +66,6 @@ zen-workspaces-close-all-unpinned-tabs-title =
|
||||
.label = Bersihkan
|
||||
.tooltiptext = Tutup semua tab yang tidak disematkan
|
||||
zen-panel-ui-workspaces-change-forward =
|
||||
.label = Next Space
|
||||
.label = Ruang Selanjutnya
|
||||
zen-panel-ui-workspaces-change-back =
|
||||
.label = Previous Space
|
||||
.label = Ruang Sebelumnya
|
||||
|
||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
||||
zen-menubar-appearance-dark =
|
||||
.label = Dökkt
|
||||
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 =
|
||||
.label = 다크
|
||||
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-accessibility-shortcut = Perjungti prieinamumą
|
||||
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-more = Daugiau
|
||||
zen-generic-next = Sekantis
|
||||
zen-essentials-promo-label = Add to Essentials
|
||||
zen-essentials-promo-sublabel = Keep your favorite tabs just a click away
|
||||
zen-essentials-promo-label = Įtraukti į būtiniausius
|
||||
zen-essentials-promo-sublabel = Laikykite mėgstamas korteles vos nuo vienu paspaudimu
|
||||
# These labels will be used for the site data panel settings
|
||||
zen-site-data-setting-allow = Leidžiama
|
||||
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-tooltip =
|
||||
.title = Paleisti iš naujo saugioje režime
|
||||
zen-window-sync-migration-dialog-title = Keep Your Windows in Sync
|
||||
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-learn-more = Learn More
|
||||
zen-window-sync-migration-dialog-accept = Got It
|
||||
zen-window-sync-migration-dialog-title = Išlaikykite savo langus sinchronizuotus
|
||||
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 = Sužinoti daugiau
|
||||
zen-window-sync-migration-dialog-accept = Supratau
|
||||
|
||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
||||
zen-menubar-appearance-dark =
|
||||
.label = Tamsų
|
||||
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 =
|
||||
.label = Escuro
|
||||
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
|
||||
.accesskey = C
|
||||
tab-context-zen-edit-title =
|
||||
.label = Change Label...
|
||||
.label = Alterar etiqueta...
|
||||
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-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
|
||||
@@ -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-tooltip =
|
||||
.title = Reiniciar em Modo de Segurança
|
||||
zen-window-sync-migration-dialog-title = Keep Your Windows in Sync
|
||||
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-title = Mantenha As Suas Janelas Sincronizadas
|
||||
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-accept = Got It
|
||||
zen-window-sync-migration-dialog-accept = Entendido
|
||||
|
||||
@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
|
||||
zen-menubar-appearance-dark =
|
||||
.label = Escuro
|
||||
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-accessibility-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-accessibility-shortcut = Växla tillgänglighetsinställningar
|
||||
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 =
|
||||
.label = Mörkt
|
||||
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-accessibility-shortcut = Erişilebilirliği Aç/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 =
|
||||
.label = Koyu
|
||||
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-accessibility-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 =
|
||||
.label = 暗色
|
||||
zen-menubar-new-unsynced-window =
|
||||
.label = 新的初始視窗
|
||||
.label = 開新初始視窗
|
||||
|
||||
@@ -49,7 +49,7 @@ zen-panel-ui-gradient-click-to-add = 點擊新增顏色
|
||||
zen-workspace-creation-name =
|
||||
.placeholder = 工作區名稱
|
||||
zen-move-tab-to-workspace-button =
|
||||
.label = 移動至……
|
||||
.label = 移動至…
|
||||
.tooltiptext = 將此視窗所有頁面移至單一工作區
|
||||
zen-workspaces-panel-context-reorder =
|
||||
.label = 排序工作區
|
||||
|
||||
6
package-lock.json
generated
6
package-lock.json
generated
@@ -5610,9 +5610,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/lodash": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
|
||||
"version": "4.17.23",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
|
||||
"integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
|
||||
@@ -63,6 +63,10 @@
|
||||
value: false
|
||||
locked: true
|
||||
|
||||
- name: browser.search.serpEventTelemetryCategorization.enabled
|
||||
value: false
|
||||
locked: true
|
||||
|
||||
- name: browser.newtabpage.activity-stream.telemetry
|
||||
value: false
|
||||
locked: true
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
value: true
|
||||
|
||||
- name: zen.folders.search.hover-delay
|
||||
value: 700 # ms
|
||||
value: 500 # ms
|
||||
|
||||
- name: zen.folders.max-subfolders
|
||||
value: 5
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
|
||||
# GTK-specific preferences
|
||||
- name: widget.gtk.rounded-bottom-corners.enabled
|
||||
value: true
|
||||
# Disabled for https://github.com/zen-browser/desktop/issues/6302,
|
||||
# also see https://bugzilla.mozilla.org/show_bug.cgi?id=1979083
|
||||
value: false
|
||||
condition: "defined(MOZ_WIDGET_GTK)"
|
||||
|
||||
- name: zen.widget.linux.transparency
|
||||
|
||||
@@ -54,3 +54,6 @@
|
||||
|
||||
- name: zen.view.draggable-sidebar
|
||||
value: true
|
||||
|
||||
- name: zen.view.overflow-webext-toolbar
|
||||
value: "@IS_TWILIGHT@"
|
||||
|
||||
@@ -13,3 +13,6 @@
|
||||
|
||||
- name: zen.window-sync.open-link-in-new-unsynced-window
|
||||
value: true
|
||||
|
||||
- name: zen.window-sync.sync-only-pinned-tabs
|
||||
value: false
|
||||
|
||||
@@ -32,6 +32,9 @@
|
||||
- name: zen.urlbar.show-pip-button
|
||||
value: false
|
||||
|
||||
- name: zen.urlbar.open-on-startup
|
||||
value: true
|
||||
|
||||
# Mark: Zen suggestions controls
|
||||
|
||||
- name: zen.urlbar.suggestions.quick-actions
|
||||
|
||||
@@ -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()
|
||||
@@ -18,10 +18,18 @@ FILE_PREFIX = """
|
||||
# This file is autogenerated by scripts/import_external_tests.py
|
||||
# Do not edit manually.
|
||||
|
||||
"""
|
||||
|
||||
BROWSER_MANIFEST_LIST_PREFIX = """
|
||||
BROWSER_CHROME_MANIFESTS += [
|
||||
"""
|
||||
|
||||
XPCSHELL_MANIFESTS_LIST_PREFIX = """
|
||||
XPCSHELL_TESTS_MANIFESTS += [
|
||||
"""
|
||||
|
||||
FILE_SUFFIX = "]"
|
||||
VALID_MANIFEST_FILES = ["browser.toml", "xpcshell.toml"]
|
||||
|
||||
|
||||
def get_tests_manifest():
|
||||
@@ -38,12 +46,17 @@ def validate_tests_path(path, files, ignore_list):
|
||||
for ignore in ignore_list:
|
||||
if ignore not in files:
|
||||
die_with_error(f"Ignore file '{ignore}' not found in tests folder '{path}'")
|
||||
if "browser.toml" not in files or "browser.js" in ignore_list:
|
||||
die_with_error(f"'browser.toml' not found in tests folder '{path}'")
|
||||
if not any(manifest_file in files for manifest_file in VALID_MANIFEST_FILES):
|
||||
die_with_error(f"None of the valid manifest files {VALID_MANIFEST_FILES} found in tests folder '{path}'")
|
||||
|
||||
|
||||
def disable_and_replace_manifest(manifest, output_path):
|
||||
toml_file = os.path.join(output_path, "browser.toml")
|
||||
toml_file = None
|
||||
for manifest_file in VALID_MANIFEST_FILES:
|
||||
candidate = os.path.join(output_path, manifest_file)
|
||||
if os.path.exists(candidate):
|
||||
toml_file = candidate
|
||||
break
|
||||
disabled_tests = manifest.get("disable", [])
|
||||
with open(toml_file, "r") as f:
|
||||
data = f.read()
|
||||
@@ -90,8 +103,17 @@ def write_moz_build_file(manifest):
|
||||
print(f"Writing moz.build file to '{moz_build_path}'")
|
||||
with open(moz_build_path, "w") as f:
|
||||
f.write(FILE_PREFIX)
|
||||
f.write(BROWSER_MANIFEST_LIST_PREFIX)
|
||||
for test_suite in manifest.keys():
|
||||
f.write(f'\t"{test_suite}/browser.toml",\n')
|
||||
# add for browser.toml first
|
||||
if not manifest[test_suite].get("xpcshell", False):
|
||||
f.write(f'\t"{test_suite}/browser.toml",\n')
|
||||
f.write(FILE_SUFFIX)
|
||||
f.write(XPCSHELL_MANIFESTS_LIST_PREFIX)
|
||||
for test_suite in manifest.keys():
|
||||
# add for xpcshell.toml
|
||||
if manifest[test_suite].get("xpcshell", False):
|
||||
f.write(f'\t"{test_suite}/xpcshell.toml",\n')
|
||||
f.write(FILE_SUFFIX)
|
||||
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ npm run import
|
||||
IGNORE_FILES=(
|
||||
"shared.nsh"
|
||||
"ignorePrefs.json"
|
||||
"moz.configure"
|
||||
)
|
||||
|
||||
# Recursively find all .patch files in the current directory and its subdirectories
|
||||
|
||||
@@ -56,7 +56,7 @@ def main():
|
||||
os.chdir(engine_dir)
|
||||
|
||||
def run_mach_with_paths(test_paths):
|
||||
command = ['./mach', 'mochitest'] + other_args + test_paths
|
||||
command = ['./mach', 'test'] + other_args + test_paths
|
||||
# Replace the current process with the mach command
|
||||
os.execvp(command[0], command)
|
||||
|
||||
|
||||
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/Cargo.lock b/Cargo.lock
|
||||
index 723445447f491058784992e66245e0e0f8e61e19..02816c1df3e20d96ce68f16970b8a6e38080533e 100644
|
||||
index abc04e6a8e1e68fa71c6de0375f8e953e6369d8b..7bdfb41e255fc12065de064162e9bf9e15d7ff12 100644
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -4214,8 +4214,6 @@ dependencies = [
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
diff --git a/Cargo.toml b/Cargo.toml
|
||||
index 35e725043bce0b39fea550e8fb2b0ae1ff752e43..abac2042d537fcc1ce26e0e3acbf98fc2975b793 100644
|
||||
index ab9eda43302a6281e59a2738170e77bb0f0b1b90..3389f1c744b56e3a6a4eb3f05b0601bed4538fa1 100644
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -237,6 +237,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" }
|
||||
@@ -240,6 +240,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" }
|
||||
# Workaround for https://github.com/rust-lang/cargo/issues/11232
|
||||
rure = { path = "third_party/rust/rure" }
|
||||
|
||||
+mime_guess = { path = "third_party/rust/mime_guess" }
|
||||
+
|
||||
# Patch `unicode-width` 0.1.* to 0.2.
|
||||
unicode-width = { path = "build/rust/unicode-width" }
|
||||
|
||||
# To-be-published changes.
|
||||
unicode-bidi = { git = "https://github.com/servo/unicode-bidi", rev = "ca612daf1c08c53abe07327cb3e6ef6e0a760f0c" }
|
||||
nss-gk-api = { git = "https://github.com/beurdouche/nss-gk-api", rev = "e48a946811ffd64abc78de3ee284957d8d1c0d63" }
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
|
||||
index 288a79e5fb4da24cffcb30fb4b8adc9604b15d26..bf9bd3e666dfb6298dbeec0546cae223a7bc68f0 100644
|
||||
index 0186e3a6508fc8e40f93619d8b3e5a0c003cbd4a..1f4fa115e591cfbe3e23d4ce880be66277a50a26 100644
|
||||
--- a/browser/base/content/browser-init.js
|
||||
+++ b/browser/base/content/browser-init.js
|
||||
@@ -200,6 +200,7 @@ var gBrowserInit = {
|
||||
@@ -243,6 +243,7 @@ var gBrowserInit = {
|
||||
},
|
||||
|
||||
onLoad() {
|
||||
@@ -10,7 +10,7 @@ index 288a79e5fb4da24cffcb30fb4b8adc9604b15d26..bf9bd3e666dfb6298dbeec0546cae223
|
||||
gBrowser.addEventListener("DOMUpdateBlockedPopups", e =>
|
||||
PopupAndRedirectBlockerObserver.handleEvent(e)
|
||||
);
|
||||
@@ -375,6 +376,7 @@ var gBrowserInit = {
|
||||
@@ -433,6 +434,7 @@ var gBrowserInit = {
|
||||
|
||||
this._handleURIToLoad();
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
|
||||
index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae031fe6119 100644
|
||||
index e2e0526a0ddd617291f1f6c17bcfb807954b481f..c3d2afff6eaa788309d1c1a7fa40f9b8b4f0fffe 100644
|
||||
--- a/browser/base/content/browser.js
|
||||
+++ b/browser/base/content/browser.js
|
||||
@@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, {
|
||||
@@ -10,7 +10,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
|
||||
DevToolsSocketStatus:
|
||||
"resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs",
|
||||
DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs",
|
||||
@@ -819,7 +820,12 @@ function UpdateBackForwardCommands(aWebNavigation) {
|
||||
@@ -814,7 +815,12 @@ function UpdateBackForwardCommands(aWebNavigation) {
|
||||
|
||||
var backDisabled = backCommand.hasAttribute("disabled");
|
||||
var forwardDisabled = forwardCommand.hasAttribute("disabled");
|
||||
@@ -24,7 +24,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
|
||||
if (backDisabled) {
|
||||
backCommand.removeAttribute("disabled");
|
||||
} else {
|
||||
@@ -2305,6 +2311,8 @@ var XULBrowserWindow = {
|
||||
@@ -2301,6 +2307,8 @@ var XULBrowserWindow = {
|
||||
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
|
||||
TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
|
||||
|
||||
@@ -33,7 +33,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
|
||||
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
|
||||
|
||||
if (!gMultiProcessBrowser) {
|
||||
@@ -3818,7 +3826,7 @@ function warnAboutClosingWindow() {
|
||||
@@ -3821,7 +3829,7 @@ function warnAboutClosingWindow() {
|
||||
|
||||
if (!isPBWindow && !toolbar.visible) {
|
||||
return gBrowser.warnAboutClosingTabs(
|
||||
@@ -42,7 +42,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
|
||||
gBrowser.closingTabsEnum.ALL
|
||||
);
|
||||
}
|
||||
@@ -3858,7 +3866,7 @@ function warnAboutClosingWindow() {
|
||||
@@ -3861,7 +3869,7 @@ function warnAboutClosingWindow() {
|
||||
return (
|
||||
isPBWindow ||
|
||||
gBrowser.warnAboutClosingTabs(
|
||||
@@ -51,7 +51,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
|
||||
gBrowser.closingTabsEnum.ALL
|
||||
)
|
||||
);
|
||||
@@ -3883,7 +3891,7 @@ function warnAboutClosingWindow() {
|
||||
@@ -3886,7 +3894,7 @@ function warnAboutClosingWindow() {
|
||||
AppConstants.platform != "macosx" ||
|
||||
isPBWindow ||
|
||||
gBrowser.warnAboutClosingTabs(
|
||||
@@ -60,7 +60,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
|
||||
gBrowser.closingTabsEnum.ALL
|
||||
)
|
||||
);
|
||||
@@ -4806,6 +4814,9 @@ var ConfirmationHint = {
|
||||
@@ -4809,6 +4817,9 @@ var ConfirmationHint = {
|
||||
MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl");
|
||||
MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl");
|
||||
document.l10n.setAttributes(this._message, messageId, options.l10nArgs);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc
|
||||
index 139f7c2617f5e4843e0072435818c859def2f6bb..6ac1467b4117e2d76102d6977f13268827b4588f 100644
|
||||
index df768aaa77a6986260da5052ed14c8403d48de6b..a30e3a2784a6215c959d23802b5c2c966f89ca10 100644
|
||||
--- a/browser/base/content/browser-sets.inc
|
||||
+++ b/browser/base/content/browser-sets.inc
|
||||
@@ -413,3 +413,4 @@
|
||||
@@ -414,3 +414,4 @@
|
||||
internal="true"/>
|
||||
#endif
|
||||
</keyset>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/browser-sets.js b/browser/base/content/browser-sets.js
|
||||
index 94a05a510204c027e482fda33deaf3dc0d7471c9..79d37a7c7f29739d3ad2d9f6a3b3b8d638836b10 100644
|
||||
index 50845ebd925955bf9646fc499b9828eccbf266ef..5482a24576ebcd4382409cae01a4c6bcbd88a96c 100644
|
||||
--- a/browser/base/content/browser-sets.js
|
||||
+++ b/browser/base/content/browser-sets.js
|
||||
@@ -266,7 +266,7 @@ document.addEventListener(
|
||||
@@ -270,7 +270,7 @@ document.addEventListener(
|
||||
}
|
||||
});
|
||||
|
||||
@@ -11,3 +11,12 @@ index 94a05a510204c027e482fda33deaf3dc0d7471c9..79d37a7c7f29739d3ad2d9f6a3b3b8d6
|
||||
const SIDEBAR_REVAMP_PREF = "sidebar.revamp";
|
||||
const SIDEBAR_REVAMP_ENABLED = Services.prefs.getBoolPref(
|
||||
SIDEBAR_REVAMP_PREF,
|
||||
@@ -308,6 +308,8 @@ document.addEventListener(
|
||||
panel: SidebarController.currentID,
|
||||
opened: SidebarController._state.launcherExpanded,
|
||||
});
|
||||
+ } else {
|
||||
+ SidebarController.toggle();
|
||||
}
|
||||
break;
|
||||
case "key_gotoHistory":
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js
|
||||
index 8369e546866aa313e62f808acb8d51afa8da4f9b..7a4b20dd5922425cebfac542893a52cd68a26449 100644
|
||||
index 6d2052e060896bb5e91ba84c15bf14c969340935..6ceef1806e2d88cd7e2ebc867d633e9148f3b298 100644
|
||||
--- a/browser/base/content/browser-siteIdentity.js
|
||||
+++ b/browser/base/content/browser-siteIdentity.js
|
||||
@@ -451,11 +451,6 @@ var gIdentityHandler = {
|
||||
@@ -464,11 +464,6 @@ var gIdentityHandler = {
|
||||
// avoid a pretty ugly transition. Also hide it even
|
||||
// if the update resulted in no site data, to keep the
|
||||
// illusion that clicking the button had an effect.
|
||||
@@ -14,7 +14,7 @@ index 8369e546866aa313e62f808acb8d51afa8da4f9b..7a4b20dd5922425cebfac542893a52cd
|
||||
|
||||
let baseDomain = SiteDataManager.getBaseDomainFromHost(this._uri.host);
|
||||
if (SiteDataManager.promptSiteDataRemoval(window, [baseDomain])) {
|
||||
@@ -832,7 +827,7 @@ var gIdentityHandler = {
|
||||
@@ -847,7 +842,7 @@ var gIdentityHandler = {
|
||||
// This is a secure internal Firefox page.
|
||||
this._identityBox.className = "chromeUI";
|
||||
let brandBundle = document.getElementById("bundle_brand");
|
||||
@@ -23,7 +23,7 @@ index 8369e546866aa313e62f808acb8d51afa8da4f9b..7a4b20dd5922425cebfac542893a52cd
|
||||
} else if (this._pageExtensionPolicy) {
|
||||
// This is a WebExtension page.
|
||||
this._identityBox.className = "extensionPage";
|
||||
@@ -1161,6 +1156,12 @@ var gIdentityHandler = {
|
||||
@@ -1190,6 +1185,12 @@ var gIdentityHandler = {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
|
||||
index ac82dcd286b5502d1ba38ed740813db08941eb7b..c26b3f0468ee6acd7716d4e8a24ad8cc84fce186 100644
|
||||
index 832d98f911e0bd0e231421332a521bfefea72ef8..a9955256c81b252fe0527ae5857c9283e2518274 100644
|
||||
--- a/browser/base/content/browser.xhtml
|
||||
+++ b/browser/base/content/browser.xhtml
|
||||
@@ -19,6 +19,7 @@
|
||||
@@ -10,7 +10,7 @@ index ac82dcd286b5502d1ba38ed740813db08941eb7b..c26b3f0468ee6acd7716d4e8a24ad8cc
|
||||
persist="screenX screenY width height sizemode"
|
||||
data-l10n-sync="true">
|
||||
<head>
|
||||
@@ -99,8 +100,10 @@
|
||||
@@ -100,8 +101,10 @@
|
||||
|
||||
<title data-l10n-id="browser-main-window-default-title"></title>
|
||||
|
||||
@@ -21,7 +21,7 @@ index ac82dcd286b5502d1ba38ed740813db08941eb7b..c26b3f0468ee6acd7716d4e8a24ad8cc
|
||||
</head>
|
||||
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
# All sets except for popupsets (commands, keys, and stringbundles)
|
||||
@@ -133,9 +136,11 @@
|
||||
@@ -134,9 +137,11 @@
|
||||
</vbox>
|
||||
</html:template>
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml
|
||||
index 79b604c5965ba03762acbf085c9288c73001ec24..d75d5481e5de93c592850e39d4b0b4fd07e12678 100644
|
||||
index 0d73eb17b340001312a885ea10f5d6ad871f14d2..475824a0f9a4bbc15dc9bc7f1d2a09a51e58bc65 100644
|
||||
--- a/browser/base/content/main-popupset.inc.xhtml
|
||||
+++ b/browser/base/content/main-popupset.inc.xhtml
|
||||
@@ -226,6 +226,10 @@
|
||||
@@ -234,6 +234,10 @@
|
||||
hidden="true"
|
||||
tabspecific="true"
|
||||
aria-labelledby="editBookmarkPanelTitle">
|
||||
@@ -13,7 +13,7 @@ index 79b604c5965ba03762acbf085c9288c73001ec24..d75d5481e5de93c592850e39d4b0b4fd
|
||||
<box class="panel-header">
|
||||
<html:h1>
|
||||
<html:span id="editBookmarkPanelTitle"/>
|
||||
@@ -251,6 +255,7 @@
|
||||
@@ -259,6 +263,7 @@
|
||||
class="footer-button"/>
|
||||
</html:moz-button-group>
|
||||
</vbox>
|
||||
@@ -21,7 +21,7 @@ index 79b604c5965ba03762acbf085c9288c73001ec24..d75d5481e5de93c592850e39d4b0b4fd
|
||||
</panel>
|
||||
</html:template>
|
||||
|
||||
@@ -656,6 +661,8 @@
|
||||
@@ -678,6 +683,8 @@
|
||||
|
||||
#include popup-notifications.inc.xhtml
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
index 68c24f730d56f548cf1e286198a04f8363529378..71418c93ce7216d71412f2fa67295322bb73abad 100644
|
||||
index 4d4223c508560136aba220adb18528aac913a188..7e7432f7adb761a598d3e3e5ca4c6385a3bfe223 100644
|
||||
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
@@ -2,7 +2,7 @@
|
||||
@@ -11,27 +11,28 @@ index 68c24f730d56f548cf1e286198a04f8363529378..71418c93ce7216d71412f2fa67295322
|
||||
<script src="chrome://browser/content/navigator-toolbox.js" />
|
||||
|
||||
<!-- Menu -->
|
||||
@@ -18,9 +18,8 @@
|
||||
@@ -18,9 +18,9 @@
|
||||
#include browser-menubar.inc
|
||||
</toolbaritem>
|
||||
<spacer flex="1" skipintoolbarset="true" style="order: 1000;"/>
|
||||
-#include titlebar-items.inc.xhtml
|
||||
</toolbar>
|
||||
-
|
||||
|
||||
+<hbox id="titlebar">
|
||||
<toolbar id="TabsToolbar"
|
||||
class="browser-toolbar browser-titlebar"
|
||||
fullscreentoolbar="true"
|
||||
@@ -62,6 +61,8 @@
|
||||
@@ -62,6 +62,9 @@
|
||||
<html:sidebar-pins-promo id="drag-to-pin-promo-card"></html:sidebar-pins-promo>
|
||||
<arrowscrollbox id="pinned-tabs-container" orient="horizontal" clicktoscroll=""></arrowscrollbox>
|
||||
<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-tabs-wrapper">
|
||||
<hbox class="tab-drop-indicator" hidden="true"/>
|
||||
<arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend="">
|
||||
<tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/>
|
||||
@@ -81,6 +82,7 @@
|
||||
@@ -81,6 +84,7 @@
|
||||
tooltip="dynamic-shortcut-tooltip"
|
||||
data-l10n-id="tabs-toolbar-new-tab"/>
|
||||
<html:span id="tabbrowser-tab-a11y-desc" hidden="true"/>
|
||||
@@ -39,8 +40,8 @@ index 68c24f730d56f548cf1e286198a04f8363529378..71418c93ce7216d71412f2fa67295322
|
||||
</tabs>
|
||||
|
||||
<toolbarbutton id="new-tab-button"
|
||||
@@ -106,9 +108,10 @@
|
||||
#include private-browsing-indicator.inc.xhtml
|
||||
@@ -114,9 +118,10 @@
|
||||
|
||||
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>
|
||||
|
||||
-#include titlebar-items.inc.xhtml
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs
|
||||
index d9fbd3a9a78c993c89efa75be9e2ffc975158aba..e64382b32580c2d113774e76e3587002ce0aebad 100644
|
||||
index 90c8d48fa992ca5ac125fa2998741db79264de4a..a598431671e42b9ede23b0595790564202408a8e 100644
|
||||
--- a/browser/base/content/nsContextMenu.sys.mjs
|
||||
+++ b/browser/base/content/nsContextMenu.sys.mjs
|
||||
@@ -371,6 +371,9 @@ export class nsContextMenu {
|
||||
|
||||
@@ -51,3 +51,4 @@
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenFolders.mjs"></script>
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenDownloadAnimation.mjs"></script>
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenEmojiPicker.mjs"></script>
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenLiveFoldersUI.mjs"></script>
|
||||
|
||||
@@ -18,3 +18,4 @@
|
||||
#include ../../../zen/images/jar.inc.mn
|
||||
#include ../../../zen/vendor/jar.inc.mn
|
||||
#include ../../../zen/fonts/jar.inc.mn
|
||||
#include ../../../zen/live-folders/jar.inc.mn
|
||||
|
||||
@@ -63,4 +63,6 @@
|
||||
<command id="cmd_zenCloseUnpinnedTabs" />
|
||||
|
||||
<command id="cmd_zenNewNavigatorUnsynced" />
|
||||
|
||||
<command id="cmd_zenNewLiveFolder" />
|
||||
</commandset>
|
||||
|
||||
@@ -9,4 +9,5 @@
|
||||
<link rel="localization" href="browser/zen-menubar.ftl"/>
|
||||
<link rel="localization" href="browser/zen-vertical-tabs.ftl"/>
|
||||
<link rel="localization" href="browser/zen-folders.ftl"/>
|
||||
<link rel="localization" href="browser/zen-live-folders.ftl"/>
|
||||
</linkset>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# 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/.
|
||||
|
||||
<panel id="zen-folder-tabs-popup" type="arrow" orient="vertical">
|
||||
<panel id="zen-folder-tabs-popup" type="arrow" orient="vertical" side="left">
|
||||
<hbox class="tabs-list-header" flex="1">
|
||||
<image class="zen-folder-tabs-list-search-icon" src="chrome://global/skin/icons/search-glass.svg"/>
|
||||
<html:input id="zen-folder-tabs-list-search"
|
||||
|
||||
@@ -3,6 +3,23 @@
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
<menupopup id="zenCreateNewPopup">
|
||||
<menu data-l10n-id="zen-panel-ui-live-folder-create" id="zen-panel-ui-live-folder-create">
|
||||
<menupopup>
|
||||
<menuitem
|
||||
data-l10n-id="zen-live-folder-github-pull-requests"
|
||||
command="cmd_zenNewLiveFolder"
|
||||
image="chrome://browser/content/zen-images/favicons/github.svg" />
|
||||
<menuitem
|
||||
data-l10n-id="zen-live-folder-github-issues"
|
||||
command="cmd_zenNewLiveFolder"
|
||||
image="chrome://browser/content/zen-images/favicons/github.svg" />
|
||||
<menuitem
|
||||
data-l10n-id="zen-live-folder-type-rss"
|
||||
command="cmd_zenNewLiveFolder"
|
||||
image="chrome://browser/skin/zen-icons/selectable/logo-rss.svg"/>
|
||||
</menupopup>
|
||||
</menu>
|
||||
<menuseparator/>
|
||||
<menuitem data-l10n-id="zen-panel-ui-workspaces-create" command="cmd_zenOpenWorkspaceCreation" image="chrome://browser/skin/zen-icons/duplicate-tab.svg" />
|
||||
<menuitem data-l10n-id="zen-panel-ui-folder-create" command="cmd_zenOpenFolderCreation" image="chrome://browser/skin/zen-icons/folder.svg" />
|
||||
<menuseparator/>
|
||||
@@ -35,6 +52,12 @@
|
||||
</menupopup>
|
||||
|
||||
<menupopup id="zenFolderActions">
|
||||
<menu id="context_zenLiveFolderOptions"
|
||||
data-l10n-id="zen-live-folder-options"
|
||||
hidden="true">
|
||||
<menupopup />
|
||||
</menu>
|
||||
<menuseparator id="live-folder-separator" hidden="true"/>
|
||||
<menuitem id="context_zenFolderRename" data-l10n-id="zen-folders-panel-rename-folder"/>
|
||||
<menuitem id="context_zenFolderChangeIcon" data-l10n-id="tab-context-zen-edit-icon"/>
|
||||
<menuseparator />
|
||||
|
||||
41
src/browser/components/BrowserContentHandler-sys-mjs.patch
Normal file
41
src/browser/components/BrowserContentHandler-sys-mjs.patch
Normal file
@@ -0,0 +1,41 @@
|
||||
diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs
|
||||
index 2152327b42c884456785ef065422e3ca6cc8c50b..932150495d23c0a63987abf14b3dc8a12eb42d6c 100644
|
||||
--- a/browser/components/BrowserContentHandler.sys.mjs
|
||||
+++ b/browser/components/BrowserContentHandler.sys.mjs
|
||||
@@ -603,6 +603,28 @@ nsBrowserContentHandler.prototype = {
|
||||
}
|
||||
}
|
||||
|
||||
+ try {
|
||||
+ let blankWindowParam = cmdLine.handleFlagWithParam("blank-window", false);
|
||||
+ if (blankWindowParam !== null) {
|
||||
+ let { uri, principal } = resolveURIInternal(cmdLine, blankWindowParam);
|
||||
+ if (shouldLoadURI(uri)) {
|
||||
+ let win = openBrowserWindow(cmdLine, principal, uri.spec);
|
||||
+ win._zenStartupSyncFlag = 'unsynced';
|
||||
+ cmdLine.preventDefault = true;
|
||||
+ }
|
||||
+ }
|
||||
+ } catch (e) {
|
||||
+ if (e.result != Cr.NS_ERROR_INVALID_ARG) {
|
||||
+ throw e;
|
||||
+ }
|
||||
+ if (cmdLine.handleFlag("blank-window", false)) {
|
||||
+ let win = openBrowserWindow(cmdLine, null, null);
|
||||
+ win._zenStartupSyncFlag = 'unsynced';
|
||||
+ cmdLine.preventDefault = true;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+
|
||||
var searchParam = cmdLine.handleFlagWithParam("search", false);
|
||||
if (searchParam) {
|
||||
doSearch(searchParam, cmdLine);
|
||||
@@ -672,6 +694,7 @@ nsBrowserContentHandler.prototype = {
|
||||
" --new-window <url> Open <url> in a new window.\n" +
|
||||
" --new-tab <url> Open <url> in a new tab.\n" +
|
||||
" --private-window [<url>] Open <url> in a new private window.\n";
|
||||
+ info += " --blank-window [<url>] Open the new blank window.\n";
|
||||
if (AppConstants.platform == "win") {
|
||||
info += " --preferences Open Options dialog.\n";
|
||||
} else {
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs
|
||||
index 8acc1e5a97f769dc76d30ca0534f28b0a4511ab5..bd54169f976d3abe7d122b0efc0fa0d0626179eb 100644
|
||||
index 33a0f6b7e5cfe087388483fefa55b927e3e3f4a3..65135c6904b5e9523f77689dfc572aefe11b0961 100644
|
||||
--- a/browser/components/BrowserGlue.sys.mjs
|
||||
+++ b/browser/components/BrowserGlue.sys.mjs
|
||||
@@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
|
||||
@@ -10,7 +10,7 @@ index 8acc1e5a97f769dc76d30ca0534f28b0a4511ab5..bd54169f976d3abe7d122b0efc0fa0d0
|
||||
AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs",
|
||||
AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs",
|
||||
ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs",
|
||||
@@ -1452,7 +1453,7 @@ BrowserGlue.prototype = {
|
||||
@@ -1455,7 +1456,7 @@ BrowserGlue.prototype = {
|
||||
windowcount++;
|
||||
let tabbrowser = win.gBrowser;
|
||||
if (tabbrowser) {
|
||||
@@ -19,7 +19,7 @@ index 8acc1e5a97f769dc76d30ca0534f28b0a4511ab5..bd54169f976d3abe7d122b0efc0fa0d0
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1617,6 +1618,8 @@ BrowserGlue.prototype = {
|
||||
@@ -1620,6 +1621,8 @@ BrowserGlue.prototype = {
|
||||
} else if (profileDataVersion < APP_DATA_VERSION) {
|
||||
lazy.ProfileDataUpgrader.upgrade(profileDataVersion, APP_DATA_VERSION);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/controlcenter/content/identityPanel.inc.xhtml b/browser/components/controlcenter/content/identityPanel.inc.xhtml
|
||||
index 8e23aad8ca0bb686a669b11e1d78b7906f5f38d0..cf4873cc6165b5f77091c056d7e275e0f3d36769 100644
|
||||
index d7f214f471f70de3805e0f5b3b2d77f49a06c4f1..555b55089368e1782cf0266415fb3040b269d3a5 100644
|
||||
--- a/browser/components/controlcenter/content/identityPanel.inc.xhtml
|
||||
+++ b/browser/components/controlcenter/content/identityPanel.inc.xhtml
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
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
|
||||
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||
@@ -14,6 +14,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||
@@ -153,7 +153,17 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
|
||||
/**
|
||||
* Add a widget to an area.
|
||||
* 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;
|
||||
}
|
||||
@@ -162,7 +172,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
|
||||
if (child != aExceptChild) {
|
||||
sum += getInlineSize(child);
|
||||
}
|
||||
@@ -7882,11 +7882,11 @@ class OverflowableToolbar {
|
||||
@@ -7882,11 +7884,11 @@ class OverflowableToolbar {
|
||||
parseFloat(style.paddingLeft) -
|
||||
parseFloat(style.paddingRight) -
|
||||
toolbarChildrenWidth;
|
||||
@@ -176,7 +186,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
|
||||
});
|
||||
|
||||
lazy.log.debug(
|
||||
@@ -7901,7 +7901,14 @@ class OverflowableToolbar {
|
||||
@@ -7901,7 +7903,14 @@ class OverflowableToolbar {
|
||||
Math.max(targetWidth, targetChildrenWidth)
|
||||
);
|
||||
totalAvailWidth = Math.ceil(totalAvailWidth);
|
||||
@@ -192,7 +202,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
|
||||
return { isOverflowing, targetContentWidth, totalAvailWidth };
|
||||
}
|
||||
|
||||
@@ -7962,7 +7969,11 @@ class OverflowableToolbar {
|
||||
@@ -7962,7 +7971,11 @@ class OverflowableToolbar {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -205,7 +215,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
|
||||
lazy.log.debug(
|
||||
`Need ${minSize} but width is ${totalAvailWidth} so bailing`
|
||||
);
|
||||
@@ -7995,7 +8006,7 @@ class OverflowableToolbar {
|
||||
@@ -7995,7 +8008,7 @@ class OverflowableToolbar {
|
||||
}
|
||||
}
|
||||
if (!inserted) {
|
||||
@@ -214,7 +224,27 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
|
||||
}
|
||||
child.removeAttribute("cui-anchorid");
|
||||
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;
|
||||
}
|
||||
case "mousedown": {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js
|
||||
index d016811caa6c1ecc947fd705f6e1b27e3b5a12a5..89f2a9ec9ebd80e744ed0118e1b3c164151cf2b8 100644
|
||||
index 1c696a11d831ea25b4b01689e9b23bda8a754900..fed5576c05aeffd87022565580ce085cb81fe70c 100644
|
||||
--- a/browser/components/customizableui/content/panelUI.js
|
||||
+++ b/browser/components/customizableui/content/panelUI.js
|
||||
@@ -619,10 +619,12 @@ const PanelUI = {
|
||||
@@ -627,10 +627,12 @@ const PanelUI = {
|
||||
if (hasKids && !this.navbar.hasAttribute("nonemptyoverflow")) {
|
||||
this.navbar.setAttribute("nonemptyoverflow", "true");
|
||||
this.overflowPanel.setAttribute("hasfixeditems", "true");
|
||||
@@ -15,7 +15,7 @@ index d016811caa6c1ecc947fd705f6e1b27e3b5a12a5..89f2a9ec9ebd80e744ed0118e1b3c164
|
||||
}
|
||||
},
|
||||
|
||||
@@ -970,7 +972,7 @@ const PanelUI = {
|
||||
@@ -978,7 +980,7 @@ const PanelUI = {
|
||||
el.removeAttribute("data-lazy-l10n-id");
|
||||
});
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/extensions/parent/ext-tabs.js b/browser/components/extensions/parent/ext-tabs.js
|
||||
index bff93996b42aa1f88f1bfcbd813c3af4a5806f13..1252727b4811248e138cf7a38f8d1fd422576d28 100644
|
||||
index 7e32fc3f3c325b7317533acf5142bb912556fdbe..04bbe6bece881a05d2eadf81411bd4df2b745017 100644
|
||||
--- a/browser/components/extensions/parent/ext-tabs.js
|
||||
+++ b/browser/components/extensions/parent/ext-tabs.js
|
||||
@@ -501,6 +501,7 @@ this.tabs = class extends ExtensionAPIPersistent {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn
|
||||
index 5e53352fdbd25d2aed40d0117c3ad7072b9acf8c..0f400864ba7cc850d212ddeeefb71a06376e845f 100644
|
||||
index f06aaedc681cac4dc26d8e168d47991098477424..db2e81338793f99d9f034555abb1f6ef28bb1ae9 100644
|
||||
--- a/browser/components/preferences/jar.mn
|
||||
+++ b/browser/components/preferences/jar.mn
|
||||
@@ -42,3 +42,5 @@ browser.jar:
|
||||
@@ -46,3 +46,5 @@ browser.jar:
|
||||
content/browser/preferences/widgets/sync-device-name.mjs (widgets/sync-device-name/sync-device-name.mjs)
|
||||
content/browser/preferences/widgets/sync-engines-list.mjs (widgets/sync-engine-list/sync-engines-list.mjs)
|
||||
content/browser/preferences/widgets/sync-engines-list.css (widgets/sync-engine-list/sync-engines-list.css)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml
|
||||
index d218a04e0ab44e6a55e368566c97df95e939565b..59f038e59fe1a8554a8b112c5ac33e700b71c79c 100644
|
||||
index 171021979f4783251db7f74d52a922d4bd244f08..cdc91ac91905956a82dfa3ed229146622d1d3d80 100644
|
||||
--- a/browser/components/preferences/main.inc.xhtml
|
||||
+++ b/browser/components/preferences/main.inc.xhtml
|
||||
@@ -48,7 +48,8 @@
|
||||
@@ -49,7 +49,8 @@
|
||||
<!-- Browser layout -->
|
||||
<groupbox data-category="paneGeneral"
|
||||
data-subcategory="layout"
|
||||
@@ -12,7 +12,7 @@ index d218a04e0ab44e6a55e368566c97df95e939565b..59f038e59fe1a8554a8b112c5ac33e70
|
||||
<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"/>
|
||||
@@ -253,6 +254,7 @@
|
||||
@@ -210,6 +211,7 @@
|
||||
languages-customize-add.label,
|
||||
" />
|
||||
</hbox>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
|
||||
index 6f99cbf973d414ffd4036d17740abe963629db37..520dcce0adb06c5ebfee8c76f72f7d7b40e106da 100644
|
||||
index 3720de145e6aa3fa2fb13f8480155d9472edaa8b..f04808d58b29611f4058d9fc52ab8bc20a34825a 100644
|
||||
--- a/browser/components/preferences/main.js
|
||||
+++ b/browser/components/preferences/main.js
|
||||
@@ -1729,6 +1729,11 @@ SettingGroupManager.registerGroups({
|
||||
@@ -2190,6 +2190,11 @@ SettingGroupManager.registerGroups({
|
||||
id: "browserRestoreSession",
|
||||
l10nId: "startup-restore-windows-and-tabs",
|
||||
},
|
||||
@@ -14,7 +14,7 @@ index 6f99cbf973d414ffd4036d17740abe963629db37..520dcce0adb06c5ebfee8c76f72f7d7b
|
||||
{
|
||||
id: "windowsLaunchOnLogin",
|
||||
l10nId: "windows-launch-on-login",
|
||||
@@ -3133,7 +3138,7 @@ function getBundleForLocales(newLocales) {
|
||||
@@ -4606,7 +4611,7 @@ function getBundleForLocales(newLocales) {
|
||||
])
|
||||
);
|
||||
return new Localization(
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
|
||||
index 7d6835b8636f771943b8081b7d56f579812026c2..97227eec4baeffd39b23ed6194ce7fa108c3b862 100644
|
||||
index 7a279d4655523156ff259c9f6bcb2a0def9d1749..de71cec7693d1fe3bf34017ab76027b83631830a 100644
|
||||
--- a/browser/components/preferences/preferences.js
|
||||
+++ b/browser/components/preferences/preferences.js
|
||||
@@ -124,6 +124,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
|
||||
@@ -121,6 +121,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
|
||||
styleSheets: [
|
||||
"chrome://browser/skin/preferences/dialog.css",
|
||||
"chrome://browser/skin/preferences/preferences.css",
|
||||
@@ -10,7 +10,7 @@ index 7d6835b8636f771943b8081b7d56f579812026c2..97227eec4baeffd39b23ed6194ce7fa1
|
||||
],
|
||||
resizeCallback: async ({ title, frame }) => {
|
||||
// Search within main document and highlight matched keyword.
|
||||
@@ -344,6 +345,10 @@ function init_all() {
|
||||
@@ -350,6 +351,10 @@ function init_all() {
|
||||
register_module("paneSearch", gSearchPane);
|
||||
register_module("panePrivacy", gPrivacyPane);
|
||||
register_module("paneContainers", gContainersPane);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
|
||||
index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db4388456b97f02c 100644
|
||||
index 0dd43c76f947e593a9be5edae936f1af17f9b627..df026b3e164da92536adef72ee0388386cb9708b 100644
|
||||
--- a/browser/components/preferences/preferences.xhtml
|
||||
+++ b/browser/components/preferences/preferences.xhtml
|
||||
@@ -46,6 +46,8 @@
|
||||
@@ -42,6 +42,8 @@
|
||||
<link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-pane.css" />
|
||||
<link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-control.css" />
|
||||
|
||||
@@ -11,7 +11,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
|
||||
<link rel="localization" href="branding/brand.ftl"/>
|
||||
<link rel="localization" href="browser/browser.ftl"/>
|
||||
<!-- Used by fontbuilder.js -->
|
||||
@@ -115,6 +117,11 @@
|
||||
@@ -111,6 +113,11 @@
|
||||
<hbox flex="1">
|
||||
|
||||
<vbox class="navigation">
|
||||
@@ -23,7 +23,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
|
||||
<!-- category list -->
|
||||
<richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label">
|
||||
<richlistitem id="category-general"
|
||||
@@ -127,6 +134,50 @@
|
||||
@@ -123,6 +130,50 @@
|
||||
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label>
|
||||
</richlistitem>
|
||||
|
||||
@@ -74,7 +74,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
|
||||
<richlistitem id="category-home"
|
||||
class="category"
|
||||
value="paneHome"
|
||||
@@ -242,11 +293,6 @@
|
||||
@@ -248,11 +299,6 @@
|
||||
<html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/>
|
||||
</hbox>
|
||||
</hbox>
|
||||
@@ -86,7 +86,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
|
||||
</hbox>
|
||||
</hbox>
|
||||
<vbox id="mainPrefPane">
|
||||
@@ -260,6 +306,10 @@
|
||||
@@ -265,6 +311,10 @@
|
||||
#include sync.inc.xhtml
|
||||
#include experimental.inc.xhtml
|
||||
#include moreFromMozilla.inc.xhtml
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/preferences/sync.inc.xhtml b/browser/components/preferences/sync.inc.xhtml
|
||||
index 4ecdbdb129577165ed0df619577327f7610e138f..761a4d4f26a21ba555b7af180e8a6030615db500 100644
|
||||
index 86053cbf35ef1b004185ee54e9d7b9f2e2b8d550..a8fe2db034ffe99e01fd0f92d629151df7f708a8 100644
|
||||
--- a/browser/components/preferences/sync.inc.xhtml
|
||||
+++ b/browser/components/preferences/sync.inc.xhtml
|
||||
@@ -223,6 +223,10 @@
|
||||
|
||||
@@ -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.workspaces.separate-essentials", tabsUnloaderPrefListener);
|
||||
Services.prefs.addObserver("zen.glance.activation-method", tabsUnloaderPrefListener);
|
||||
Services.prefs.addObserver("zen.window-sync.sync-only-pinned-tabs", tabsUnloaderPrefListener);
|
||||
Services.prefs.addObserver(
|
||||
"zen.tabs.ctrl-tab.ignore-essential-tabs",
|
||||
toggleZenCycleByAttrWarning
|
||||
@@ -745,6 +746,10 @@ var gZenWorkspacesSettings = {
|
||||
Services.prefs.removeObserver("zen.glance.enabled", tabsUnloaderPrefListener);
|
||||
Services.prefs.removeObserver("zen.glance.activation-method", tabsUnloaderPrefListener);
|
||||
Services.prefs.removeObserver("zen.workspaces.separate-essentials", tabsUnloaderPrefListener);
|
||||
Services.prefs.removeObserver(
|
||||
"zen.window-sync.sync-only-pinned-tabs",
|
||||
tabsUnloaderPrefListener
|
||||
);
|
||||
Services.prefs.removeObserver(
|
||||
"zen.tabs.ctrl-tab.ignore-essential-tabs",
|
||||
toggleZenCycleByAttrWarning
|
||||
@@ -813,6 +818,13 @@ const zenMissingKeyboardShortcutL10n = {
|
||||
key_accessibility: "zen-devtools-toggle-accessibility-shortcut",
|
||||
};
|
||||
|
||||
var zenIgnoreKeyboardShortcutIDs = [
|
||||
"key_enterFullScreen_old",
|
||||
"key_enterFullScreen_compat",
|
||||
"key_exitFullScreen_old",
|
||||
"key_exitFullScreen_compat",
|
||||
];
|
||||
|
||||
var zenIgnoreKeyboardShortcutL10n = [
|
||||
"zen-full-zoom-reduce-shortcut-alt-b",
|
||||
"zen-full-zoom-reduce-shortcut-alt-a",
|
||||
@@ -883,7 +895,11 @@ var gZenCKSSettings = {
|
||||
|
||||
const labelValue = zenMissingKeyboardShortcutL10n[keyID] ?? l10nID;
|
||||
|
||||
if (zenIgnoreKeyboardShortcutL10n.includes(labelValue) || shortcut.shouldBeEmpty) {
|
||||
if (
|
||||
zenIgnoreKeyboardShortcutIDs.includes(keyID) ||
|
||||
zenIgnoreKeyboardShortcutL10n.includes(labelValue) ||
|
||||
shortcut.shouldBeEmpty
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1198,6 +1214,11 @@ Preferences.addAll([
|
||||
type: "bool",
|
||||
default: true,
|
||||
},
|
||||
{
|
||||
id: "zen.window-sync.sync-only-pinned-tabs",
|
||||
type: "bool",
|
||||
default: false,
|
||||
},
|
||||
]);
|
||||
|
||||
Preferences.addSetting({
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
<label><html:h2 data-l10n-id="zen-settings-workspaces-header"/></label>
|
||||
<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"
|
||||
data-l10n-id="zen-settings-workspaces-hide-default-container-indicator"
|
||||
preference="zen.workspaces.hide-default-container-indicator"/>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/screenshots/overlay/overlay.css b/browser/components/screenshots/overlay/overlay.css
|
||||
index 43a5d2109ad107ce1c79eef7cb8635bc1fa813f7..c1e5648d0e71826119bda1bc18c5d16886bab8fd 100644
|
||||
index 94d87522bfaaf59b9138ec5ca960be0a0ea31339..ab3fa41cefdfc1d93edeb8a2d626bd9b1e07344b 100644
|
||||
--- a/browser/components/screenshots/overlay/overlay.css
|
||||
+++ b/browser/components/screenshots/overlay/overlay.css
|
||||
@@ -196,6 +196,9 @@
|
||||
@@ -200,6 +200,9 @@
|
||||
pointer-events: none;
|
||||
position: absolute;
|
||||
z-index: var(--screenshots-high-layer);
|
||||
@@ -12,11 +12,11 @@ index 43a5d2109ad107ce1c79eef7cb8635bc1fa813f7..c1e5648d0e71826119bda1bc18c5d168
|
||||
}
|
||||
|
||||
#top-background {
|
||||
@@ -214,7 +217,7 @@
|
||||
@@ -218,7 +221,7 @@
|
||||
}
|
||||
|
||||
.bghighlight {
|
||||
- background-color: rgba(0, 0, 0, 0.7);
|
||||
- background-color: var(--background-color-overlay);
|
||||
+ background-color: rgba(0, 0, 0, 0.5);
|
||||
position: absolute;
|
||||
overflow: clip;
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
diff --git a/browser/components/search/SearchUIUtils.sys.mjs b/browser/components/search/SearchUIUtils.sys.mjs
|
||||
index 65daa1402a52e252360386e60471f726c1387bb3..be8f588316a8a4d7f33a324bf11f9e1f19def32d 100644
|
||||
index 22680c91da251adc21bb46debc73b3dbf6cdf08c..80d465e698c9900a6495d3f17ca2e66a25ff4021 100644
|
||||
--- a/browser/components/search/SearchUIUtils.sys.mjs
|
||||
+++ b/browser/components/search/SearchUIUtils.sys.mjs
|
||||
@@ -444,7 +444,7 @@ export var SearchUIUtils = {
|
||||
triggeringSearchEngine: engine.name,
|
||||
@@ -445,6 +445,7 @@ export var SearchUIUtils = {
|
||||
},
|
||||
});
|
||||
-
|
||||
+ window.gZenGlanceManager?.onSearchSelectCommand(where);
|
||||
return { engine, url: submission.uri };
|
||||
},
|
||||
|
||||
+ window.gZenGlanceManager?.onSearchSelectCommand(where);
|
||||
lazy.BrowserSearchTelemetry.recordSearch(
|
||||
window.gBrowser.selectedBrowser,
|
||||
engine,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/sessionstore/SessionStartup.sys.mjs b/browser/components/sessionstore/SessionStartup.sys.mjs
|
||||
index 86600ffb5178599ab23270a964064ca657a3283f..e7014e5bce547d37ec92377a95bad5be4d52152e 100644
|
||||
index 86600ffb5178599ab23270a964064ca657a3283f..70d7b5c7d69d3700475d663b595052264c67d351 100644
|
||||
--- a/browser/components/sessionstore/SessionStartup.sys.mjs
|
||||
+++ b/browser/components/sessionstore/SessionStartup.sys.mjs
|
||||
@@ -40,6 +40,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||
@@ -28,7 +28,16 @@ index 86600ffb5178599ab23270a964064ca657a3283f..e7014e5bce547d37ec92377a95bad5be
|
||||
if (this._initialState == null) {
|
||||
// No valid session found.
|
||||
this._sessionType = this.NO_SESSION;
|
||||
@@ -336,12 +339,7 @@ export var SessionStartup = {
|
||||
@@ -276,6 +279,8 @@ export var SessionStartup = {
|
||||
`Previous shutdown ok? ${this._previousSessionCrashed}, reason: ${previousSessionCrashedReason}`
|
||||
);
|
||||
|
||||
+ lazy.ZenSessionStore.onCrashCheckpoints(this._initialState);
|
||||
+
|
||||
Services.obs.addObserver(this, "sessionstore-windows-restored", true);
|
||||
|
||||
if (this.sessionType == this.NO_SESSION) {
|
||||
@@ -336,12 +341,7 @@ export var SessionStartup = {
|
||||
isAutomaticRestoreEnabled() {
|
||||
if (this._resumeSessionEnabled === null) {
|
||||
this._resumeSessionEnabled =
|
||||
@@ -42,3 +51,13 @@ index 86600ffb5178599ab23270a964064ca657a3283f..e7014e5bce547d37ec92377a95bad5be
|
||||
}
|
||||
|
||||
return this._resumeSessionEnabled;
|
||||
@@ -354,8 +354,7 @@ export var SessionStartup = {
|
||||
*/
|
||||
willRestore() {
|
||||
return (
|
||||
- this.sessionType == this.RECOVER_SESSION ||
|
||||
- this.sessionType == this.RESUME_SESSION
|
||||
+ true
|
||||
);
|
||||
},
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96faedf6f0b 100644
|
||||
index f066bc7a9cca1788080d088141030c225a733931..accb078ebbc23f9a823ae6c277f1e1bf06644d92 100644
|
||||
--- a/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
+++ b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
@@ -127,6 +127,9 @@ const TAB_EVENTS = [
|
||||
@@ -12,7 +12,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
];
|
||||
|
||||
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||
@@ -196,6 +199,8 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||
@@ -198,6 +201,8 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||
TabStateCache: "resource:///modules/sessionstore/TabStateCache.sys.mjs",
|
||||
TabStateFlusher: "resource:///modules/sessionstore/TabStateFlusher.sys.mjs",
|
||||
setTimeout: "resource://gre/modules/Timer.sys.mjs",
|
||||
@@ -21,7 +21,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
});
|
||||
|
||||
ChromeUtils.defineLazyGetter(lazy, "blankURI", () => {
|
||||
@@ -1261,10 +1266,7 @@ var SessionStoreInternal = {
|
||||
@@ -1263,10 +1268,7 @@ var SessionStoreInternal = {
|
||||
*/
|
||||
get willAutoRestore() {
|
||||
return (
|
||||
@@ -33,7 +33,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
);
|
||||
},
|
||||
|
||||
@@ -1934,6 +1936,9 @@ var SessionStoreInternal = {
|
||||
@@ -1940,6 +1942,9 @@ var SessionStoreInternal = {
|
||||
case "TabPinned":
|
||||
case "TabUnpinned":
|
||||
case "SwapDocShells":
|
||||
@@ -43,7 +43,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
this.saveStateDelayed(win);
|
||||
break;
|
||||
case "TabGroupCreate":
|
||||
@@ -2044,6 +2049,10 @@ var SessionStoreInternal = {
|
||||
@@ -2050,6 +2055,10 @@ var SessionStoreInternal = {
|
||||
this._windows[aWindow.__SSi].isTaskbarTab = true;
|
||||
}
|
||||
|
||||
@@ -51,10 +51,10 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
+ this._windows[aWindow.__SSi].isZenUnsynced = true;
|
||||
+ }
|
||||
+
|
||||
let tabbrowser = aWindow.gBrowser;
|
||||
|
||||
// add tab change listeners to all already existing tabs
|
||||
@@ -2076,7 +2085,7 @@ var SessionStoreInternal = {
|
||||
if (lazy.AIWindow.isAIWindowActiveAndEnabled(aWindow)) {
|
||||
this._windows[aWindow.__SSi].isAIWindow = true;
|
||||
}
|
||||
@@ -2086,7 +2095,7 @@ var SessionStoreInternal = {
|
||||
let isTaskbarTab = this._windows[aWindow.__SSi].isTaskbarTab;
|
||||
// A regular window is not a private window, taskbar tab window, or popup window
|
||||
let isRegularWindow =
|
||||
@@ -63,7 +63,16 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
|
||||
// perform additional initialization when the first window is loading
|
||||
if (lazy.RunState.isStopped) {
|
||||
@@ -2131,6 +2140,7 @@ var SessionStoreInternal = {
|
||||
@@ -2098,7 +2107,7 @@ var SessionStoreInternal = {
|
||||
// to disk to NOW() to enforce a full interval before the next write.
|
||||
lazy.SessionSaver.updateLastSaveTime();
|
||||
|
||||
- if (isPrivateWindow || isTaskbarTab) {
|
||||
+ if (isPrivateWindow || isTaskbarTab || aWindow.document.documentElement.hasAttribute("zen-unsynced-window")) {
|
||||
this._log.debug(
|
||||
"initializeWindow, the window is private or a web app. Saving SessionStartup.state for possibly restoring later"
|
||||
);
|
||||
@@ -2141,6 +2150,7 @@ var SessionStoreInternal = {
|
||||
null,
|
||||
"sessionstore-one-or-no-tab-restored"
|
||||
);
|
||||
@@ -71,7 +80,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
this._deferredAllWindowsRestored.resolve();
|
||||
}
|
||||
// this window was opened by _openWindowWithState
|
||||
@@ -2175,7 +2185,6 @@ var SessionStoreInternal = {
|
||||
@@ -2190,7 +2200,6 @@ var SessionStoreInternal = {
|
||||
if (closedWindowState) {
|
||||
let newWindowState;
|
||||
if (
|
||||
@@ -79,7 +88,15 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
!lazy.SessionStartup.willRestore()
|
||||
) {
|
||||
// We want to split the window up into pinned tabs and unpinned tabs.
|
||||
@@ -2239,6 +2248,15 @@ var SessionStoreInternal = {
|
||||
@@ -2226,6 +2235,7 @@ var SessionStoreInternal = {
|
||||
}
|
||||
|
||||
if (newWindowState) {
|
||||
+ lazy.ZenSessionStore.onRestoringClosedWindow(newWindowState);
|
||||
// Ensure that the window state isn't hidden
|
||||
this._restoreCount = 1;
|
||||
let state = { windows: [newWindowState] };
|
||||
@@ -2254,6 +2264,15 @@ var SessionStoreInternal = {
|
||||
});
|
||||
this._shouldRestoreLastSession = false;
|
||||
}
|
||||
@@ -95,7 +112,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
|
||||
if (this._restoreLastWindow && aWindow.toolbar.visible) {
|
||||
// always reset (if not a popup window)
|
||||
@@ -2383,7 +2401,7 @@ var SessionStoreInternal = {
|
||||
@@ -2404,7 +2423,7 @@ var SessionStoreInternal = {
|
||||
|
||||
var tabbrowser = aWindow.gBrowser;
|
||||
|
||||
@@ -104,7 +121,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
|
||||
TAB_EVENTS.forEach(function (aEvent) {
|
||||
tabbrowser.tabContainer.removeEventListener(aEvent, this, true);
|
||||
@@ -2434,7 +2452,7 @@ var SessionStoreInternal = {
|
||||
@@ -2455,7 +2474,7 @@ var SessionStoreInternal = {
|
||||
|
||||
let isLastRegularWindow =
|
||||
Object.values(this._windows).filter(
|
||||
@@ -113,7 +130,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
).length == 1;
|
||||
this._log.debug(
|
||||
`onClose, closing window isLastRegularWindow? ${isLastRegularWindow}`
|
||||
@@ -2491,8 +2509,8 @@ var SessionStoreInternal = {
|
||||
@@ -2512,8 +2531,8 @@ var SessionStoreInternal = {
|
||||
// 2) Flush the window.
|
||||
// 3) When the flush is complete, revisit our decision to store the window
|
||||
// in _closedWindows, and add/remove as necessary.
|
||||
@@ -124,7 +141,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
}
|
||||
|
||||
completionPromise = lazy.TabStateFlusher.flushWindow(aWindow).then(() => {
|
||||
@@ -2512,8 +2530,9 @@ var SessionStoreInternal = {
|
||||
@@ -2533,8 +2552,9 @@ var SessionStoreInternal = {
|
||||
|
||||
// Save non-private windows if they have at
|
||||
// least one saveable tab or are the last window.
|
||||
@@ -136,7 +153,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
|
||||
if (!isLastWindow && winData.closedId > -1) {
|
||||
this._addClosedAction(
|
||||
@@ -2589,7 +2608,7 @@ var SessionStoreInternal = {
|
||||
@@ -2610,7 +2630,7 @@ var SessionStoreInternal = {
|
||||
* to call this method again asynchronously (for example, after
|
||||
* a window flush).
|
||||
*/
|
||||
@@ -145,7 +162,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
// Make sure SessionStore is still running, and make sure that we
|
||||
// haven't chosen to forget this window.
|
||||
if (
|
||||
@@ -2606,6 +2625,7 @@ var SessionStoreInternal = {
|
||||
@@ -2627,6 +2647,7 @@ var SessionStoreInternal = {
|
||||
// _closedWindows from a previous call to this function.
|
||||
let winIndex = this._closedWindows.indexOf(winData);
|
||||
let alreadyStored = winIndex != -1;
|
||||
@@ -153,7 +170,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
// If sidebar command is truthy, i.e. sidebar is open, store sidebar settings
|
||||
let shouldStore = hasSaveableTabs || isLastWindow;
|
||||
|
||||
@@ -3408,7 +3428,7 @@ var SessionStoreInternal = {
|
||||
@@ -3429,7 +3450,7 @@ var SessionStoreInternal = {
|
||||
if (!isPrivateWindow && tabState.isPrivate) {
|
||||
return;
|
||||
}
|
||||
@@ -162,7 +179,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -4129,6 +4149,12 @@ var SessionStoreInternal = {
|
||||
@@ -4150,6 +4171,12 @@ var SessionStoreInternal = {
|
||||
Math.min(tabState.index, tabState.entries.length)
|
||||
);
|
||||
tabState.pinned = false;
|
||||
@@ -175,7 +192,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
|
||||
if (inBackground === false) {
|
||||
aWindow.gBrowser.selectedTab = newTab;
|
||||
@@ -4565,6 +4591,8 @@ var SessionStoreInternal = {
|
||||
@@ -4586,6 +4613,8 @@ var SessionStoreInternal = {
|
||||
// Append the tab if we're opening into a different window,
|
||||
tabIndex: aSource == aTargetWindow ? pos : Infinity,
|
||||
pinned: state.pinned,
|
||||
@@ -184,7 +201,19 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
userContextId: state.userContextId,
|
||||
skipLoad: true,
|
||||
preferredRemoteType,
|
||||
@@ -5414,7 +5442,7 @@ var SessionStoreInternal = {
|
||||
@@ -5087,9 +5116,10 @@ var SessionStoreInternal = {
|
||||
if (activePageData.title && activePageData.title != activePageData.url) {
|
||||
win.gBrowser.setInitialTabTitle(tab, activePageData.title, {
|
||||
isContentTitle: true,
|
||||
+ _zenChangeLabelFlag: true,
|
||||
});
|
||||
} else {
|
||||
- win.gBrowser.setInitialTabTitle(tab, activePageData.url);
|
||||
+ win.gBrowser.setInitialTabTitle(tab, activePageData.url, { _zenChangeLabelFlag: true });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5446,7 +5476,7 @@ var SessionStoreInternal = {
|
||||
|
||||
for (let i = tabbrowser.pinnedTabCount; i < tabbrowser.tabs.length; i++) {
|
||||
let tab = tabbrowser.tabs[i];
|
||||
@@ -193,7 +222,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
removableTabs.push(tab);
|
||||
}
|
||||
}
|
||||
@@ -5525,7 +5553,7 @@ var SessionStoreInternal = {
|
||||
@@ -5559,7 +5589,7 @@ var SessionStoreInternal = {
|
||||
|
||||
// collect the data for all windows
|
||||
for (ix in this._windows) {
|
||||
@@ -202,7 +231,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
// window data is still in _statesToRestore
|
||||
continue;
|
||||
}
|
||||
@@ -5668,11 +5696,12 @@ var SessionStoreInternal = {
|
||||
@@ -5702,11 +5732,12 @@ var SessionStoreInternal = {
|
||||
}
|
||||
|
||||
let tabbrowser = aWindow.gBrowser;
|
||||
@@ -216,7 +245,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
// update the internal state data for this window
|
||||
for (let tab of tabs) {
|
||||
if (tab == aWindow.FirefoxViewHandler.tab) {
|
||||
@@ -5683,6 +5712,9 @@ var SessionStoreInternal = {
|
||||
@@ -5717,6 +5748,9 @@ var SessionStoreInternal = {
|
||||
tabsData.push(tabData);
|
||||
}
|
||||
|
||||
@@ -226,7 +255,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
// update tab group state for this window
|
||||
winData.groups = [];
|
||||
for (let tabGroup of aWindow.gBrowser.tabGroups) {
|
||||
@@ -5695,7 +5727,7 @@ var SessionStoreInternal = {
|
||||
@@ -5729,7 +5763,7 @@ var SessionStoreInternal = {
|
||||
// a window is closed, point to the first item in the tab strip instead (it will never be the Firefox View tab,
|
||||
// since it's only inserted into the tab strip after it's selected).
|
||||
if (aWindow.FirefoxViewHandler.tab?.selected) {
|
||||
@@ -235,7 +264,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
winData.title = tabbrowser.tabs[0].label;
|
||||
}
|
||||
winData.selected = selectedIndex;
|
||||
@@ -5810,8 +5842,8 @@ var SessionStoreInternal = {
|
||||
@@ -5844,8 +5878,8 @@ var SessionStoreInternal = {
|
||||
// selectTab represents.
|
||||
let selectTab = 0;
|
||||
if (overwriteTabs) {
|
||||
@@ -246,7 +275,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
selectTab = Math.min(selectTab, winData.tabs.length);
|
||||
}
|
||||
|
||||
@@ -5833,6 +5865,7 @@ var SessionStoreInternal = {
|
||||
@@ -5867,6 +5901,7 @@ var SessionStoreInternal = {
|
||||
if (overwriteTabs) {
|
||||
for (let i = tabbrowser.browsers.length - 1; i >= 0; i--) {
|
||||
if (!tabbrowser.tabs[i].selected) {
|
||||
@@ -254,7 +283,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
tabbrowser.removeTab(tabbrowser.tabs[i]);
|
||||
}
|
||||
}
|
||||
@@ -5866,6 +5899,12 @@ var SessionStoreInternal = {
|
||||
@@ -5900,6 +5935,12 @@ var SessionStoreInternal = {
|
||||
savedTabGroup => !openTabGroupIdsInWindow.has(savedTabGroup.id)
|
||||
);
|
||||
}
|
||||
@@ -267,7 +296,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
|
||||
// Move the originally open tabs to the end.
|
||||
if (initialTabs) {
|
||||
@@ -6419,6 +6458,25 @@ var SessionStoreInternal = {
|
||||
@@ -6453,6 +6494,25 @@ var SessionStoreInternal = {
|
||||
|
||||
// Most of tabData has been restored, now continue with restoring
|
||||
// attributes that may trigger external events.
|
||||
@@ -293,7 +322,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
|
||||
if (tabData.pinned) {
|
||||
tabbrowser.pinTab(tab);
|
||||
@@ -6567,6 +6625,9 @@ var SessionStoreInternal = {
|
||||
@@ -6601,6 +6661,9 @@ var SessionStoreInternal = {
|
||||
aWindow.gURLBar.readOnly = false;
|
||||
}
|
||||
}
|
||||
@@ -303,7 +332,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
|
||||
let promiseParts = Promise.withResolvers();
|
||||
aWindow.setTimeout(() => {
|
||||
@@ -7343,7 +7404,7 @@ var SessionStoreInternal = {
|
||||
@@ -7389,7 +7452,7 @@ var SessionStoreInternal = {
|
||||
|
||||
let groupsToSave = new Map();
|
||||
for (let tIndex = 0; tIndex < window.tabs.length; ) {
|
||||
@@ -312,7 +341,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
|
||||
// Adjust window.selected
|
||||
if (tIndex + 1 < window.selected) {
|
||||
window.selected -= 1;
|
||||
@@ -7358,7 +7419,7 @@ var SessionStoreInternal = {
|
||||
@@ -7404,7 +7467,7 @@ var SessionStoreInternal = {
|
||||
);
|
||||
// We don't want to increment tIndex here.
|
||||
continue;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs
|
||||
index 82721356d191055bec0d4b0ca49e481221988801..68437e6f9fa54fc75ca9e24d738e8afcd0ea22f8 100644
|
||||
index 82721356d191055bec0d4b0ca49e481221988801..e01904a6ea73e068c236adecbac6a97adedb2bd3 100644
|
||||
--- a/browser/components/sessionstore/TabState.sys.mjs
|
||||
+++ b/browser/components/sessionstore/TabState.sys.mjs
|
||||
@@ -85,7 +85,24 @@ class _TabState {
|
||||
@@ -85,7 +85,25 @@ class _TabState {
|
||||
tabData.groupId = tab.group.id;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ index 82721356d191055bec0d4b0ca49e481221988801..68437e6f9fa54fc75ca9e24d738e8afc
|
||||
+ tabData.zenIsGlance = tab.hasAttribute("zen-glance-tab");
|
||||
+ tabData._zenPinnedInitialState = tab._zenPinnedInitialState;
|
||||
+ tabData._zenIsActiveTab = tab._zenContentsVisible;
|
||||
+ tabData.zenLiveFolderItemId = tab.getAttribute("zen-live-folder-item-id");
|
||||
+
|
||||
tabData.searchMode = tab.ownerGlobal.gURLBar.getSearchMode(browser, true);
|
||||
+ if (tabData.searchMode?.source === tab.ownerGlobal.UrlbarUtils.RESULT_SOURCE.ZEN_ACTIONS) {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js
|
||||
index bd6db85732e6e99ca51ce9c4c1a7d469199cf8cb..6c7859c1014baf4e343714ef797cf558d065e189 100644
|
||||
index 86a74b2abfe9b49d71ce61fefc636b865bef83a9..7c18fcf15d127d79febb03ca15f0193dd6263604 100644
|
||||
--- a/browser/components/sidebar/browser-sidebar.js
|
||||
+++ b/browser/components/sidebar/browser-sidebar.js
|
||||
@@ -793,7 +793,7 @@ var SidebarController = {
|
||||
@@ -799,7 +799,7 @@ var SidebarController = {
|
||||
setPosition() {
|
||||
// First reset all ordinals to match DOM ordering.
|
||||
let contentArea = document.getElementById("tabbrowser-tabbox");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/TabUnloader.sys.mjs b/browser/components/tabbrowser/TabUnloader.sys.mjs
|
||||
index aefccef39f0b81176a5710a794e8a5e2650d6507..e073c65790df6d55e827a4f4596199f4f1a99a57 100644
|
||||
index aefccef39f0b81176a5710a794e8a5e2650d6507..53c838b3bc322cadee4ef9b411d02fc0af8c35e5 100644
|
||||
--- a/browser/components/tabbrowser/TabUnloader.sys.mjs
|
||||
+++ b/browser/components/tabbrowser/TabUnloader.sys.mjs
|
||||
@@ -52,7 +52,7 @@ let CRITERIA_WEIGHT = 1;
|
||||
@@ -11,3 +11,12 @@ index aefccef39f0b81176a5710a794e8a5e2650d6507..e073c65790df6d55e827a4f4596199f4
|
||||
return weight;
|
||||
}
|
||||
|
||||
@@ -106,7 +106,7 @@ let DefaultTabUnloaderMethods = {
|
||||
|
||||
*iterateTabs() {
|
||||
for (let win of Services.wm.getEnumerator("navigator:browser")) {
|
||||
- for (let tab of win.gBrowser.tabs) {
|
||||
+ for (let tab of win.gZenWorkspaces.allStoredTabs) {
|
||||
yield { tab, gBrowser: win.gBrowser };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/browser-ctrlTab.js b/browser/components/tabbrowser/content/browser-ctrlTab.js
|
||||
index 3330dc133c120e7fbeecd2a36c71f9dfba60b3fb..0243cdfe67e5eb3f68fc7cde66bb3809e79bd6c3 100644
|
||||
index b435917892ac77fb433ea709f2524db2f2347a1d..fcbfeb92f3ae4effbfd3333514ed4d412e3063c6 100644
|
||||
--- a/browser/components/tabbrowser/content/browser-ctrlTab.js
|
||||
+++ b/browser/components/tabbrowser/content/browser-ctrlTab.js
|
||||
@@ -252,7 +252,8 @@ var ctrlTab = {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/drag-and-drop.js b/browser/components/tabbrowser/content/drag-and-drop.js
|
||||
index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a1ef240b5 100644
|
||||
index 730190d845f5312736f437cdc654c1693241ce56..d0404c46955fa16103a6f83e410f4f8ad7e78655 100644
|
||||
--- a/browser/components/tabbrowser/content/drag-and-drop.js
|
||||
+++ b/browser/components/tabbrowser/content/drag-and-drop.js
|
||||
@@ -35,6 +35,9 @@
|
||||
@@ -12,7 +12,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
if (isTab(element) || isSplitViewWrapper(element)) {
|
||||
return element;
|
||||
}
|
||||
@@ -115,6 +118,9 @@
|
||||
@@ -118,6 +121,9 @@
|
||||
}
|
||||
|
||||
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
|
||||
@@ -22,18 +22,18 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
if (
|
||||
(dropEffect == "move" || dropEffect == "copy") &&
|
||||
document == draggedTab.ownerDocument &&
|
||||
@@ -133,10 +139,6 @@
|
||||
@@ -136,10 +142,6 @@
|
||||
|
||||
// Pinned tabs in expanded vertical mode are on a grid format and require
|
||||
// different logic to drag and drop.
|
||||
- if (this._isContainerVerticalPinnedGrid(draggedTab)) {
|
||||
- if (this._tabbrowserTabs.isContainerVerticalPinnedGrid(draggedTab)) {
|
||||
- this._animateExpandedPinnedTabMove(event);
|
||||
- return;
|
||||
- }
|
||||
this._animateTabMove(event);
|
||||
return;
|
||||
}
|
||||
@@ -269,6 +271,10 @@
|
||||
@@ -272,6 +274,10 @@
|
||||
|
||||
this._tabDropIndicator.hidden = true;
|
||||
event.stopPropagation();
|
||||
@@ -44,7 +44,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
if (draggedTab && dropEffect == "copy") {
|
||||
let duplicatedDraggedTab;
|
||||
let duplicatedTabs = [];
|
||||
@@ -294,8 +300,9 @@
|
||||
@@ -297,8 +303,9 @@
|
||||
let translateOffsetY = oldTranslateY % tabHeight;
|
||||
let newTranslateX = oldTranslateX - translateOffsetX;
|
||||
let newTranslateY = oldTranslateY - translateOffsetY;
|
||||
@@ -54,9 +54,9 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
|
||||
+ let essential = draggedTab.hasAttribute("zen-essential");
|
||||
|
||||
if (this._isContainerVerticalPinnedGrid(draggedTab)) {
|
||||
if (this._tabbrowserTabs.isContainerVerticalPinnedGrid(draggedTab)) {
|
||||
// Update both translate axis for pinned vertical expanded tabs
|
||||
@@ -311,9 +318,12 @@
|
||||
@@ -314,9 +321,12 @@
|
||||
}
|
||||
} else {
|
||||
let tabs = this._tabbrowserTabs.dragAndDropElements.slice(
|
||||
@@ -71,7 +71,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
let size = this._tabbrowserTabs.verticalMode ? "height" : "width";
|
||||
let screenAxis = this._tabbrowserTabs.verticalMode
|
||||
? "screenY"
|
||||
@@ -365,11 +375,13 @@
|
||||
@@ -368,11 +378,13 @@
|
||||
this._dragToPinPromoCard,
|
||||
];
|
||||
let shouldPin =
|
||||
@@ -85,7 +85,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
isTab(draggedTab) &&
|
||||
draggedTab.pinned &&
|
||||
this._tabbrowserTabs.arrowScrollbox.contains(event.target);
|
||||
@@ -432,6 +444,7 @@
|
||||
@@ -436,6 +448,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
if (shouldTranslate) {
|
||||
let translationPromises = [];
|
||||
for (let item of movingTabs) {
|
||||
@@ -443,7 +456,7 @@
|
||||
@@ -447,7 +460,7 @@
|
||||
item.removeAttribute("tabdrop-samewindow");
|
||||
resolve();
|
||||
};
|
||||
@@ -102,7 +102,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
postTransitionCleanup();
|
||||
} else {
|
||||
let onTransitionEnd = transitionendEvent => {
|
||||
@@ -513,7 +526,7 @@
|
||||
@@ -521,7 +534,7 @@
|
||||
if (tab.selected) {
|
||||
selectedTab = tab;
|
||||
indexForSelectedTab = newIndex;
|
||||
@@ -111,7 +111,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
const newTab = gBrowser.adoptTab(tab, {
|
||||
elementIndex: newIndex,
|
||||
selectTab: tab == draggedTab,
|
||||
@@ -523,7 +536,7 @@
|
||||
@@ -531,7 +544,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -120,7 +120,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
const newTab = gBrowser.adoptTab(selectedTab, {
|
||||
elementIndex: indexForSelectedTab,
|
||||
selectTab: selectedTab == draggedTab,
|
||||
@@ -534,10 +547,6 @@
|
||||
@@ -542,10 +555,6 @@
|
||||
}
|
||||
|
||||
// Restore tab selection
|
||||
@@ -131,7 +131,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
} else {
|
||||
// Pass true to disallow dropping javascript: or data: urls
|
||||
let links;
|
||||
@@ -584,6 +593,7 @@
|
||||
@@ -592,6 +601,7 @@
|
||||
|
||||
let nextItem = this._tabbrowserTabs.dragAndDropElements[newIndex];
|
||||
let tabGroup = isTab(nextItem) && nextItem.group;
|
||||
@@ -139,7 +139,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
gBrowser.loadTabs(urls, {
|
||||
inBackground,
|
||||
replace,
|
||||
@@ -621,7 +631,16 @@
|
||||
@@ -629,7 +639,16 @@
|
||||
this._expandGroupOnDrop(draggedTab);
|
||||
}
|
||||
this._resetTabsAfterDrop(draggedTab.ownerDocument);
|
||||
@@ -157,11 +157,15 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
if (
|
||||
dt.mozUserCancelled ||
|
||||
dt.dropEffect != "none" ||
|
||||
@@ -825,7 +844,10 @@
|
||||
@@ -833,11 +852,10 @@
|
||||
_getDragTarget(event, { ignoreSides = false } = {}) {
|
||||
let { target } = event;
|
||||
while (target) {
|
||||
- if (isTab(target) || isTabGroupLabel(target)) {
|
||||
- if (
|
||||
- isTab(target) ||
|
||||
- isTabGroupLabel(target) ||
|
||||
- isSplitViewWrapper(target)
|
||||
- ) {
|
||||
+ if (isTab(target) || isTabGroupLabel(target) || target?.classList?.contains("tab-group-label-container")) {
|
||||
+ if (target.classList?.contains("tab-group-label-container")) {
|
||||
+ target = target.querySelector(".tab-group-label");
|
||||
@@ -169,7 +173,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
break;
|
||||
}
|
||||
target = target.parentNode;
|
||||
@@ -842,14 +864,17 @@
|
||||
@@ -854,6 +872,9 @@
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -179,17 +183,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
return target;
|
||||
}
|
||||
|
||||
_isContainerVerticalPinnedGrid(tab) {
|
||||
return (
|
||||
this._tabbrowserTabs.verticalMode &&
|
||||
- tab.pinned &&
|
||||
- this._tabbrowserTabs.hasAttribute("expanded") &&
|
||||
+ tab.hasAttribute("zen-essential") &&
|
||||
+ (this._tabbrowserTabs.hasAttribute("expanded") || document.documentElement.hasAttribute("zen-sidebar-expanded")) &&
|
||||
!this._tabbrowserTabs.expandOnHover
|
||||
);
|
||||
}
|
||||
@@ -880,7 +905,8 @@
|
||||
@@ -883,7 +904,8 @@
|
||||
isTabGroupLabel(draggedTab) &&
|
||||
draggedTab._dragData?.expandGroupOnDrop
|
||||
) {
|
||||
@@ -199,7 +193,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1058,7 +1084,6 @@
|
||||
@@ -1061,7 +1083,6 @@
|
||||
// using updateDragImage. On Linux, we can use a panel.
|
||||
if (platform == "win" || platform == "macosx") {
|
||||
captureListener = function () {
|
||||
@@ -207,7 +201,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
};
|
||||
} else {
|
||||
// Create a panel to use it in setDragImage
|
||||
@@ -1096,7 +1121,6 @@
|
||||
@@ -1099,7 +1120,6 @@
|
||||
);
|
||||
dragImageOffset = dragImageOffset * scale;
|
||||
}
|
||||
@@ -215,7 +209,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
|
||||
// _dragData.offsetX/Y give the coordinates that the mouse should be
|
||||
// positioned relative to the corner of the new window created upon
|
||||
@@ -1115,7 +1139,7 @@
|
||||
@@ -1118,7 +1138,7 @@
|
||||
let dropEffect = this.getDropEffectForTabDrag(event);
|
||||
let isMovingInTabStrip = !fromTabList && dropEffect == "move";
|
||||
let collapseTabGroupDuringDrag =
|
||||
@@ -224,7 +218,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
|
||||
tab._dragData = {
|
||||
offsetX: this._tabbrowserTabs.verticalMode
|
||||
@@ -1125,7 +1149,7 @@
|
||||
@@ -1128,7 +1148,7 @@
|
||||
? event.screenY - window.screenY - tabOffset
|
||||
: event.screenY - window.screenY,
|
||||
scrollPos:
|
||||
@@ -233,7 +227,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
? this._tabbrowserTabs.pinnedTabsContainer.scrollPosition
|
||||
: this._tabbrowserTabs.arrowScrollbox.scrollPosition,
|
||||
screenX: event.screenX,
|
||||
@@ -1152,6 +1176,7 @@
|
||||
@@ -1155,6 +1175,7 @@
|
||||
|
||||
if (collapseTabGroupDuringDrag) {
|
||||
tab.group.collapsed = true;
|
||||
@@ -241,7 +235,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1176,6 +1201,7 @@
|
||||
@@ -1179,6 +1200,7 @@
|
||||
if (tabStripItemElement.hasAttribute("dragtarget")) {
|
||||
return;
|
||||
}
|
||||
@@ -249,7 +243,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
let isPinned = tab.pinned;
|
||||
let numPinned = gBrowser.pinnedTabCount;
|
||||
let dragAndDropElements = this._tabbrowserTabs.dragAndDropElements;
|
||||
@@ -1601,7 +1627,6 @@
|
||||
@@ -1604,7 +1626,6 @@
|
||||
|
||||
for (let item of this._tabbrowserTabs.dragAndDropElements) {
|
||||
item = elementToMove(item);
|
||||
@@ -257,7 +251,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
item.removeAttribute("multiselected-move-together");
|
||||
delete item._moveTogetherSelectedTabsData;
|
||||
}
|
||||
@@ -2429,7 +2454,6 @@
|
||||
@@ -2432,7 +2453,6 @@
|
||||
for (let item of this._tabbrowserTabs.dragAndDropElements) {
|
||||
this._resetGroupTarget(item);
|
||||
item = elementToMove(item);
|
||||
@@ -265,7 +259,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
|
||||
}
|
||||
this._tabbrowserTabs.removeAttribute("movingtab-group");
|
||||
this._tabbrowserTabs.removeAttribute("movingtab-ungroup");
|
||||
@@ -2460,17 +2484,14 @@
|
||||
@@ -2463,17 +2483,14 @@
|
||||
tab.style.left = "";
|
||||
tab.style.top = "";
|
||||
tab.style.maxWidth = "";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
|
||||
index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c9b8386b3 100644
|
||||
index 836bee14d2b63604688ebe477a5d915a5e99b305..a675aed711560b4a44604fc17478cffa7fb68439 100644
|
||||
--- a/browser/components/tabbrowser/content/tab.js
|
||||
+++ b/browser/components/tabbrowser/content/tab.js
|
||||
@@ -21,6 +21,7 @@
|
||||
@@ -14,7 +14,7 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
||||
<hbox class="tab-secondary-label">
|
||||
<label class="tab-icon-sound-label tab-icon-sound-pip-label" data-l10n-id="browser-tab-audio-pip" role="presentation"/>
|
||||
</hbox>
|
||||
+ <label class="tab-reset-pin-label" data-l10n-id="tab-reset-pin-label" role="presentation"/>
|
||||
+ <label class="zen-tab-sublabel" data-l10n-id="zen-tab-sublabel" data-l10n-args='{"tabSubtitle": "zen-default-pinned"}' role="presentation"/>
|
||||
</vbox>
|
||||
<image class="tab-note-icon" role="presentation"/>
|
||||
<image class="tab-close-button close-icon" role="button" data-l10n-id="tabbrowser-close-tabs-button" data-l10n-args='{"tabCount": 1}' keyNav="false"/>
|
||||
@@ -52,7 +52,7 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -224,11 +227,21 @@
|
||||
@@ -224,11 +227,23 @@
|
||||
}
|
||||
|
||||
get visible() {
|
||||
@@ -64,7 +64,6 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
||||
+ if (!this.isOpen || this.hidden || this.hasAttribute("zen-empty-tab")) {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ // Selected tabs are always visible
|
||||
+ if (this.selected || this.multiselected || this.hasAttribute("folder-active")) return true;
|
||||
+ // Recursively check all parent groups
|
||||
@@ -75,11 +74,14 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
||||
+ }
|
||||
+ currentParent = currentParent.group;
|
||||
+ }
|
||||
+ if (this.pinned && !this.hasAttribute("zen-essential") && gZenWorkspaces.activeWorkspaceElement?.hasCollapsedPinnedTabs) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ return true;
|
||||
}
|
||||
|
||||
get hidden() {
|
||||
@@ -307,7 +320,7 @@
|
||||
@@ -307,7 +322,7 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -88,7 +90,7 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
||||
}
|
||||
|
||||
get lastAccessed() {
|
||||
@@ -384,7 +397,18 @@
|
||||
@@ -384,7 +399,18 @@
|
||||
}
|
||||
|
||||
get group() {
|
||||
@@ -108,7 +110,7 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
||||
}
|
||||
|
||||
get splitview() {
|
||||
@@ -489,6 +513,8 @@
|
||||
@@ -489,6 +515,8 @@
|
||||
this.style.MozUserFocus = "ignore";
|
||||
} else if (
|
||||
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-audio-button")
|
||||
) {
|
||||
@@ -543,6 +569,10 @@
|
||||
@@ -543,6 +571,10 @@
|
||||
this.style.MozUserFocus = "";
|
||||
}
|
||||
|
||||
@@ -128,7 +130,7 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
||||
on_click(event) {
|
||||
if (event.button != 0) {
|
||||
return;
|
||||
@@ -603,6 +633,14 @@
|
||||
@@ -603,6 +635,14 @@
|
||||
// (see tabbrowser-tabs 'click' handler).
|
||||
gBrowser.tabContainer._blockDblClick = true;
|
||||
}
|
||||
@@ -143,7 +145,7 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..1cd3395961a80e3b48582794b5b5365c
|
||||
}
|
||||
|
||||
on_dblclick(event) {
|
||||
@@ -626,6 +664,8 @@
|
||||
@@ -626,6 +666,8 @@
|
||||
animate: true,
|
||||
triggeringEvent: event,
|
||||
});
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user