Compare commits
38 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2564a8973e | ||
|
|
f257ff6d8a | ||
|
|
0e213d54db | ||
|
|
2c98d5849a | ||
|
|
cccdcc960b | ||
|
|
123a7923af | ||
|
|
cd71a36765 | ||
|
|
80f424f68d | ||
|
|
7ce5fb77b9 | ||
|
|
08acc6a39e | ||
|
|
8ae271d982 | ||
|
|
ba26c902fb | ||
|
|
89a50770a9 | ||
|
|
036f764d2b | ||
|
|
2c11b9295e | ||
|
|
d7839cdb91 | ||
|
|
67cef284dd | ||
|
|
36df7e718f | ||
|
|
d5b88ead22 | ||
|
|
7261eb1688 | ||
|
|
b5a251a92f | ||
|
|
a217cacfef | ||
|
|
a56bcf3d9c | ||
|
|
5963de1486 | ||
|
|
57ad5c45e7 | ||
|
|
e6bebab10a | ||
|
|
a8820ed409 | ||
|
|
a82a7fb055 | ||
|
|
2be85a2890 | ||
|
|
9301e1b64c | ||
|
|
1e04f394a5 | ||
|
|
665f500925 | ||
|
|
88ebf6e5da | ||
|
|
556beb01b0 | ||
|
|
48d5b32a5a | ||
|
|
4682c8d545 | ||
|
|
2c5fc47e74 | ||
|
|
237f0c0ea5 |
1
.github/workflows/macos-profile-build.yml
vendored
@@ -23,6 +23,7 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
arch: [x86_64, aarch64]
|
arch: [x86_64, aarch64]
|
||||||
|
|
||||||
runs-on: ${{ matrix.arch == 'x86_64' && 'macos-15-intel' || 'macos-26' }}
|
runs-on: ${{ matrix.arch == 'x86_64' && 'macos-15-intel' || 'macos-26' }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
1
.github/workflows/windows-profile-build.yml
vendored
@@ -27,6 +27,7 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
arch: [x86_64, aarch64]
|
arch: [x86_64, aarch64]
|
||||||
|
|
||||||
runs-on: ${{ inputs.release-branch == 'release' && 'windows-latest' || 'windows-latest' }}
|
runs-on: ${{ inputs.release-branch == 'release' && 'windows-latest' || 'windows-latest' }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
4
.github/workflows/windows-release-build.yml
vendored
@@ -207,10 +207,8 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
# Stored in build/windows/.windows-rs-version
|
# Stored in build/windows/.windows-rs-version
|
||||||
WINDOWS_RS_VERSION=$(cat build/windows/.windows-rs-version)
|
WINDOWS_RS_VERSION=$(cat build/windows/.windows-rs-version)
|
||||||
curl -fsSL "https://static.crates.io/crates/cargo-download/cargo-download-0.1.2.crate" | tar xz -C /tmp
|
|
||||||
(cd /tmp/cargo-download-0.1.2 && cargo generate-lockfile && cargo update tinyvec --precise 1.12.0)
|
|
||||||
RUSTFLAGS="--cap-lints=allow" cargo install --path /tmp/cargo-download-0.1.2 --locked
|
|
||||||
cd engine/
|
cd engine/
|
||||||
|
cargo install cargo-download --locked
|
||||||
cargo download -x windows=$WINDOWS_RS_VERSION
|
cargo download -x windows=$WINDOWS_RS_VERSION
|
||||||
export CARGO_INCREMENTAL=0
|
export CARGO_INCREMENTAL=0
|
||||||
echo "" >> ../configs/common/mozconfig
|
echo "" >> ../configs/common/mozconfig
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
1.95.0
|
1.94.1
|
||||||
@@ -34,8 +34,8 @@ Zen is a firefox-based browser with the aim of pushing your productivity to a ne
|
|||||||
|
|
||||||
### Firefox Versions
|
### Firefox Versions
|
||||||
|
|
||||||
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `156.0`!
|
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `155.0`!
|
||||||
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 156.0`!
|
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 155.0`!
|
||||||
|
|
||||||
### Contributing
|
### Contributing
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
07c99209a6e4c794752e9a242215199ad3ea10f6
|
20e5abbb642ab21d943bc1261864d9c531ba421a
|
||||||
@@ -147,9 +147,9 @@ function SignAndPackage($name) {
|
|||||||
$env:ZEN_SETUP_EXE_PATH="$PWD\windsign-temp\windows-x64-obj-$name\browser\installer\windows\instgen\setup.exe"
|
$env:ZEN_SETUP_EXE_PATH="$PWD\windsign-temp\windows-x64-obj-$name\browser\installer\windows\instgen\setup.exe"
|
||||||
|
|
||||||
if ($name -eq "arm64") {
|
if ($name -eq "arm64") {
|
||||||
$env:WIN32_REDIST_DIR="$PWD\win-cross\vs2026\VC\Redist\MSVC\14.51.36231\arm64\Microsoft.VC145.CRT"
|
$env:WIN32_REDIST_DIR="$PWD\win-cross\vs2026\VC\Redist\MSVC\14.50.35710\arm64\Microsoft.VC145.CRT"
|
||||||
} else {
|
} else {
|
||||||
$env:WIN32_REDIST_DIR="$PWD\win-cross\vs2026\VC\Redist\MSVC\14.51.36231\x64\Microsoft.VC145.CRT"
|
$env:WIN32_REDIST_DIR="$PWD\win-cross\vs2026\VC\Redist\MSVC\14.50.35710\x64\Microsoft.VC145.CRT"
|
||||||
}
|
}
|
||||||
|
|
||||||
$env:MAR="..\\build\\windows\\mar.exe"
|
$env:MAR="..\\build\\windows\\mar.exe"
|
||||||
|
|||||||
@@ -53,10 +53,7 @@ fi
|
|||||||
if test "$ZEN_RELEASE"; then
|
if test "$ZEN_RELEASE"; then
|
||||||
|
|
||||||
ac_add_options --enable-clang-plugin
|
ac_add_options --enable-clang-plugin
|
||||||
|
ac_add_options --enable-bootstrap=-sccache
|
||||||
if ! test "$ZEN_DISABLE_BOOTSTRAP"; then
|
|
||||||
ac_add_options --enable-bootstrap=-sccache
|
|
||||||
fi
|
|
||||||
|
|
||||||
ac_add_options --enable-optimize
|
ac_add_options --enable-optimize
|
||||||
|
|
||||||
@@ -72,11 +69,16 @@ if test "$ZEN_RELEASE"; then
|
|||||||
ac_add_options --disable-geckodriver
|
ac_add_options --disable-geckodriver
|
||||||
ac_add_options --disable-rust-tests
|
ac_add_options --disable-rust-tests
|
||||||
|
|
||||||
if test "$ZEN_DISABLE_LTO"; then
|
if ! test "$ZEN_DISABLE_LTO"; then
|
||||||
ac_add_options --disable-lto
|
# only enable full LTO when ZEN_RELEASE_BRANCH is 'release'
|
||||||
else
|
if test "$ZEN_RELEASE_BRANCH" = "release"; then
|
||||||
export MOZ_LTO=cross,thin
|
# TODO: make it "full" once we have the resources to build it
|
||||||
ac_add_options --enable-lto=cross,thin
|
export MOZ_LTO=cross,full
|
||||||
|
ac_add_options --enable-lto=cross,full
|
||||||
|
else
|
||||||
|
export MOZ_LTO=cross,thin
|
||||||
|
ac_add_options --enable-lto=cross,thin
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mk_add_options MOZILLA_OFFICIAL=1
|
mk_add_options MOZILLA_OFFICIAL=1
|
||||||
|
|||||||
@@ -9,9 +9,6 @@ if test "$ZEN_RELEASE"; then
|
|||||||
|
|
||||||
# Enable Profile Guided Optimization
|
# Enable Profile Guided Optimization
|
||||||
if ! test "$ZEN_GA_DISABLE_PGO"; then
|
if ! test "$ZEN_GA_DISABLE_PGO"; then
|
||||||
export MOZ_LTO=cross,full
|
|
||||||
ac_add_options --enable-lto=cross,full
|
|
||||||
|
|
||||||
if test "$ZEN_GA_GENERATE_PROFILE"; then
|
if test "$ZEN_GA_GENERATE_PROFILE"; then
|
||||||
mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
|
mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
|
||||||
ac_add_options --enable-profile-generate=cross
|
ac_add_options --enable-profile-generate=cross
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ if test "$ZEN_CROSS_COMPILING"; then
|
|||||||
CROSS_COMPILE=1
|
CROSS_COMPILE=1
|
||||||
|
|
||||||
if test "$SURFER_COMPAT" = "aarch64"; then
|
if test "$SURFER_COMPAT" = "aarch64"; then
|
||||||
export WIN32_REDIST_DIR="$WINSYSROOT/VC/Redist/MSVC/14.51.36231/arm64/Microsoft.VC145.CRT"
|
export WIN32_REDIST_DIR="$WINSYSROOT/VC/Redist/MSVC/14.50.35710/arm64/Microsoft.VC145.CRT"
|
||||||
else
|
else
|
||||||
export WIN32_REDIST_DIR="$WINSYSROOT/VC/Redist/MSVC/14.51.36231/x64/Microsoft.VC145.CRT"
|
export WIN32_REDIST_DIR="$WINSYSROOT/VC/Redist/MSVC/14.50.35710/x64/Microsoft.VC145.CRT"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -45,9 +45,6 @@ if test "$ZEN_CROSS_COMPILING"; then
|
|||||||
ac_add_options --enable-profile-use=cross
|
ac_add_options --enable-profile-use=cross
|
||||||
ac_add_options --with-pgo-profile-path=$(echo ~)/artifact/merged.profdata
|
ac_add_options --with-pgo-profile-path=$(echo ~)/artifact/merged.profdata
|
||||||
ac_add_options --with-pgo-jarlog=$(echo ~)/artifact/en-US.log
|
ac_add_options --with-pgo-jarlog=$(echo ~)/artifact/en-US.log
|
||||||
|
|
||||||
export MOZ_LTO=cross,full
|
|
||||||
ac_add_options --enable-lto=cross,full
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -20,11 +20,11 @@ files:
|
|||||||
translation: browser/browser/preferences/zen-preferences.ftl
|
translation: browser/browser/preferences/zen-preferences.ftl
|
||||||
- source: en-US/browser/browser/zen-folders.ftl
|
- source: en-US/browser/browser/zen-folders.ftl
|
||||||
translation: browser/browser/zen-folders.ftl
|
translation: browser/browser/zen-folders.ftl
|
||||||
|
- source: en-US/browser/browser/zen-library.ftl
|
||||||
|
translation: browser/browser/zen-library.ftl
|
||||||
- source: en-US/browser/browser/zen-boosts.ftl
|
- source: en-US/browser/browser/zen-boosts.ftl
|
||||||
translation: browser/browser/zen-boosts.ftl
|
translation: browser/browser/zen-boosts.ftl
|
||||||
- source: en-US/browser/browser/zen-space-routing.ftl
|
- source: en-US/browser/browser/zen-space-routing.ftl
|
||||||
translation: browser/browser/zen-space-routing.ftl
|
translation: browser/browser/zen-space-routing.ftl
|
||||||
- source: en-US/browser/browser/zen-command-palette.ftl
|
- source: en-US/browser/browser/zen-command-palette.ftl
|
||||||
translation: browser/browser/zen-command-palette.ftl
|
translation: browser/browser/zen-command-palette.ftl
|
||||||
- source: en-US/browser/browser/zen-share.ftl
|
|
||||||
translation: browser/browser/zen-share.ftl
|
|
||||||
|
|||||||
@@ -68,10 +68,6 @@ zen-settings-workspaces-sync =
|
|||||||
.label = Sync your sidebar across devices
|
.label = Sync your sidebar across devices
|
||||||
.description = Keep your workspaces, pinned tabs and folders in sync on all your devices through your Mozilla account.
|
.description = Keep your workspaces, pinned tabs and folders in sync on all your devices through your Mozilla account.
|
||||||
|
|
||||||
zen-settings-normal-tabs-sync =
|
|
||||||
.label = Include unpinned tabs
|
|
||||||
.description = Also sync the regular tabs of each space, not just your pinned tabs and folders.
|
|
||||||
|
|
||||||
zen-settings-workspaces-sync-unpinned-tabs =
|
zen-settings-workspaces-sync-unpinned-tabs =
|
||||||
.label = Sync only pinned tabs in workspaces
|
.label = Sync only pinned tabs in workspaces
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,6 @@
|
|||||||
zen-action-toggle-compact-mode = Toggle Compact Mode
|
zen-action-toggle-compact-mode = Toggle Compact Mode
|
||||||
zen-action-open-theme-picker = Open Theme Picker
|
zen-action-open-theme-picker = Open Theme Picker
|
||||||
zen-action-new-split-view = New Split View
|
zen-action-new-split-view = New Split View
|
||||||
zen-action-unsplit-view = Expand current view
|
|
||||||
zen-action-new-space = New Space
|
|
||||||
zen-action-new-folder = New Folder
|
zen-action-new-folder = New Folder
|
||||||
zen-action-copy-current-url = Copy Current URL
|
zen-action-copy-current-url = Copy Current URL
|
||||||
zen-action-settings = Settings
|
zen-action-settings = Settings
|
||||||
@@ -20,9 +18,6 @@ zen-action-new-boost = New Boost
|
|||||||
zen-action-next-space = Next Space
|
zen-action-next-space = Next Space
|
||||||
zen-action-previous-space = Previous Space
|
zen-action-previous-space = Previous Space
|
||||||
zen-action-close-tab = Close Tab
|
zen-action-close-tab = Close Tab
|
||||||
zen-action-reopen-closed-tab = Reopen Closed Tab
|
|
||||||
zen-action-duplicate-tab = Duplicate Current Tab
|
|
||||||
zen-action-reset-pinned-tab = Reset Pinned Tab
|
|
||||||
zen-action-reload-tab = Reload Tab
|
zen-action-reload-tab = Reload Tab
|
||||||
zen-action-reload-tab-without-cache = Reload Tab Without Cache
|
zen-action-reload-tab-without-cache = Reload Tab Without Cache
|
||||||
zen-action-next-tab = Next Tab
|
zen-action-next-tab = Next Tab
|
||||||
@@ -39,4 +34,3 @@ zen-action-switch-to-dark-mode = Switch to Dark Mode
|
|||||||
zen-action-print = Print
|
zen-action-print = Print
|
||||||
zen-action-focus-on = Focus on
|
zen-action-focus-on = Focus on
|
||||||
zen-action-extension = Extension
|
zen-action-extension = Extension
|
||||||
zen-action-open = Open
|
|
||||||
|
|||||||
@@ -2,87 +2,93 @@
|
|||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
zen-library-button =
|
|
||||||
.label = Library
|
|
||||||
.tooltiptext = Library
|
|
||||||
|
|
||||||
library-footer-close-button =
|
|
||||||
.tooltiptext = Close library
|
|
||||||
library-footer-donate-button =
|
|
||||||
.tooltiptext = Donate to Zen
|
|
||||||
|
|
||||||
library-history-section-title = History
|
|
||||||
library-downloads-section-title = Downloads
|
|
||||||
library-boosts-section-title = Boosts
|
|
||||||
library-spaces-section-title = Spaces
|
library-spaces-section-title = Spaces
|
||||||
|
library-downloads-section-title = Downloads
|
||||||
|
library-history-section-title = History
|
||||||
|
library-boosts-section-title = Boosts
|
||||||
|
|
||||||
library-filter-button = Filter
|
library-search-placeholder =
|
||||||
library-filter-done = Done
|
.placeholder = Search…
|
||||||
|
|
||||||
library-history-filter-title = Filter History…
|
|
||||||
library-history-filter-when = When was it visited?
|
|
||||||
library-filter-today = Today
|
|
||||||
library-filter-week = This Week
|
|
||||||
library-filter-month = This Month
|
|
||||||
library-history-filter-sort = Sort by
|
|
||||||
library-history-sort-date = By Date
|
|
||||||
library-history-sort-site = By Site
|
|
||||||
library-history-sort-most-visited = By Most Visited
|
|
||||||
library-history-sort-last-visited = By Last Visited
|
|
||||||
library-history-site-other = Other
|
|
||||||
library-history-search-placeholder =
|
library-history-search-placeholder =
|
||||||
.placeholder = Search History…
|
.placeholder = Search History…
|
||||||
|
library-downloads-search-placeholder =
|
||||||
|
.placeholder = Search Downloads…
|
||||||
|
|
||||||
|
library-history-today = Today
|
||||||
|
library-history-yesterday = Yesterday
|
||||||
|
|
||||||
library-history-empty = No history found
|
library-history-empty = No history found
|
||||||
library-history-forget-button =
|
|
||||||
.title = Remove from history
|
|
||||||
library-history-reopen-button =
|
|
||||||
.title = Reopen page
|
|
||||||
|
|
||||||
library-downloads-empty = No downloads found
|
library-downloads-empty = No downloads found
|
||||||
library-downloads-more-button =
|
library-spaces-empty = No spaces available
|
||||||
.title = More options
|
library-boosts-empty = No boosts yet
|
||||||
library-downloads-menu-open =
|
library-search-no-results = No results
|
||||||
.label = Open { $name }
|
|
||||||
library-downloads-menu-copy =
|
|
||||||
.label = Copy { $name }
|
|
||||||
library-downloads-menu-hide =
|
|
||||||
.label = Hide from Zen
|
|
||||||
library-downloads-menu-trash =
|
|
||||||
.label = Move to Trash
|
|
||||||
library-downloads-opening-in = { PLATFORM() ->
|
|
||||||
[macos] Opening in Finder…
|
|
||||||
[windows] Opening in File Explorer…
|
|
||||||
*[other] Opening in file manager…
|
|
||||||
}
|
|
||||||
library-downloads-cancel-button =
|
|
||||||
.title = Cancel download
|
|
||||||
library-downloads-filter-title = Filter Downloads…
|
|
||||||
library-downloads-filter-type = File type
|
|
||||||
library-downloads-filter-when = When was it downloaded?
|
|
||||||
library-downloads-type-images = Images
|
|
||||||
library-downloads-type-video = Video
|
|
||||||
library-downloads-type-audio = Audio
|
|
||||||
library-downloads-type-documents = Documents
|
|
||||||
library-downloads-type-archives = Archives
|
|
||||||
library-downloads-type-apps = Apps
|
|
||||||
library-downloads-retry-button =
|
|
||||||
.title = Retry download
|
|
||||||
|
|
||||||
library-spaces-theme-button =
|
|
||||||
.title = Change theme
|
|
||||||
library-spaces-move-button =
|
|
||||||
.title = Drag to reorder
|
|
||||||
library-spaces-actions-button =
|
|
||||||
.tooltiptext = More options
|
|
||||||
library-spaces-icon-button =
|
|
||||||
.title = Change icon
|
|
||||||
library-spaces-name-button =
|
|
||||||
.title = Rename space
|
|
||||||
|
|
||||||
library-boosts-search-placeholder =
|
library-boosts-search-placeholder =
|
||||||
.placeholder = Search Boosts…
|
.placeholder = Search Boosts…
|
||||||
library-boosts-empty = No boosts yet
|
|
||||||
library-boosts-toggle =
|
library-boost-toggle =
|
||||||
.aria-label = Enable boost
|
.tooltiptext = Toggle boost for this site
|
||||||
library-boosts-menu-edit =
|
library-boost-context-edit =
|
||||||
.label = Edit Boost
|
.label = Edit Boost
|
||||||
|
library-boost-context-export =
|
||||||
|
.label = Export Boost
|
||||||
|
library-boost-context-delete =
|
||||||
|
.label = Delete Boost
|
||||||
|
|
||||||
|
library-filter-button = Filter
|
||||||
|
|
||||||
|
library-history-filter-all =
|
||||||
|
.label = All time
|
||||||
|
library-history-filter-today =
|
||||||
|
.label = Today
|
||||||
|
library-history-filter-yesterday =
|
||||||
|
.label = Yesterday
|
||||||
|
library-history-filter-last-7-days =
|
||||||
|
.label = Last 7 days
|
||||||
|
library-history-filter-last-30-days =
|
||||||
|
.label = Last 30 days
|
||||||
|
|
||||||
|
library-downloads-filter-all =
|
||||||
|
.label = All
|
||||||
|
library-downloads-filter-completed =
|
||||||
|
.label = Completed
|
||||||
|
library-downloads-filter-in-progress =
|
||||||
|
.label = In progress
|
||||||
|
library-downloads-filter-failed =
|
||||||
|
.label = Failed
|
||||||
|
library-downloads-filter-paused =
|
||||||
|
.label = Paused
|
||||||
|
|
||||||
|
library-item-context-open =
|
||||||
|
.label = Open
|
||||||
|
library-item-context-open-glance =
|
||||||
|
.label = Open in Glance
|
||||||
|
library-item-context-open-new-tab =
|
||||||
|
.label = Open in New Tab
|
||||||
|
library-item-context-open-new-window =
|
||||||
|
.label = Open in New Window
|
||||||
|
library-item-context-copy-url =
|
||||||
|
.label = Copy URL
|
||||||
|
library-item-context-delete-history =
|
||||||
|
.label = Forget About This Page
|
||||||
|
library-item-context-open-source =
|
||||||
|
.label = Open Source URL
|
||||||
|
library-item-context-remove =
|
||||||
|
.label = Remove from History
|
||||||
|
library-item-context-delete-file =
|
||||||
|
.label = Delete File
|
||||||
|
|
||||||
|
library-history-action-remove =
|
||||||
|
.tooltiptext = Forget About This Page
|
||||||
|
library-history-action-open-tab =
|
||||||
|
.tooltiptext = Open in New Tab
|
||||||
|
|
||||||
|
library-downloads-state-downloading = Downloading…
|
||||||
|
library-downloads-state-canceled = Canceled
|
||||||
|
library-downloads-state-failed = Failed
|
||||||
|
library-downloads-state-incomplete = Incomplete
|
||||||
|
|
||||||
|
library-close-button =
|
||||||
|
.tooltiptext = Close Library
|
||||||
|
library-donate-button =
|
||||||
|
.tooltiptext = Support Zen
|
||||||
|
|||||||
@@ -1,43 +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/.
|
|
||||||
|
|
||||||
zen-share-space =
|
|
||||||
.label = Share Space…
|
|
||||||
zen-share-folder =
|
|
||||||
.label = Share Folder…
|
|
||||||
zen-share-split-view =
|
|
||||||
.label = Share Split View…
|
|
||||||
|
|
||||||
zen-share-link-copied-toast = Share link copied!
|
|
||||||
zen-share-link-expires-description = Anyone with the link can open it until { $date }
|
|
||||||
zen-share-link-permanent-description = Anyone with the link can open it
|
|
||||||
|
|
||||||
zen-share-error-toast = Couldn't create a share link
|
|
||||||
zen-share-error-auth-description = The share server rejected your key
|
|
||||||
zen-share-error-too-large-description = This share is too big to upload
|
|
||||||
zen-share-error-rate-limited-description = You're sharing too fast, try again in a minute
|
|
||||||
zen-share-error-network-description = Couldn't reach the share server
|
|
||||||
zen-share-error-empty-description = There's nothing shareable here
|
|
||||||
zen-share-error-server-description = The share server returned an error
|
|
||||||
|
|
||||||
zen-share-overlay-loading = Loading shared tabs…
|
|
||||||
zen-share-overlay-from-space = A Space from { $name }
|
|
||||||
zen-share-overlay-from-folder = A Folder from { $name }
|
|
||||||
zen-share-overlay-shared-with-you = Shared with you
|
|
||||||
zen-share-overlay-add-space = Add Space to Zen
|
|
||||||
zen-share-overlay-add-folder = Add Folder to Zen
|
|
||||||
zen-share-imported-toast = Added to your browser!
|
|
||||||
zen-share-import-error-toast = Couldn't import this share
|
|
||||||
zen-share-import-error-dead-description = The link has expired or doesn't exist
|
|
||||||
zen-share-import-error-invalid-description = The shared data is invalid
|
|
||||||
|
|
||||||
zen-share-confirm-title = Share link
|
|
||||||
zen-share-confirm-dialog =
|
|
||||||
.buttonlabelaccept = Share
|
|
||||||
zen-share-confirm-description = Zen uploads a copy of these tabs to the share server and copies a link anyone can open. The link expires after 30 days.
|
|
||||||
zen-share-confirm-anonymous = Sharing is anonymous unless you add a name.
|
|
||||||
zen-share-confirm-name-input =
|
|
||||||
.placeholder = Your name (optional)
|
|
||||||
zen-share-confirm-dont-ask =
|
|
||||||
.label = Don't ask me again
|
|
||||||
@@ -24,11 +24,6 @@ zen-welcome-default-search-description = Choose your default search engine. You
|
|||||||
zen-welcome-essentials-title = Choose the apps you use most.
|
zen-welcome-essentials-title = Choose the apps you use most.
|
||||||
zen-welcome-essentials-description = Select your favorite apps to keep them handy in your sidebar.
|
zen-welcome-essentials-description = Select your favorite apps to keep them handy in your sidebar.
|
||||||
|
|
||||||
zen-welcome-block-ads-title = Block ads and trackers?
|
|
||||||
zen-welcome-block-ads-description = { -brand-short-name } can install uBlock Origin for you, so pages load cleaner and faster. You can remove it any time.
|
|
||||||
zen-welcome-block-ads-yes = <strong>YES</strong>, block ads for me.
|
|
||||||
zen-welcome-block-ads-no = <strong>NO</strong>, show me everything.
|
|
||||||
|
|
||||||
zen-welcome-workspace-colors-title = Your space, your colors.
|
zen-welcome-workspace-colors-title = Your space, your colors.
|
||||||
zen-welcome-workspace-colors-description = Personalize your browser by giving each space its own unique color identity.
|
zen-welcome-workspace-colors-description = Personalize your browser by giving each space its own unique color identity.
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,4 @@
|
|||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
- name: zen.library.enabled
|
- name: zen.library.enabled
|
||||||
value: "@IS_TWILIGHT@"
|
value: false
|
||||||
|
|
||||||
- name: zen.library.last-tab
|
|
||||||
value: "history"
|
|
||||||
@@ -2,18 +2,5 @@
|
|||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
- name: zen.share.base-url
|
- name: zen.share.enabled
|
||||||
value: "https://share.zen-browser.app"
|
|
||||||
|
|
||||||
- name: zen.share.secret-key
|
|
||||||
value: ""
|
|
||||||
|
|
||||||
- name: zen.share.display-name
|
|
||||||
value: ""
|
|
||||||
|
|
||||||
# Allow zen.share.display-name to be synced across devices.
|
|
||||||
- name: services.sync.prefs.sync.zen.share.display-name
|
|
||||||
value: true
|
value: true
|
||||||
|
|
||||||
- name: zen.share.dont-ask-before-sharing
|
|
||||||
value: false
|
|
||||||
|
|||||||
@@ -8,9 +8,3 @@
|
|||||||
|
|
||||||
- name: zen.spaces-sync.debug
|
- name: zen.spaces-sync.debug
|
||||||
value: false
|
value: false
|
||||||
|
|
||||||
- name: zen.spaces-sync.normal-tabs
|
|
||||||
value: false
|
|
||||||
|
|
||||||
- name: services.sync.prefs.sync.zen.spaces-sync.normal-tabs
|
|
||||||
value: true
|
|
||||||
|
|||||||
@@ -20,9 +20,6 @@
|
|||||||
- name: zen.theme.acrylic-elements
|
- name: zen.theme.acrylic-elements
|
||||||
value: "@IS_TWILIGHT@"
|
value: "@IS_TWILIGHT@"
|
||||||
|
|
||||||
- name: zen.theme.squircle-browser-view
|
|
||||||
value: "@IS_TWILIGHT@"
|
|
||||||
|
|
||||||
- name: zen.theme.disable-lightweight
|
- name: zen.theme.disable-lightweight
|
||||||
value: true
|
value: true
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/.stylelintignore b/.stylelintignore
|
diff --git a/.stylelintignore b/.stylelintignore
|
||||||
index 185490999507b8a5032977237af50f5e61c71df1..4b1b1dc76d316f38f60c90e6cbd74d9569800d04 100644
|
index 185490999507b8a5032977237af50f5e61c71df1..77c1635d90c6480af4ebd3c6e3ec49780eaca571 100644
|
||||||
--- a/.stylelintignore
|
--- a/.stylelintignore
|
||||||
+++ b/.stylelintignore
|
+++ b/.stylelintignore
|
||||||
@@ -106,3 +106,20 @@ build/pgo/blueprint/**/*.css
|
@@ -106,3 +106,19 @@ build/pgo/blueprint/**/*.css
|
||||||
# under our control or we don't want to modify at this point:
|
# under our control or we don't want to modify at this point:
|
||||||
testing/web-platform/mozilla/
|
testing/web-platform/mozilla/
|
||||||
testing/web-platform/tests/
|
testing/web-platform/tests/
|
||||||
@@ -20,6 +20,5 @@ index 185490999507b8a5032977237af50f5e61c71df1..4b1b1dc76d316f38f60c90e6cbd74d95
|
|||||||
+zen/split-view/zen-split-view.css
|
+zen/split-view/zen-split-view.css
|
||||||
+zen/spaces/zen-workspaces.css
|
+zen/spaces/zen-workspaces.css
|
||||||
+zen/common/styles/zen-toolbar.css
|
+zen/common/styles/zen-toolbar.css
|
||||||
+zen/common/styles/zen-single-components.css
|
|
||||||
+
|
+
|
||||||
+*.inc
|
+*.inc
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
|
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||||
index a76bb7aae7636c07989a4acb35281777d3103505..d35aa0457307e95ad00464861fcee2827325193e 100644
|
index dd2f391096968564086911c532f696dc7ffb8ae1..c3e809a543397ab360fb83b3f61ef52d3c3bb738 100644
|
||||||
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
||||||
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||||
@@ -2,7 +2,7 @@
|
@@ -2,7 +2,7 @@
|
||||||
@@ -26,7 +26,7 @@ index a76bb7aae7636c07989a4acb35281777d3103505..d35aa0457307e95ad00464861fcee282
|
|||||||
<toolbar id="TabsToolbar"
|
<toolbar id="TabsToolbar"
|
||||||
class="browser-toolbar browser-titlebar"
|
class="browser-toolbar browser-titlebar"
|
||||||
fullscreentoolbar="true"
|
fullscreentoolbar="true"
|
||||||
@@ -56,6 +60,8 @@
|
@@ -54,6 +58,8 @@
|
||||||
<html:sidebar-pins-promo id="drag-to-pin-promo-card"></html:sidebar-pins-promo>
|
<html:sidebar-pins-promo id="drag-to-pin-promo-card"></html:sidebar-pins-promo>
|
||||||
<arrowscrollbox id="pinned-tabs-container" orient="horizontal" clicktoscroll=""></arrowscrollbox>
|
<arrowscrollbox id="pinned-tabs-container" orient="horizontal" clicktoscroll=""></arrowscrollbox>
|
||||||
<splitter orient="vertical" id="vertical-pinned-tabs-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
|
<splitter orient="vertical" id="vertical-pinned-tabs-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
|
||||||
@@ -35,7 +35,7 @@ index a76bb7aae7636c07989a4acb35281777d3103505..d35aa0457307e95ad00464861fcee282
|
|||||||
<hbox class="tab-drop-indicator" hidden="true"/>
|
<hbox class="tab-drop-indicator" hidden="true"/>
|
||||||
<arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend="">
|
<arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend="">
|
||||||
<tab is="tabbrowser-tab" class="tabbrowser-tab" selected="" visuallyselected="" fadein=""/>
|
<tab is="tabbrowser-tab" class="tabbrowser-tab" selected="" visuallyselected="" fadein=""/>
|
||||||
@@ -75,6 +81,7 @@
|
@@ -73,6 +79,7 @@
|
||||||
tooltip="dynamic-shortcut-tooltip"
|
tooltip="dynamic-shortcut-tooltip"
|
||||||
data-l10n-id="tabs-toolbar-new-tab"/>
|
data-l10n-id="tabs-toolbar-new-tab"/>
|
||||||
<html:span id="tabbrowser-tab-a11y-desc" hidden="true"/>
|
<html:span id="tabbrowser-tab-a11y-desc" hidden="true"/>
|
||||||
@@ -43,7 +43,7 @@ index a76bb7aae7636c07989a4acb35281777d3103505..d35aa0457307e95ad00464861fcee282
|
|||||||
</tabs>
|
</tabs>
|
||||||
|
|
||||||
<toolbarbutton id="new-tab-button"
|
<toolbarbutton id="new-tab-button"
|
||||||
@@ -102,9 +109,10 @@
|
@@ -99,9 +106,10 @@
|
||||||
|
|
||||||
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>
|
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>
|
||||||
|
|
||||||
@@ -54,8 +54,8 @@ index a76bb7aae7636c07989a4acb35281777d3103505..d35aa0457307e95ad00464861fcee282
|
|||||||
+</hbox>
|
+</hbox>
|
||||||
|
|
||||||
<toolbar id="nav-bar"
|
<toolbar id="nav-bar"
|
||||||
class="browser-toolbar"
|
class="browser-toolbar chromeclass-location"
|
||||||
@@ -180,7 +188,6 @@
|
@@ -177,7 +185,6 @@
|
||||||
<toolbartabstop/>
|
<toolbartabstop/>
|
||||||
<html:moz-urlbar id="urlbar"
|
<html:moz-urlbar id="urlbar"
|
||||||
class="urlbar"
|
class="urlbar"
|
||||||
|
|||||||
@@ -20,6 +20,5 @@
|
|||||||
#include ../../../zen/fonts/jar.inc.mn
|
#include ../../../zen/fonts/jar.inc.mn
|
||||||
#include ../../../zen/boosts/jar.inc.mn
|
#include ../../../zen/boosts/jar.inc.mn
|
||||||
#include ../../../zen/live-folders/jar.inc.mn
|
#include ../../../zen/live-folders/jar.inc.mn
|
||||||
#include ../../../zen/space-routing/jar.inc.mn
|
|
||||||
#include ../../../zen/share/jar.inc.mn
|
|
||||||
#include ../../../zen/library/jar.inc.mn
|
#include ../../../zen/library/jar.inc.mn
|
||||||
|
#include ../../../zen/space-routing/jar.inc.mn
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
<command id="cmd_zenSplitViewUnsplit" />
|
<command id="cmd_zenSplitViewUnsplit" />
|
||||||
<command id="cmd_zenSplitViewLinkInNewTab" />
|
<command id="cmd_zenSplitViewLinkInNewTab" />
|
||||||
<command id="cmd_zenSplitViewContextMenu" />
|
<command id="cmd_zenSplitViewContextMenu" />
|
||||||
<command id="cmd_zenCtxShareSplitView" />
|
|
||||||
<command id="cmd_zenNewEmptySplit" />
|
<command id="cmd_zenNewEmptySplit" />
|
||||||
|
|
||||||
<!-- Workspace commands -->
|
<!-- Workspace commands -->
|
||||||
@@ -41,7 +40,6 @@
|
|||||||
<command id="cmd_contextZenRemoveFromEssentials" />
|
<command id="cmd_contextZenRemoveFromEssentials" />
|
||||||
|
|
||||||
<command id="cmd_zenCtxDeleteWorkspace" />
|
<command id="cmd_zenCtxDeleteWorkspace" />
|
||||||
<command id="cmd_zenCtxShareWorkspace" />
|
|
||||||
<command id="cmd_zenUnloadWorkspace" />
|
<command id="cmd_zenUnloadWorkspace" />
|
||||||
<command id="cmd_zenUnloadAllOtherWorkspace" />
|
<command id="cmd_zenUnloadAllOtherWorkspace" />
|
||||||
<command id="cmd_zenOpenSpaceRoutingSettings" />
|
<command id="cmd_zenOpenSpaceRoutingSettings" />
|
||||||
@@ -71,7 +69,7 @@
|
|||||||
|
|
||||||
<command id="cmd_zenNewLiveFolder" />
|
<command id="cmd_zenNewLiveFolder" />
|
||||||
|
|
||||||
<command id="cmd_zenDuplicateTab" />
|
|
||||||
|
|
||||||
<command id="cmd_zenToggleLibrary" />
|
<command id="cmd_zenToggleLibrary" />
|
||||||
|
|
||||||
|
<command id="cmd_zenDuplicateTab" />
|
||||||
</commandset>
|
</commandset>
|
||||||
|
|||||||
@@ -9,9 +9,8 @@
|
|||||||
<link rel="localization" href="browser/zen-menubar.ftl"/>
|
<link rel="localization" href="browser/zen-menubar.ftl"/>
|
||||||
<link rel="localization" href="browser/zen-vertical-tabs.ftl"/>
|
<link rel="localization" href="browser/zen-vertical-tabs.ftl"/>
|
||||||
<link rel="localization" href="browser/zen-folders.ftl"/>
|
<link rel="localization" href="browser/zen-folders.ftl"/>
|
||||||
|
<link rel="localization" href="browser/zen-library.ftl"/>
|
||||||
<link rel="localization" href="browser/zen-boosts.ftl"/>
|
<link rel="localization" href="browser/zen-boosts.ftl"/>
|
||||||
<link rel="localization" href="browser/zen-live-folders.ftl"/>
|
<link rel="localization" href="browser/zen-live-folders.ftl"/>
|
||||||
<link rel="localization" href="browser/zen-space-routing.ftl"/>
|
<link rel="localization" href="browser/zen-space-routing.ftl"/>
|
||||||
<link rel="localization" href="browser/zen-share.ftl"/>
|
|
||||||
<link rel="localization" href="browser/zen-library.ftl"/>
|
|
||||||
</linkset>
|
</linkset>
|
||||||
|
|||||||
@@ -32,7 +32,6 @@
|
|||||||
<menuitem id="context_zenUnloadAllOtherWorkspace" data-l10n-id="zen-workspaces-panel-unload-others" command="cmd_zenUnloadAllOtherWorkspace"/>
|
<menuitem id="context_zenUnloadAllOtherWorkspace" data-l10n-id="zen-workspaces-panel-unload-others" command="cmd_zenUnloadAllOtherWorkspace"/>
|
||||||
<menuseparator/>
|
<menuseparator/>
|
||||||
<menuitem data-l10n-id="zen-panel-ui-workspaces-create" command="cmd_zenOpenWorkspaceCreation"/>
|
<menuitem data-l10n-id="zen-panel-ui-workspaces-create" command="cmd_zenOpenWorkspaceCreation"/>
|
||||||
<menuitem id="context_zenShareWorkspace" data-l10n-id="zen-share-space" command="cmd_zenCtxShareWorkspace"/>
|
|
||||||
<menuitem id="context_zenDeleteWorkspace" data-l10n-id="zen-workspaces-panel-context-delete" command="cmd_zenCtxDeleteWorkspace"/>
|
<menuitem id="context_zenDeleteWorkspace" data-l10n-id="zen-workspaces-panel-context-delete" command="cmd_zenCtxDeleteWorkspace"/>
|
||||||
<menuseparator/>
|
<menuseparator/>
|
||||||
<menuitem id="context_zenSpaceRoutingSettings" data-l10n-id="zen-space-routing-settings" command="cmd_zenOpenSpaceRoutingSettings"/>
|
<menuitem id="context_zenSpaceRoutingSettings" data-l10n-id="zen-space-routing-settings" command="cmd_zenOpenSpaceRoutingSettings"/>
|
||||||
@@ -56,7 +55,6 @@
|
|||||||
<menupopup />
|
<menupopup />
|
||||||
</menu>
|
</menu>
|
||||||
<menuitem id="context_zenFolderToSpace" data-l10n-id="zen-folders-panel-convert-folder-to-space" />
|
<menuitem id="context_zenFolderToSpace" data-l10n-id="zen-folders-panel-convert-folder-to-space" />
|
||||||
<menuitem id="context_zenShareFolder" data-l10n-id="zen-share-folder"/>
|
|
||||||
<menuseparator />
|
<menuseparator />
|
||||||
<menuitem id="context_zenFolderUnpack" data-l10n-id="zen-folders-panel-unpack-folder"/>
|
<menuitem id="context_zenFolderUnpack" data-l10n-id="zen-folders-panel-unpack-folder"/>
|
||||||
<menuitem id="context_zenFolderDelete" data-l10n-id="zen-folders-panel-delete-folder"/>
|
<menuitem id="context_zenFolderDelete" data-l10n-id="zen-folders-panel-delete-folder"/>
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
skipintoolbarset="true"
|
skipintoolbarset="true"
|
||||||
context="toolbar-context-menu"
|
context="toolbar-context-menu"
|
||||||
mode="icons">
|
mode="icons">
|
||||||
|
<toolbarbutton removable="true" class="chromeclass-toolbar-additional toolbarbutton-1 zen-sidebar-action-button" id="zen-library-button" command="cmd_zenToggleLibrary"></toolbarbutton>
|
||||||
<toolbarbutton removable="true" class="chromeclass-toolbar-additional toolbarbutton-1 zen-sidebar-action-button" id="zen-expand-sidebar-button" command="cmd_zenToggleSidebar" data-l10n-id="sidebar-zen-expand"></toolbarbutton>
|
<toolbarbutton removable="true" class="chromeclass-toolbar-additional toolbarbutton-1 zen-sidebar-action-button" id="zen-expand-sidebar-button" command="cmd_zenToggleSidebar" data-l10n-id="sidebar-zen-expand"></toolbarbutton>
|
||||||
<zen-workspace-icons id="zen-workspaces-button" overflows="false" removable="false"></zen-workspace-icons>
|
<zen-workspace-icons id="zen-workspaces-button" overflows="false" removable="false"></zen-workspace-icons>
|
||||||
<toolbarbutton removable="true" class="chromeclass-toolbar-additional toolbarbutton-1 zen-sidebar-action-button" id="zen-create-new-button" context="zenCreateNewPopup" data-l10n-id="sidebar-zen-create-new"></toolbarbutton>
|
<toolbarbutton removable="true" class="chromeclass-toolbar-additional toolbarbutton-1 zen-sidebar-action-button" id="zen-create-new-button" context="zenCreateNewPopup" data-l10n-id="sidebar-zen-create-new"></toolbarbutton>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
|
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||||
index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa13303d3a3 100644
|
index 6d1885a54815d10b3a4e79f7e5acd61ab3abb159..3d6e092e7ed126cdee8c32229df2cfa13303d3a3 100644
|
||||||
--- a/browser/components/customizableui/CustomizableUI.sys.mjs
|
--- a/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||||
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
|
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||||
@@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
@@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||||
@@ -19,7 +19,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
},
|
},
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
@@ -362,20 +363,15 @@ var CustomizableUIInternal = {
|
@@ -362,27 +363,23 @@ var CustomizableUIInternal = {
|
||||||
"back-button",
|
"back-button",
|
||||||
"forward-button",
|
"forward-button",
|
||||||
"stop-reload-button",
|
"stop-reload-button",
|
||||||
@@ -41,29 +41,27 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
this.registerArea(
|
this.registerArea(
|
||||||
CustomizableUI.AREA_NAVBAR,
|
CustomizableUI.AREA_NAVBAR,
|
||||||
{
|
{
|
||||||
@@ -383,9 +379,6 @@ var CustomizableUIInternal = {
|
type: CustomizableUI.TYPE_TOOLBAR,
|
||||||
overflowable: true,
|
overflowable: true,
|
||||||
defaultPlacements: navbarPlacements,
|
defaultPlacements: navbarPlacements,
|
||||||
verticalTabsDefaultPlacements: [
|
- verticalTabsDefaultPlacements: ["alltabs-button", "ai-window-toggle"],
|
||||||
- "alltabs-button",
|
+ verticalTabsDefaultPlacements: [
|
||||||
- "smartwindow-group-tabs-button",
|
+ ],
|
||||||
- "ai-window-toggle",
|
|
||||||
],
|
|
||||||
defaultCollapsed: false,
|
defaultCollapsed: false,
|
||||||
},
|
},
|
||||||
@@ -410,11 +403,6 @@ var CustomizableUIInternal = {
|
true
|
||||||
|
@@ -406,10 +403,6 @@ var CustomizableUIInternal = {
|
||||||
type: CustomizableUI.TYPE_TOOLBAR,
|
type: CustomizableUI.TYPE_TOOLBAR,
|
||||||
defaultPlacements: [
|
defaultPlacements: [
|
||||||
"tabbrowser-tabs",
|
"tabbrowser-tabs",
|
||||||
- "new-tab-button",
|
- "new-tab-button",
|
||||||
- "spring",
|
- "spring",
|
||||||
- "alltabs-button",
|
- "alltabs-button",
|
||||||
- "smartwindow-group-tabs-button",
|
|
||||||
- "ai-window-toggle",
|
- "ai-window-toggle",
|
||||||
],
|
],
|
||||||
verticalTabsDefaultPlacements: [],
|
verticalTabsDefaultPlacements: [],
|
||||||
defaultCollapsed: null,
|
defaultCollapsed: null,
|
||||||
@@ -507,6 +495,7 @@ var CustomizableUIInternal = {
|
@@ -502,6 +495,7 @@ var CustomizableUIInternal = {
|
||||||
CustomizableUI.AREA_NAVBAR,
|
CustomizableUI.AREA_NAVBAR,
|
||||||
CustomizableUI.AREA_BOOKMARKS,
|
CustomizableUI.AREA_BOOKMARKS,
|
||||||
CustomizableUI.AREA_TABSTRIP,
|
CustomizableUI.AREA_TABSTRIP,
|
||||||
@@ -71,7 +69,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
]);
|
]);
|
||||||
if (AppConstants.platform != "macosx") {
|
if (AppConstants.platform != "macosx") {
|
||||||
toolbars.add(CustomizableUI.AREA_MENUBAR);
|
toolbars.add(CustomizableUI.AREA_MENUBAR);
|
||||||
@@ -1339,6 +1328,9 @@ var CustomizableUIInternal = {
|
@@ -1334,6 +1328,9 @@ var CustomizableUIInternal = {
|
||||||
placements = gPlacements.get(area);
|
placements = gPlacements.get(area);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,7 +79,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
// For toolbars that need it, mark as dirty.
|
// For toolbars that need it, mark as dirty.
|
||||||
let defaultPlacements = areaProperties.get("defaultPlacements");
|
let defaultPlacements = areaProperties.get("defaultPlacements");
|
||||||
if (
|
if (
|
||||||
@@ -1847,7 +1839,6 @@ var CustomizableUIInternal = {
|
@@ -1842,7 +1839,6 @@ var CustomizableUIInternal = {
|
||||||
lazy.log.info(
|
lazy.log.info(
|
||||||
"Widget " + aWidgetId + " not found, unable to remove from " + aArea
|
"Widget " + aWidgetId + " not found, unable to remove from " + aArea
|
||||||
);
|
);
|
||||||
@@ -89,7 +87,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.notifyDOMChange(widgetNode, null, container, true, () => {
|
this.notifyDOMChange(widgetNode, null, container, true, () => {
|
||||||
@@ -1857,7 +1848,7 @@ var CustomizableUIInternal = {
|
@@ -1852,7 +1848,7 @@ var CustomizableUIInternal = {
|
||||||
// We also need to remove the panel context menu if it's there:
|
// We also need to remove the panel context menu if it's there:
|
||||||
this.ensureButtonContextMenu(widgetNode);
|
this.ensureButtonContextMenu(widgetNode);
|
||||||
if (gPalette.has(aWidgetId) || this.isSpecialWidget(aWidgetId)) {
|
if (gPalette.has(aWidgetId) || this.isSpecialWidget(aWidgetId)) {
|
||||||
@@ -98,7 +96,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
} else {
|
} else {
|
||||||
window.gNavToolbox.palette.appendChild(widgetNode);
|
window.gNavToolbox.palette.appendChild(widgetNode);
|
||||||
}
|
}
|
||||||
@@ -2025,16 +2016,16 @@ var CustomizableUIInternal = {
|
@@ -2020,16 +2016,16 @@ var CustomizableUIInternal = {
|
||||||
elem.setAttribute("skipintoolbarset", "true");
|
elem.setAttribute("skipintoolbarset", "true");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -118,7 +116,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
// Handle initial state of vertical tabs.
|
// Handle initial state of vertical tabs.
|
||||||
if (isVerticalTabs) {
|
if (isVerticalTabs) {
|
||||||
// Show the vertical tabs toolbar
|
// Show the vertical tabs toolbar
|
||||||
@@ -2276,6 +2267,10 @@ var CustomizableUIInternal = {
|
@@ -2271,6 +2267,10 @@ var CustomizableUIInternal = {
|
||||||
* The identifier string of the area that aNode is being inserted into.
|
* The identifier string of the area that aNode is being inserted into.
|
||||||
*/
|
*/
|
||||||
insertWidgetBefore(aNode, aNextNode, aContainer, aAreaId) {
|
insertWidgetBefore(aNode, aNextNode, aContainer, aAreaId) {
|
||||||
@@ -129,7 +127,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
this.notifyDOMChange(aNode, aNextNode, aContainer, false, () => {
|
this.notifyDOMChange(aNode, aNextNode, aContainer, false, () => {
|
||||||
this.setLocationAttributes(aNode, aAreaId);
|
this.setLocationAttributes(aNode, aAreaId);
|
||||||
aContainer.insertBefore(aNode, aNextNode);
|
aContainer.insertBefore(aNode, aNextNode);
|
||||||
@@ -4652,7 +4647,7 @@ var CustomizableUIInternal = {
|
@@ -4647,7 +4647,7 @@ var CustomizableUIInternal = {
|
||||||
* For all registered areas, builds those areas to reflect the current
|
* For all registered areas, builds those areas to reflect the current
|
||||||
* placement state of all widgets.
|
* placement state of all widgets.
|
||||||
*/
|
*/
|
||||||
@@ -138,7 +136,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
for (let [areaId, areaNodes] of gBuildAreas) {
|
for (let [areaId, areaNodes] of gBuildAreas) {
|
||||||
let placements = gPlacements.get(areaId);
|
let placements = gPlacements.get(areaId);
|
||||||
let isFirstChangedToolbar = true;
|
let isFirstChangedToolbar = true;
|
||||||
@@ -4663,7 +4658,7 @@ var CustomizableUIInternal = {
|
@@ -4658,7 +4658,7 @@ var CustomizableUIInternal = {
|
||||||
if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) {
|
if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) {
|
||||||
let defaultCollapsed = area.get("defaultCollapsed");
|
let defaultCollapsed = area.get("defaultCollapsed");
|
||||||
let win = areaNode.documentGlobal;
|
let win = areaNode.documentGlobal;
|
||||||
@@ -147,7 +145,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
win.setToolbarVisibility(
|
win.setToolbarVisibility(
|
||||||
areaNode,
|
areaNode,
|
||||||
typeof defaultCollapsed == "string"
|
typeof defaultCollapsed == "string"
|
||||||
@@ -5976,6 +5971,7 @@ export var CustomizableUI = {
|
@@ -5971,6 +5971,7 @@ export var CustomizableUI = {
|
||||||
unregisterArea(aName, aDestroyPlacements) {
|
unregisterArea(aName, aDestroyPlacements) {
|
||||||
CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements);
|
CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements);
|
||||||
},
|
},
|
||||||
@@ -155,7 +153,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
/**
|
/**
|
||||||
* Add a widget to an area.
|
* Add a widget to an area.
|
||||||
* If the area to which you try to add is not known to CustomizableUI,
|
* If the area to which you try to add is not known to CustomizableUI,
|
||||||
@@ -7951,7 +7947,9 @@ class OverflowableToolbar {
|
@@ -7946,7 +7947,9 @@ class OverflowableToolbar {
|
||||||
);
|
);
|
||||||
|
|
||||||
if (webExtList && CustomizableUI.isWebExtensionWidget(child.id)) {
|
if (webExtList && CustomizableUI.isWebExtensionWidget(child.id)) {
|
||||||
@@ -165,7 +163,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
webExtList.insertBefore(child, webExtList.firstElementChild);
|
webExtList.insertBefore(child, webExtList.firstElementChild);
|
||||||
} else {
|
} else {
|
||||||
child.setAttribute("cui-anchorid", this.#defaultListButton.id);
|
child.setAttribute("cui-anchorid", this.#defaultListButton.id);
|
||||||
@@ -8000,6 +7998,7 @@ class OverflowableToolbar {
|
@@ -7995,6 +7998,7 @@ class OverflowableToolbar {
|
||||||
return aElement.getBoundingClientRect().width;
|
return aElement.getBoundingClientRect().width;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -173,7 +171,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
function sumChildrenInlineSize(aParent, aExceptChild = null) {
|
function sumChildrenInlineSize(aParent, aExceptChild = null) {
|
||||||
let sum = 0;
|
let sum = 0;
|
||||||
for (let child of aParent.children) {
|
for (let child of aParent.children) {
|
||||||
@@ -8011,7 +8010,10 @@ class OverflowableToolbar {
|
@@ -8006,7 +8010,10 @@ class OverflowableToolbar {
|
||||||
) {
|
) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -185,7 +183,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
if (child != aExceptChild) {
|
if (child != aExceptChild) {
|
||||||
sum += getInlineSize(child);
|
sum += getInlineSize(child);
|
||||||
}
|
}
|
||||||
@@ -8035,11 +8037,11 @@ class OverflowableToolbar {
|
@@ -8030,11 +8037,11 @@ class OverflowableToolbar {
|
||||||
parseFloat(style.paddingLeft) -
|
parseFloat(style.paddingLeft) -
|
||||||
parseFloat(style.paddingRight) -
|
parseFloat(style.paddingRight) -
|
||||||
toolbarChildrenWidth;
|
toolbarChildrenWidth;
|
||||||
@@ -199,7 +197,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
});
|
});
|
||||||
|
|
||||||
lazy.log.debug(
|
lazy.log.debug(
|
||||||
@@ -8054,7 +8056,39 @@ class OverflowableToolbar {
|
@@ -8049,7 +8056,39 @@ class OverflowableToolbar {
|
||||||
Math.max(targetWidth, targetChildrenWidth)
|
Math.max(targetWidth, targetChildrenWidth)
|
||||||
);
|
);
|
||||||
totalAvailWidth = Math.ceil(totalAvailWidth);
|
totalAvailWidth = Math.ceil(totalAvailWidth);
|
||||||
@@ -240,7 +238,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
return { isOverflowing, targetContentWidth, totalAvailWidth };
|
return { isOverflowing, targetContentWidth, totalAvailWidth };
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -8115,7 +8149,11 @@ class OverflowableToolbar {
|
@@ -8110,7 +8149,11 @@ class OverflowableToolbar {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -253,7 +251,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
lazy.log.debug(
|
lazy.log.debug(
|
||||||
`Need ${minSize} but width is ${totalAvailWidth} so bailing`
|
`Need ${minSize} but width is ${totalAvailWidth} so bailing`
|
||||||
);
|
);
|
||||||
@@ -8148,7 +8186,7 @@ class OverflowableToolbar {
|
@@ -8143,7 +8186,7 @@ class OverflowableToolbar {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!inserted) {
|
if (!inserted) {
|
||||||
@@ -262,7 +260,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
}
|
}
|
||||||
child.removeAttribute("cui-anchorid");
|
child.removeAttribute("cui-anchorid");
|
||||||
child.removeAttribute("overflowedItem");
|
child.removeAttribute("overflowedItem");
|
||||||
@@ -8274,6 +8312,9 @@ class OverflowableToolbar {
|
@@ -8269,6 +8312,9 @@ class OverflowableToolbar {
|
||||||
* if no such list exists.
|
* if no such list exists.
|
||||||
*/
|
*/
|
||||||
get #webExtList() {
|
get #webExtList() {
|
||||||
@@ -272,7 +270,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
if (!this.#webExtListRef) {
|
if (!this.#webExtListRef) {
|
||||||
let targetID = this.#toolbar.getAttribute("addon-webext-overflowtarget");
|
let targetID = this.#toolbar.getAttribute("addon-webext-overflowtarget");
|
||||||
if (!targetID) {
|
if (!targetID) {
|
||||||
@@ -8285,6 +8326,9 @@ class OverflowableToolbar {
|
@@ -8280,6 +8326,9 @@ class OverflowableToolbar {
|
||||||
let win = this.#toolbar.documentGlobal;
|
let win = this.#toolbar.documentGlobal;
|
||||||
let { panel } = win.gUnifiedExtensions;
|
let { panel } = win.gUnifiedExtensions;
|
||||||
this.#webExtListRef = panel.querySelector(`#${targetID}`);
|
this.#webExtListRef = panel.querySelector(`#${targetID}`);
|
||||||
@@ -282,7 +280,7 @@ index 875f8b03d979353ef44a57c15ef1ae09d33ab730..3d6e092e7ed126cdee8c32229df2cfa1
|
|||||||
}
|
}
|
||||||
return this.#webExtListRef;
|
return this.#webExtListRef;
|
||||||
}
|
}
|
||||||
@@ -8493,7 +8537,7 @@ class OverflowableToolbar {
|
@@ -8488,7 +8537,7 @@ class OverflowableToolbar {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "mousedown": {
|
case "mousedown": {
|
||||||
|
|||||||
@@ -1,17 +1,16 @@
|
|||||||
diff --git a/browser/components/preferences/config/account-sync.mjs b/browser/components/preferences/config/account-sync.mjs
|
diff --git a/browser/components/preferences/config/account-sync.mjs b/browser/components/preferences/config/account-sync.mjs
|
||||||
index b01fd4bb163ad53139fcbd8e79e12ef994d1fa13..7e3c2f6852b77192b4505bb3d5a7b58586da6548 100644
|
index b01fd4bb163ad53139fcbd8e79e12ef994d1fa13..dd60be4fe268618d6596cd5cfac3342975bd241a 100644
|
||||||
--- a/browser/components/preferences/config/account-sync.mjs
|
--- a/browser/components/preferences/config/account-sync.mjs
|
||||||
+++ b/browser/components/preferences/config/account-sync.mjs
|
+++ b/browser/components/preferences/config/account-sync.mjs
|
||||||
@@ -46,6 +46,8 @@ Preferences.addAll([
|
@@ -46,6 +46,7 @@ Preferences.addAll([
|
||||||
{ id: "services.sync.engine.creditcards", type: "bool" },
|
{ id: "services.sync.engine.creditcards", type: "bool" },
|
||||||
{ id: "services.sync.engine.addons", type: "bool" },
|
{ id: "services.sync.engine.addons", type: "bool" },
|
||||||
{ id: "services.sync.engine.prefs", type: "bool" },
|
{ id: "services.sync.engine.prefs", type: "bool" },
|
||||||
+ { id: "services.sync.engine.spaces", type: "bool" },
|
+ { id: "services.sync.engine.spaces", type: "bool" },
|
||||||
+ { id: "zen.spaces-sync.normal-tabs", type: "bool" },
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -557,6 +559,7 @@ const SYNC_ENGINE_SETTINGS = [
|
@@ -557,6 +558,7 @@ const SYNC_ENGINE_SETTINGS = [
|
||||||
type: "payments",
|
type: "payments",
|
||||||
},
|
},
|
||||||
{ id: "syncAddons", pref: "services.sync.engine.addons", type: "addons" },
|
{ id: "syncAddons", pref: "services.sync.engine.addons", type: "addons" },
|
||||||
@@ -19,7 +18,7 @@ index b01fd4bb163ad53139fcbd8e79e12ef994d1fa13..7e3c2f6852b77192b4505bb3d5a7b585
|
|||||||
{ id: "syncSettings", pref: "services.sync.engine.prefs", type: "settings" },
|
{ id: "syncSettings", pref: "services.sync.engine.prefs", type: "settings" },
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -564,6 +567,18 @@ SYNC_ENGINE_SETTINGS.forEach(({ id, pref }) => {
|
@@ -564,6 +566,12 @@ SYNC_ENGINE_SETTINGS.forEach(({ id, pref }) => {
|
||||||
Preferences.addSetting({ id, pref });
|
Preferences.addSetting({ id, pref });
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -28,17 +27,11 @@ index b01fd4bb163ad53139fcbd8e79e12ef994d1fa13..7e3c2f6852b77192b4505bb3d5a7b585
|
|||||||
+ id: "zenSyncWorkspaces",
|
+ id: "zenSyncWorkspaces",
|
||||||
+ pref: "services.sync.engine.spaces",
|
+ pref: "services.sync.engine.spaces",
|
||||||
+});
|
+});
|
||||||
+Preferences.addSetting({
|
|
||||||
+ id: "zenSyncNormalTabs",
|
|
||||||
+ pref: "zen.spaces-sync.normal-tabs",
|
|
||||||
+ deps: ["zenSyncWorkspaces"],
|
|
||||||
+ visible: deps => !!deps.zenSyncWorkspaces.value,
|
|
||||||
+});
|
|
||||||
+
|
+
|
||||||
Preferences.addSetting({
|
Preferences.addSetting({
|
||||||
id: "syncEngines",
|
id: "syncEngines",
|
||||||
deps: SYNC_ENGINE_SETTINGS.map(({ id }) => id),
|
deps: SYNC_ENGINE_SETTINGS.map(({ id }) => id),
|
||||||
@@ -995,6 +1010,27 @@ SettingGroupManager.registerGroups({
|
@@ -995,6 +1003,20 @@ SettingGroupManager.registerGroups({
|
||||||
id: "syncEnginesList",
|
id: "syncEnginesList",
|
||||||
control: "sync-engines-list",
|
control: "sync-engines-list",
|
||||||
},
|
},
|
||||||
@@ -53,13 +46,6 @@ index b01fd4bb163ad53139fcbd8e79e12ef994d1fa13..7e3c2f6852b77192b4505bb3d5a7b585
|
|||||||
+ controlAttrs: {
|
+ controlAttrs: {
|
||||||
+ inputlayout: "inline-end",
|
+ inputlayout: "inline-end",
|
||||||
+ },
|
+ },
|
||||||
+ items: [
|
|
||||||
+ {
|
|
||||||
+ id: "zenSyncNormalTabs",
|
|
||||||
+ l10nId: "zen-settings-normal-tabs-sync",
|
|
||||||
+ control: "moz-checkbox",
|
|
||||||
+ },
|
|
||||||
+ ],
|
|
||||||
+ },
|
+ },
|
||||||
+ ],
|
+ ],
|
||||||
+ },
|
+ },
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
|
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
|
||||||
index 5a56d348146c1c37c088ced60327fffebcf8fac0..abd65594d365fbc0a74af3953c71f410301898ad 100644
|
index 88675d1bcbf000b10d85a9c0980bc6069d88052c..ed3a1e809eb0fcccc5a957be7affb77be8978e32 100644
|
||||||
--- a/browser/components/preferences/main.js
|
--- a/browser/components/preferences/main.js
|
||||||
+++ b/browser/components/preferences/main.js
|
+++ b/browser/components/preferences/main.js
|
||||||
@@ -529,6 +529,11 @@ function createStartupConfig(hidden = false) {
|
@@ -528,6 +528,11 @@ function createStartupConfig(hidden = false) {
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -14,7 +14,7 @@ index 5a56d348146c1c37c088ced60327fffebcf8fac0..abd65594d365fbc0a74af3953c71f410
|
|||||||
{
|
{
|
||||||
id: "windowsLaunchOnLogin",
|
id: "windowsLaunchOnLogin",
|
||||||
l10nId: "windows-launch-on-login",
|
l10nId: "windows-launch-on-login",
|
||||||
@@ -576,7 +581,7 @@ function createStartupConfig(hidden = false) {
|
@@ -575,7 +580,7 @@ function createStartupConfig(hidden = false) {
|
||||||
SettingGroupManager.registerGroups({
|
SettingGroupManager.registerGroups({
|
||||||
defaultBrowser: createDefaultBrowserConfig(),
|
defaultBrowser: createDefaultBrowserConfig(),
|
||||||
startup: createStartupConfig(
|
startup: createStartupConfig(
|
||||||
@@ -23,7 +23,7 @@ index 5a56d348146c1c37c088ced60327fffebcf8fac0..abd65594d365fbc0a74af3953c71f410
|
|||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -636,7 +641,7 @@ function getBundleForLocales(newLocales) {
|
@@ -628,7 +633,7 @@ function getBundleForLocales(newLocales) {
|
||||||
])
|
])
|
||||||
);
|
);
|
||||||
return new Localization(
|
return new Localization(
|
||||||
|
|||||||
@@ -38,17 +38,10 @@ var gZenMarketplaceManager = {
|
|||||||
|
|
||||||
this.__hasInitializedEvents = true;
|
this.__hasInitializedEvents = true;
|
||||||
|
|
||||||
Services.prefs.addObserver(gZenMods.updatePref, this);
|
|
||||||
window.addEventListener(
|
|
||||||
"unload",
|
|
||||||
() => {
|
|
||||||
Services.prefs.removeObserver(gZenMods.updatePref, this);
|
|
||||||
},
|
|
||||||
{ once: true }
|
|
||||||
);
|
|
||||||
|
|
||||||
await this._buildModsList();
|
await this._buildModsList();
|
||||||
|
|
||||||
|
Services.prefs.addObserver(gZenMods.updatePref, this);
|
||||||
|
|
||||||
const checkForUpdateClick = (event) => {
|
const checkForUpdateClick = (event) => {
|
||||||
if (event.target === checkForUpdates) {
|
if (event.target === checkForUpdates) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
@@ -76,6 +69,7 @@ var gZenMarketplaceManager = {
|
|||||||
});
|
});
|
||||||
|
|
||||||
window.addEventListener("unload", () => {
|
window.addEventListener("unload", () => {
|
||||||
|
Services.prefs.removeObserver(gZenMods.updatePref, this);
|
||||||
this.__hasInitializedEvents = false;
|
this.__hasInitializedEvents = false;
|
||||||
|
|
||||||
document.removeEventListener("ZenModsMarketplace:CheckForUpdatesFinished", this);
|
document.removeEventListener("ZenModsMarketplace:CheckForUpdatesFinished", this);
|
||||||
@@ -741,6 +735,7 @@ var gZenWorkspacesSettings = {
|
|||||||
|
|
||||||
Services.prefs.addObserver("zen.glance.enabled", tabsUnloaderPrefListener); // We can use the same listener for both prefs
|
Services.prefs.addObserver("zen.glance.enabled", tabsUnloaderPrefListener); // We can use the same listener for both prefs
|
||||||
Services.prefs.addObserver("zen.workspaces.separate-essentials", tabsUnloaderPrefListener);
|
Services.prefs.addObserver("zen.workspaces.separate-essentials", tabsUnloaderPrefListener);
|
||||||
|
Services.prefs.addObserver("zen.glance.activation-method", tabsUnloaderPrefListener);
|
||||||
Services.prefs.addObserver("zen.window-sync.sync-only-pinned-tabs", tabsUnloaderPrefListener);
|
Services.prefs.addObserver("zen.window-sync.sync-only-pinned-tabs", tabsUnloaderPrefListener);
|
||||||
Services.prefs.addObserver(
|
Services.prefs.addObserver(
|
||||||
"zen.tabs.ctrl-tab.ignore-essential-tabs",
|
"zen.tabs.ctrl-tab.ignore-essential-tabs",
|
||||||
@@ -749,6 +744,7 @@ var gZenWorkspacesSettings = {
|
|||||||
Services.prefs.addObserver("browser.ctrlTab.sortByRecentlyUsed", toggleZenCycleByAttrWarning);
|
Services.prefs.addObserver("browser.ctrlTab.sortByRecentlyUsed", toggleZenCycleByAttrWarning);
|
||||||
window.addEventListener("unload", () => {
|
window.addEventListener("unload", () => {
|
||||||
Services.prefs.removeObserver("zen.glance.enabled", tabsUnloaderPrefListener);
|
Services.prefs.removeObserver("zen.glance.enabled", tabsUnloaderPrefListener);
|
||||||
|
Services.prefs.removeObserver("zen.glance.activation-method", tabsUnloaderPrefListener);
|
||||||
Services.prefs.removeObserver("zen.workspaces.separate-essentials", tabsUnloaderPrefListener);
|
Services.prefs.removeObserver("zen.workspaces.separate-essentials", tabsUnloaderPrefListener);
|
||||||
Services.prefs.removeObserver(
|
Services.prefs.removeObserver(
|
||||||
"zen.window-sync.sync-only-pinned-tabs",
|
"zen.window-sync.sync-only-pinned-tabs",
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
diff --git a/browser/components/sessionstore/SessionFile.sys.mjs b/browser/components/sessionstore/SessionFile.sys.mjs
|
diff --git a/browser/components/sessionstore/SessionFile.sys.mjs b/browser/components/sessionstore/SessionFile.sys.mjs
|
||||||
index 370e5c105c3d9bee05c2d9d7b63d0ee45b8331e1..1c37c19794ebe863a25f780e9a74d63526b929d7 100644
|
index 5580838acd72bf0e1189d367984859529d89f5b4..e5fa6076a9cc6ada016ccc4e129cad455010a522 100644
|
||||||
--- a/browser/components/sessionstore/SessionFile.sys.mjs
|
--- a/browser/components/sessionstore/SessionFile.sys.mjs
|
||||||
+++ b/browser/components/sessionstore/SessionFile.sys.mjs
|
+++ b/browser/components/sessionstore/SessionFile.sys.mjs
|
||||||
@@ -25,6 +25,7 @@ const lazy = XPCOMUtils.declareLazy({
|
@@ -22,6 +22,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||||
"moz-src:///browser/components/sessionstore/SessionStore.sys.mjs",
|
RunState: "resource:///modules/sessionstore/RunState.sys.mjs",
|
||||||
SessionWriter:
|
SessionStore: "resource:///modules/sessionstore/SessionStore.sys.mjs",
|
||||||
"moz-src:///browser/components/sessionstore/SessionWriter.sys.mjs",
|
SessionWriter: "resource:///modules/sessionstore/SessionWriter.sys.mjs",
|
||||||
+ ZenSessionStore: "resource:///modules/zen/ZenSessionManager.sys.mjs",
|
+ ZenSessionStore: "resource:///modules/zen/ZenSessionManager.sys.mjs",
|
||||||
});
|
});
|
||||||
|
|
||||||
const PREF_UPGRADE_BACKUP = "browser.sessionstore.upgradeBackup.latestBuildID";
|
const PREF_UPGRADE_BACKUP = "browser.sessionstore.upgradeBackup.latestBuildID";
|
||||||
@@ -384,7 +385,7 @@ var SessionFileInternal = {
|
@@ -381,7 +382,7 @@ var SessionFileInternal = {
|
||||||
this._readOrigin = result.origin;
|
this._readOrigin = result.origin;
|
||||||
|
|
||||||
result.noFilesFound = noFilesFound;
|
result.noFilesFound = noFilesFound;
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
diff --git a/browser/components/sessionstore/SessionSaver.sys.mjs b/browser/components/sessionstore/SessionSaver.sys.mjs
|
diff --git a/browser/components/sessionstore/SessionSaver.sys.mjs b/browser/components/sessionstore/SessionSaver.sys.mjs
|
||||||
index 1f26bc5fdb83f55bdf0b9b7d01fafe1cd37f77f4..5916f741d0fa04c392dcdd10f843e595fe5e058c 100644
|
index 9141793550f7c7ff6aa63d4c85bf571b4499e2d0..6906fd9be7ae6ca4316133e0d6552b797c54a7ec 100644
|
||||||
--- a/browser/components/sessionstore/SessionSaver.sys.mjs
|
--- a/browser/components/sessionstore/SessionSaver.sys.mjs
|
||||||
+++ b/browser/components/sessionstore/SessionSaver.sys.mjs
|
+++ b/browser/components/sessionstore/SessionSaver.sys.mjs
|
||||||
@@ -20,6 +20,7 @@ const lazy = XPCOMUtils.declareLazy({
|
@@ -20,6 +20,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||||
"moz-src:///browser/components/sessionstore/SessionStore.sys.mjs",
|
SessionFile: "resource:///modules/sessionstore/SessionFile.sys.mjs",
|
||||||
sessionStoreLogger:
|
SessionStore: "resource:///modules/sessionstore/SessionStore.sys.mjs",
|
||||||
"moz-src:///browser/components/sessionstore/SessionLogger.sys.mjs",
|
sessionStoreLogger: "resource:///modules/sessionstore/SessionLogger.sys.mjs",
|
||||||
+ ZenSessionStore: "resource:///modules/zen/ZenSessionManager.sys.mjs",
|
+ ZenSessionStore: "resource:///modules/zen/ZenSessionManager.sys.mjs",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
diff --git a/browser/components/sessionstore/SessionStartup.sys.mjs b/browser/components/sessionstore/SessionStartup.sys.mjs
|
diff --git a/browser/components/sessionstore/SessionStartup.sys.mjs b/browser/components/sessionstore/SessionStartup.sys.mjs
|
||||||
index 919d4536c5462603346684bbe26794ae9279b517..5a8fae0708e4a9a82c5e85f8a473ebaeafebe71f 100644
|
index 86600ffb5178599ab23270a964064ca657a3283f..70d7b5c7d69d3700475d663b595052264c67d351 100644
|
||||||
--- a/browser/components/sessionstore/SessionStartup.sys.mjs
|
--- a/browser/components/sessionstore/SessionStartup.sys.mjs
|
||||||
+++ b/browser/components/sessionstore/SessionStartup.sys.mjs
|
+++ b/browser/components/sessionstore/SessionStartup.sys.mjs
|
||||||
@@ -41,6 +41,7 @@ const lazy = XPCOMUtils.declareLazy({
|
@@ -40,6 +40,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||||
"moz-src:///browser/components/sessionstore/StartupPerformance.sys.mjs",
|
StartupPerformance:
|
||||||
sessionStoreLogger:
|
"resource:///modules/sessionstore/StartupPerformance.sys.mjs",
|
||||||
"moz-src:///browser/components/sessionstore/SessionLogger.sys.mjs",
|
sessionStoreLogger: "resource:///modules/sessionstore/SessionLogger.sys.mjs",
|
||||||
+ ZenSessionStore: "resource:///modules/zen/ZenSessionManager.sys.mjs",
|
+ ZenSessionStore: "resource:///modules/zen/ZenSessionManager.sys.mjs",
|
||||||
});
|
});
|
||||||
|
|
||||||
const STATE_RUNNING_STR = "running";
|
const STATE_RUNNING_STR = "running";
|
||||||
@@ -86,7 +87,7 @@ export var SessionStartup = {
|
@@ -85,7 +86,7 @@ export var SessionStartup = {
|
||||||
}
|
}
|
||||||
|
|
||||||
// do not need to initialize anything in auto-started private browsing sessions
|
// do not need to initialize anything in auto-started private browsing sessions
|
||||||
@@ -19,7 +19,7 @@ index 919d4536c5462603346684bbe26794ae9279b517..5a8fae0708e4a9a82c5e85f8a473ebae
|
|||||||
this._initialized = true;
|
this._initialized = true;
|
||||||
gOnceInitializedDeferred.resolve();
|
gOnceInitializedDeferred.resolve();
|
||||||
return;
|
return;
|
||||||
@@ -180,6 +181,8 @@ export var SessionStartup = {
|
@@ -179,6 +180,8 @@ export var SessionStartup = {
|
||||||
this._initialState = parsed;
|
this._initialState = parsed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ index 919d4536c5462603346684bbe26794ae9279b517..5a8fae0708e4a9a82c5e85f8a473ebae
|
|||||||
if (this._initialState == null) {
|
if (this._initialState == null) {
|
||||||
// No valid session found.
|
// No valid session found.
|
||||||
this._sessionType = this.NO_SESSION;
|
this._sessionType = this.NO_SESSION;
|
||||||
@@ -277,6 +280,8 @@ export var SessionStartup = {
|
@@ -276,6 +279,8 @@ export var SessionStartup = {
|
||||||
`Previous shutdown ok? ${this._previousSessionCrashed}, reason: ${previousSessionCrashedReason}`
|
`Previous shutdown ok? ${this._previousSessionCrashed}, reason: ${previousSessionCrashedReason}`
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ index 919d4536c5462603346684bbe26794ae9279b517..5a8fae0708e4a9a82c5e85f8a473ebae
|
|||||||
Services.obs.addObserver(this, "sessionstore-windows-restored", true);
|
Services.obs.addObserver(this, "sessionstore-windows-restored", true);
|
||||||
|
|
||||||
if (this.sessionType == this.NO_SESSION) {
|
if (this.sessionType == this.NO_SESSION) {
|
||||||
@@ -337,12 +342,7 @@ export var SessionStartup = {
|
@@ -336,12 +341,7 @@ export var SessionStartup = {
|
||||||
isAutomaticRestoreEnabled() {
|
isAutomaticRestoreEnabled() {
|
||||||
if (this._resumeSessionEnabled === null) {
|
if (this._resumeSessionEnabled === null) {
|
||||||
this._resumeSessionEnabled =
|
this._resumeSessionEnabled =
|
||||||
@@ -51,7 +51,7 @@ index 919d4536c5462603346684bbe26794ae9279b517..5a8fae0708e4a9a82c5e85f8a473ebae
|
|||||||
}
|
}
|
||||||
|
|
||||||
return this._resumeSessionEnabled;
|
return this._resumeSessionEnabled;
|
||||||
@@ -355,8 +355,7 @@ export var SessionStartup = {
|
@@ -354,8 +354,7 @@ export var SessionStartup = {
|
||||||
*/
|
*/
|
||||||
willRestore() {
|
willRestore() {
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
|
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||||
index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eadac7510935 100644
|
index 536e06eec9f35bad3b8366733b23b5a8697df9c8..631a16bc7518108641993836f0c52e2ab6e6c967 100644
|
||||||
--- a/browser/components/sessionstore/SessionStore.sys.mjs
|
--- a/browser/components/sessionstore/SessionStore.sys.mjs
|
||||||
+++ b/browser/components/sessionstore/SessionStore.sys.mjs
|
+++ b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||||
@@ -111,6 +111,11 @@ const TAB_EVENTS = [
|
@@ -129,6 +129,11 @@ const TAB_EVENTS = [
|
||||||
"TabSplitViewActivate",
|
"TabSplitViewActivate",
|
||||||
"SplitViewRemoved",
|
"SplitViewRemoved",
|
||||||
"SplitViewCreated",
|
"SplitViewCreated",
|
||||||
@@ -14,39 +14,16 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
];
|
];
|
||||||
|
|
||||||
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||||
@@ -185,6 +190,8 @@ const lazy = XPCOMUtils.declareLazy({
|
@@ -201,6 +206,8 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||||
TabStateFlusher:
|
TabStateCache: "resource:///modules/sessionstore/TabStateCache.sys.mjs",
|
||||||
"moz-src:///browser/components/sessionstore/TabStateFlusher.sys.mjs",
|
TabStateFlusher: "resource:///modules/sessionstore/TabStateFlusher.sys.mjs",
|
||||||
setTimeout: "resource://gre/modules/Timer.sys.mjs",
|
setTimeout: "resource://gre/modules/Timer.sys.mjs",
|
||||||
+ ZenSessionStore: "resource:///modules/zen/ZenSessionManager.sys.mjs",
|
+ ZenSessionStore: "resource:///modules/zen/ZenSessionManager.sys.mjs",
|
||||||
+ ZenWindowSync: "resource:///modules/zen/ZenWindowSync.sys.mjs",
|
+ ZenWindowSync: "resource:///modules/zen/ZenWindowSync.sys.mjs",
|
||||||
blankURI: () => Services.io.newURI("about:blank"),
|
});
|
||||||
gRestoreWindowsToVirtualDesktop: {
|
|
||||||
pref: "browser.sessionstore.restore_windows_to_virtual_desktop",
|
|
||||||
@@ -348,6 +355,22 @@ class _SessionStore {
|
|
||||||
return this.#shouldRestoreLastSession;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ get _windows() {
|
ChromeUtils.defineLazyGetter(lazy, "blankURI", () => {
|
||||||
+ return this.#windows;
|
@@ -1317,10 +1324,7 @@ var SessionStoreInternal = {
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ get _browserWindows() {
|
|
||||||
+ return this.#browserWindows;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ set _deferredInitialState(aState) {
|
|
||||||
+ this.#deferredInitialState = aState;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ initializeWindow(aWindow, aInitialState) {
|
|
||||||
+ this.#initializeWindow(aWindow, aInitialState);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
// whether we will potentially be restoring the session
|
|
||||||
// more than once without Firefox restarting in between
|
|
||||||
#restoreWithoutRestart = false;
|
|
||||||
@@ -515,10 +538,7 @@ class _SessionStore {
|
|
||||||
*/
|
*/
|
||||||
get willAutoRestore() {
|
get willAutoRestore() {
|
||||||
return (
|
return (
|
||||||
@@ -56,9 +33,9 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
- BROWSER_STARTUP_RESUME_SESSION)
|
- BROWSER_STARTUP_RESUME_SESSION)
|
||||||
+ true
|
+ true
|
||||||
);
|
);
|
||||||
}
|
},
|
||||||
|
|
||||||
@@ -1215,6 +1235,11 @@ class _SessionStore {
|
@@ -2008,6 +2012,11 @@ var SessionStoreInternal = {
|
||||||
case "TabPinned":
|
case "TabPinned":
|
||||||
case "TabUnpinned":
|
case "TabUnpinned":
|
||||||
case "SwapDocShells":
|
case "SwapDocShells":
|
||||||
@@ -67,47 +44,47 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
+ case "TabMove":
|
+ case "TabMove":
|
||||||
+ case "TabGroupMoved":
|
+ case "TabGroupMoved":
|
||||||
+ case "ZenWorkspaceDataChanged":
|
+ case "ZenWorkspaceDataChanged":
|
||||||
this.#saveStateDelayed(win);
|
this.saveStateDelayed(win);
|
||||||
break;
|
break;
|
||||||
case "TabGroupCreate":
|
case "TabGroupCreate":
|
||||||
@@ -1341,6 +1366,10 @@ class _SessionStore {
|
@@ -2117,6 +2126,10 @@ var SessionStoreInternal = {
|
||||||
this.#windows[aWindow.__SSi].isTaskbarTab = true;
|
this._windows[aWindow.__SSi].isTaskbarTab = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ if (aWindow.document.documentElement.hasAttribute("zen-unsynced-window")) {
|
+ if (aWindow.document.documentElement.hasAttribute("zen-unsynced-window")) {
|
||||||
+ this.#windows[aWindow.__SSi].isZenUnsynced = true;
|
+ this._windows[aWindow.__SSi].isZenUnsynced = true;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
if (lazy.AIWindow.isAIWindowActiveAndEnabled(aWindow)) {
|
if (lazy.AIWindow.isAIWindowActiveAndEnabled(aWindow)) {
|
||||||
this.#windows[aWindow.__SSi].isAIWindow = true;
|
this._windows[aWindow.__SSi].isAIWindow = true;
|
||||||
}
|
}
|
||||||
@@ -1377,7 +1406,7 @@ class _SessionStore {
|
@@ -2153,7 +2166,7 @@ var SessionStoreInternal = {
|
||||||
let isTaskbarTab = this.#windows[aWindow.__SSi].isTaskbarTab;
|
let isTaskbarTab = this._windows[aWindow.__SSi].isTaskbarTab;
|
||||||
// A regular window is not a private window, taskbar tab window, or popup window
|
// A regular window is not a private window, taskbar tab window, or popup window
|
||||||
let isRegularWindow =
|
let isRegularWindow =
|
||||||
- !isPrivateWindow && !isTaskbarTab && aWindow.toolbar.visible;
|
- !isPrivateWindow && !isTaskbarTab && aWindow.toolbar.visible;
|
||||||
+ !isPrivateWindow && !isTaskbarTab && aWindow.toolbar.visible && !this.#windows[aWindow.__SSi].isZenUnsynced;
|
+ !isPrivateWindow && !isTaskbarTab && aWindow.toolbar.visible && !this._windows[aWindow.__SSi].isZenUnsynced;
|
||||||
|
|
||||||
// perform additional initialization when the first window is loading
|
// perform additional initialization when the first window is loading
|
||||||
if (lazy.RunState.isStopped) {
|
if (lazy.RunState.isStopped) {
|
||||||
@@ -1389,7 +1418,7 @@ class _SessionStore {
|
@@ -2165,7 +2178,7 @@ var SessionStoreInternal = {
|
||||||
// to disk to NOW() to enforce a full interval before the next write.
|
// to disk to NOW() to enforce a full interval before the next write.
|
||||||
lazy.SessionSaver.updateLastSaveTime();
|
lazy.SessionSaver.updateLastSaveTime();
|
||||||
|
|
||||||
- if (isPrivateWindow || isTaskbarTab) {
|
- if (isPrivateWindow || isTaskbarTab) {
|
||||||
+ if (isPrivateWindow || isTaskbarTab || aWindow.document.documentElement.hasAttribute("zen-unsynced-window")) {
|
+ if (isPrivateWindow || isTaskbarTab || aWindow.document.documentElement.hasAttribute("zen-unsynced-window")) {
|
||||||
this.#log.debug(
|
this._log.debug(
|
||||||
"initializeWindow, the window is private or a web app. Saving SessionStartup.state for possibly restoring later"
|
"initializeWindow, the window is private or a web app. Saving SessionStartup.state for possibly restoring later"
|
||||||
);
|
);
|
||||||
@@ -1433,6 +1462,7 @@ class _SessionStore {
|
@@ -2209,6 +2222,7 @@ var SessionStoreInternal = {
|
||||||
null,
|
null,
|
||||||
"sessionstore-one-or-no-tab-restored"
|
"sessionstore-one-or-no-tab-restored"
|
||||||
);
|
);
|
||||||
+ lazy.ZenSessionStore.onNewEmptySession(aWindow);
|
+ lazy.ZenSessionStore.onNewEmptySession(aWindow);
|
||||||
this.#deferredAllWindowsRestored.resolve();
|
this._deferredAllWindowsRestored.resolve();
|
||||||
}
|
}
|
||||||
// this window was opened by #openWindowWithState
|
// this window was opened by _openWindowWithState
|
||||||
@@ -1482,7 +1512,6 @@ class _SessionStore {
|
@@ -2258,7 +2272,6 @@ var SessionStoreInternal = {
|
||||||
if (closedWindowState) {
|
if (closedWindowState) {
|
||||||
let newWindowState;
|
let newWindowState;
|
||||||
if (
|
if (
|
||||||
@@ -115,25 +92,25 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
!lazy.SessionStartup.willRestore()
|
!lazy.SessionStartup.willRestore()
|
||||||
) {
|
) {
|
||||||
// We want to split the window up into pinned tabs and unpinned tabs.
|
// We want to split the window up into pinned tabs and unpinned tabs.
|
||||||
@@ -1518,6 +1547,7 @@ class _SessionStore {
|
@@ -2294,6 +2307,7 @@ var SessionStoreInternal = {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newWindowState) {
|
if (newWindowState) {
|
||||||
+ lazy.ZenSessionStore.onRestoringClosedWindow(newWindowState);
|
+ lazy.ZenSessionStore.onRestoringClosedWindow(newWindowState);
|
||||||
// Ensure that the window state isn't hidden
|
// Ensure that the window state isn't hidden
|
||||||
this.#restoreCount = 1;
|
this._restoreCount = 1;
|
||||||
let state = { windows: [newWindowState] };
|
let state = { windows: [newWindowState] };
|
||||||
@@ -1554,6 +1584,9 @@ class _SessionStore {
|
@@ -2330,6 +2344,9 @@ var SessionStoreInternal = {
|
||||||
});
|
});
|
||||||
this.#shouldRestoreLastSession = false;
|
this._shouldRestoreLastSession = false;
|
||||||
}
|
}
|
||||||
+ else if (!aInitialState && isRegularWindow) {
|
+ else if (!aInitialState && isRegularWindow) {
|
||||||
+ lazy.ZenSessionStore.restoreNewWindow(aWindow, this);
|
+ lazy.ZenSessionStore.restoreNewWindow(aWindow, this);
|
||||||
+ }
|
+ }
|
||||||
|
|
||||||
if (this.#restoreLastWindow && aWindow.toolbar.visible) {
|
if (this._restoreLastWindow && aWindow.toolbar.visible) {
|
||||||
// always reset (if not a popup window)
|
// always reset (if not a popup window)
|
||||||
@@ -1704,7 +1737,7 @@ class _SessionStore {
|
@@ -2480,7 +2497,7 @@ var SessionStoreInternal = {
|
||||||
|
|
||||||
var tabbrowser = aWindow.gBrowser;
|
var tabbrowser = aWindow.gBrowser;
|
||||||
|
|
||||||
@@ -142,56 +119,56 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
|
|
||||||
TAB_EVENTS.forEach(function (aEvent) {
|
TAB_EVENTS.forEach(function (aEvent) {
|
||||||
tabbrowser.tabContainer.removeEventListener(aEvent, this, true);
|
tabbrowser.tabContainer.removeEventListener(aEvent, this, true);
|
||||||
@@ -1755,7 +1788,7 @@ class _SessionStore {
|
@@ -2531,7 +2548,7 @@ var SessionStoreInternal = {
|
||||||
|
|
||||||
let isLastRegularWindow =
|
let isLastRegularWindow =
|
||||||
Object.values(this.#windows).filter(
|
Object.values(this._windows).filter(
|
||||||
- wData => !wData.isPrivate && !wData.isTaskbarTab
|
- wData => !wData.isPrivate && !wData.isTaskbarTab
|
||||||
+ wData => !wData.isPrivate && !wData.isTaskbarTab && !wData.isZenUnsynced
|
+ wData => !wData.isPrivate && !wData.isTaskbarTab && !wData.isZenUnsynced
|
||||||
).length == 1;
|
).length == 1;
|
||||||
this.#log.debug(
|
this._log.debug(
|
||||||
`onClose, closing window isLastRegularWindow? ${isLastRegularWindow}`
|
`onClose, closing window isLastRegularWindow? ${isLastRegularWindow}`
|
||||||
@@ -1812,8 +1845,8 @@ class _SessionStore {
|
@@ -2588,8 +2605,8 @@ var SessionStoreInternal = {
|
||||||
// 2) Flush the window.
|
// 2) Flush the window.
|
||||||
// 3) When the flush is complete, revisit our decision to store the window
|
// 3) When the flush is complete, revisit our decision to store the window
|
||||||
// in #closedWindows, and add/remove as necessary.
|
// in _closedWindows, and add/remove as necessary.
|
||||||
- if (!winData.isPrivate && !winData.isTaskbarTab) {
|
- if (!winData.isPrivate && !winData.isTaskbarTab) {
|
||||||
- this.#maybeSaveClosedWindow(winData, isLastWindow);
|
- this.maybeSaveClosedWindow(winData, isLastWindow);
|
||||||
+ if (!winData.isPrivate && !winData.isTaskbarTab && !winData.isZenUnsynced) {
|
+ if (!winData.isPrivate && !winData.isTaskbarTab && !winData.isZenUnsynced) {
|
||||||
+ this.#maybeSaveClosedWindow(winData, isLastWindow, isLastRegularWindow);
|
+ this.maybeSaveClosedWindow(winData, isLastWindow, isLastRegularWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
completionPromise = lazy.TabStateFlusher.flushWindow(aWindow).then(() => {
|
completionPromise = lazy.TabStateFlusher.flushWindow(aWindow).then(() => {
|
||||||
@@ -1833,8 +1866,9 @@ class _SessionStore {
|
@@ -2609,8 +2626,9 @@ var SessionStoreInternal = {
|
||||||
|
|
||||||
// Save non-private windows if they have at
|
// Save non-private windows if they have at
|
||||||
// least one saveable tab or are the last window.
|
// least one saveable tab or are the last window.
|
||||||
- if (!winData.isPrivate && !winData.isTaskbarTab) {
|
- if (!winData.isPrivate && !winData.isTaskbarTab) {
|
||||||
- this.#maybeSaveClosedWindow(winData, isLastWindow);
|
- this.maybeSaveClosedWindow(winData, isLastWindow);
|
||||||
+ lazy.ZenWindowSync.on_WindowCloseAndBrowserFlushed(browsers);
|
+ lazy.ZenWindowSync.on_WindowCloseAndBrowserFlushed(browsers);
|
||||||
+ if (!winData.isPrivate && !winData.isTaskbarTab && !winData.isZenUnsynced) {
|
+ if (!winData.isPrivate && !winData.isTaskbarTab && !winData.isZenUnsynced) {
|
||||||
+ this.#maybeSaveClosedWindow(winData, isLastWindow, isLastRegularWindow);
|
+ this.maybeSaveClosedWindow(winData, isLastWindow, isLastRegularWindow);
|
||||||
|
|
||||||
if (!isLastWindow && winData.closedId > -1) {
|
if (!isLastWindow && winData.closedId > -1) {
|
||||||
this.#addClosedAction(
|
this._addClosedAction(
|
||||||
@@ -1910,7 +1944,7 @@ class _SessionStore {
|
@@ -2686,7 +2704,7 @@ var SessionStoreInternal = {
|
||||||
* to call this method again asynchronously (for example, after
|
* to call this method again asynchronously (for example, after
|
||||||
* a window flush).
|
* a window flush).
|
||||||
*/
|
*/
|
||||||
- #maybeSaveClosedWindow(winData, isLastWindow) {
|
- maybeSaveClosedWindow(winData, isLastWindow) {
|
||||||
+ #maybeSaveClosedWindow(winData, isLastWindow, isLastRegularWindow = false) {
|
+ maybeSaveClosedWindow(winData, isLastWindow, isLastRegularWindow = false) {
|
||||||
// Make sure SessionStore is still running, and make sure that we
|
// Make sure SessionStore is still running, and make sure that we
|
||||||
// haven't chosen to forget this window.
|
// haven't chosen to forget this window.
|
||||||
if (
|
if (
|
||||||
@@ -1927,6 +1961,7 @@ class _SessionStore {
|
@@ -2703,6 +2721,7 @@ var SessionStoreInternal = {
|
||||||
// #closedWindows from a previous call to this function.
|
// _closedWindows from a previous call to this function.
|
||||||
let winIndex = this.#closedWindows.indexOf(winData);
|
let winIndex = this._closedWindows.indexOf(winData);
|
||||||
let alreadyStored = winIndex != -1;
|
let alreadyStored = winIndex != -1;
|
||||||
+ lazy.ZenSessionStore.maybeSaveClosedWindow(winData, isLastRegularWindow);
|
+ lazy.ZenSessionStore.maybeSaveClosedWindow(winData, isLastRegularWindow);
|
||||||
// If sidebar command is truthy, i.e. sidebar is open, store sidebar settings
|
// If sidebar command is truthy, i.e. sidebar is open, store sidebar settings
|
||||||
let shouldStore = hasSaveableTabs || isLastWindow;
|
let shouldStore = hasSaveableTabs || isLastWindow;
|
||||||
|
|
||||||
@@ -2744,7 +2779,7 @@ class _SessionStore {
|
@@ -3525,7 +3544,7 @@ var SessionStoreInternal = {
|
||||||
if (!isPrivateWindow && tabState.isPrivate) {
|
if (!isPrivateWindow && tabState.isPrivate) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -200,14 +177,10 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3511,7 +3546,15 @@ class _SessionStore {
|
@@ -4264,6 +4283,12 @@ var SessionStoreInternal = {
|
||||||
1,
|
|
||||||
Math.min(tabState.index, tabState.entries.length)
|
Math.min(tabState.index, tabState.entries.length)
|
||||||
);
|
);
|
||||||
- tabState.pinned = false;
|
tabState.pinned = false;
|
||||||
+ tabState.pinned =
|
|
||||||
+ newTab.group?.isZenFolder === true &&
|
|
||||||
+ Services.prefs.getBoolPref("zen.folders.owned-tabs-in-folder");
|
|
||||||
+ tabState.zenEssential = false;
|
+ tabState.zenEssential = false;
|
||||||
+ tabState.zenSyncId = null;
|
+ tabState.zenSyncId = null;
|
||||||
+ tabState.zenIsGlance = false;
|
+ tabState.zenIsGlance = false;
|
||||||
@@ -217,7 +190,7 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
|
|
||||||
if (inBackground === false) {
|
if (inBackground === false) {
|
||||||
aWindow.gBrowser.selectedTab = newTab;
|
aWindow.gBrowser.selectedTab = newTab;
|
||||||
@@ -4036,6 +4079,8 @@ class _SessionStore {
|
@@ -4697,6 +4722,8 @@ var SessionStoreInternal = {
|
||||||
// Append the tab if we're opening into a different window,
|
// Append the tab if we're opening into a different window,
|
||||||
tabIndex: aSource == aTargetWindow ? pos : Infinity,
|
tabIndex: aSource == aTargetWindow ? pos : Infinity,
|
||||||
pinned: state.pinned,
|
pinned: state.pinned,
|
||||||
@@ -226,7 +199,7 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
userContextId: state.userContextId,
|
userContextId: state.userContextId,
|
||||||
skipLoad: true,
|
skipLoad: true,
|
||||||
preferredRemoteType,
|
preferredRemoteType,
|
||||||
@@ -4608,9 +4653,10 @@ class _SessionStore {
|
@@ -5194,9 +5221,10 @@ var SessionStoreInternal = {
|
||||||
if (activePageData.title && activePageData.title != activePageData.url) {
|
if (activePageData.title && activePageData.title != activePageData.url) {
|
||||||
win.gBrowser.setInitialTabTitle(tab, activePageData.title, {
|
win.gBrowser.setInitialTabTitle(tab, activePageData.title, {
|
||||||
isContentTitle: true,
|
isContentTitle: true,
|
||||||
@@ -238,7 +211,7 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4982,7 +5028,7 @@ class _SessionStore {
|
@@ -5561,7 +5589,7 @@ var SessionStoreInternal = {
|
||||||
|
|
||||||
for (let i = tabbrowser.pinnedTabCount; i < tabbrowser.tabs.length; i++) {
|
for (let i = tabbrowser.pinnedTabCount; i < tabbrowser.tabs.length; i++) {
|
||||||
let tab = tabbrowser.tabs[i];
|
let tab = tabbrowser.tabs[i];
|
||||||
@@ -247,30 +220,30 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
removableTabs.push(tab);
|
removableTabs.push(tab);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5095,7 +5141,7 @@ class _SessionStore {
|
@@ -5674,7 +5702,7 @@ var SessionStoreInternal = {
|
||||||
|
|
||||||
// collect the data for all windows
|
// collect the data for all windows
|
||||||
for (ix in this.#windows) {
|
for (ix in this._windows) {
|
||||||
- if (this.#windows[ix]._restoring || this.#windows[ix].isTaskbarTab) {
|
- if (this._windows[ix]._restoring || this._windows[ix].isTaskbarTab) {
|
||||||
+ if (this.#windows[ix]._restoring || this.#windows[ix].isTaskbarTab && !this.#windows[ix].isZenUnsynced) {
|
+ if (this._windows[ix]._restoring || this._windows[ix].isTaskbarTab && !this._windows[ix].isZenUnsynced) {
|
||||||
// window data is still in #statesToRestore
|
// window data is still in _statesToRestore
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -5239,11 +5285,12 @@ class _SessionStore {
|
@@ -5818,11 +5846,12 @@ var SessionStoreInternal = {
|
||||||
}
|
}
|
||||||
|
|
||||||
let tabbrowser = aWindow.gBrowser;
|
let tabbrowser = aWindow.gBrowser;
|
||||||
- let tabs = tabbrowser.tabs;
|
- let tabs = tabbrowser.tabs;
|
||||||
+ let tabs = aWindow.gZenWorkspaces.allStoredTabs;
|
+ let tabs = aWindow.gZenWorkspaces.allStoredTabs;
|
||||||
/** @type {WindowStateData} */
|
/** @type {WindowStateData} */
|
||||||
let winData = this.#windows[aWindow.__SSi];
|
let winData = this._windows[aWindow.__SSi];
|
||||||
let tabsData = (winData.tabs = []);
|
let tabsData = (winData.tabs = []);
|
||||||
|
|
||||||
+ winData.splitViewData = aWindow.gZenViewSplitter?.storeDataForSessionStore();
|
+ winData.splitViewData = aWindow.gZenViewSplitter?.storeDataForSessionStore();
|
||||||
// update the internal state data for this window
|
// update the internal state data for this window
|
||||||
for (let tab of tabs) {
|
for (let tab of tabs) {
|
||||||
if (tab == aWindow.FirefoxViewHandler.tab) {
|
if (tab == aWindow.FirefoxViewHandler.tab) {
|
||||||
@@ -5254,6 +5301,9 @@ class _SessionStore {
|
@@ -5833,6 +5862,9 @@ var SessionStoreInternal = {
|
||||||
tabsData.push(tabData);
|
tabsData.push(tabData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -280,7 +253,7 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
// update tab group state for this window
|
// update tab group state for this window
|
||||||
winData.groups = [];
|
winData.groups = [];
|
||||||
for (let tabGroup of aWindow.gBrowser.tabGroups) {
|
for (let tabGroup of aWindow.gBrowser.tabGroups) {
|
||||||
@@ -5270,7 +5320,7 @@ class _SessionStore {
|
@@ -5849,7 +5881,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,
|
// 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).
|
// since it's only inserted into the tab strip after it's selected).
|
||||||
if (aWindow.FirefoxViewHandler.tab?.selected) {
|
if (aWindow.FirefoxViewHandler.tab?.selected) {
|
||||||
@@ -289,7 +262,7 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
winData.title = tabbrowser.tabs[0].label;
|
winData.title = tabbrowser.tabs[0].label;
|
||||||
}
|
}
|
||||||
winData.selected = selectedIndex;
|
winData.selected = selectedIndex;
|
||||||
@@ -5472,8 +5522,8 @@ class _SessionStore {
|
@@ -6051,8 +6083,8 @@ var SessionStoreInternal = {
|
||||||
// selectTab represents.
|
// selectTab represents.
|
||||||
let selectTab = 0;
|
let selectTab = 0;
|
||||||
if (overwriteTabs) {
|
if (overwriteTabs) {
|
||||||
@@ -300,7 +273,7 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
selectTab = Math.min(selectTab, winData.tabs.length);
|
selectTab = Math.min(selectTab, winData.tabs.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5495,6 +5545,7 @@ class _SessionStore {
|
@@ -6074,6 +6106,7 @@ var SessionStoreInternal = {
|
||||||
if (overwriteTabs) {
|
if (overwriteTabs) {
|
||||||
for (let i = tabbrowser.browsers.length - 1; i >= 0; i--) {
|
for (let i = tabbrowser.browsers.length - 1; i >= 0; i--) {
|
||||||
if (!tabbrowser.tabs[i].selected) {
|
if (!tabbrowser.tabs[i].selected) {
|
||||||
@@ -308,7 +281,7 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
tabbrowser.removeTab(tabbrowser.tabs[i]);
|
tabbrowser.removeTab(tabbrowser.tabs[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5529,6 +5580,12 @@ class _SessionStore {
|
@@ -6108,6 +6141,12 @@ var SessionStoreInternal = {
|
||||||
savedTabGroup => !openTabGroupIdsInWindow.has(savedTabGroup.id)
|
savedTabGroup => !openTabGroupIdsInWindow.has(savedTabGroup.id)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -321,7 +294,7 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
|
|
||||||
// Move the originally open tabs to the end.
|
// Move the originally open tabs to the end.
|
||||||
if (initialTabs) {
|
if (initialTabs) {
|
||||||
@@ -6098,6 +6155,25 @@ class _SessionStore {
|
@@ -6674,6 +6713,25 @@ var SessionStoreInternal = {
|
||||||
|
|
||||||
// Most of tabData has been restored, now continue with restoring
|
// Most of tabData has been restored, now continue with restoring
|
||||||
// attributes that may trigger external events.
|
// attributes that may trigger external events.
|
||||||
@@ -347,25 +320,17 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
|
|
||||||
if (tabData.pinned) {
|
if (tabData.pinned) {
|
||||||
tabbrowser.pinTab(tab);
|
tabbrowser.pinTab(tab);
|
||||||
@@ -6272,6 +6348,9 @@ class _SessionStore {
|
@@ -6859,6 +6917,9 @@ var SessionStoreInternal = {
|
||||||
aWindow.gURLBar.readOnly = false;
|
aWindow.gURLBar.readOnly = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+ if (aWinData.isZenUnsynced) {
|
+ if (aWinData.isZenUnsynced) {
|
||||||
+ this.#windows[aWindow.__SSi].isZenUnsynced = true;
|
+ this._windows[aWindow.__SSi].isZenUnsynced = true;
|
||||||
+ }
|
+ }
|
||||||
|
|
||||||
let promiseParts = Promise.withResolvers();
|
let promiseParts = Promise.withResolvers();
|
||||||
const wasMinimized = aWindow.windowState == aWindow.STATE_MINIMIZED;
|
aWindow.setTimeout(() => {
|
||||||
@@ -6774,6 +6853,7 @@ class _SessionStore {
|
@@ -7654,7 +7715,7 @@ var SessionStoreInternal = {
|
||||||
*/
|
|
||||||
#isCmdLineEmpty(aWindow, aState) {
|
|
||||||
var pinnedOnly =
|
|
||||||
+ !Services.prefs.getBoolPref("zen.workspaces.continue-where-left-off") &&
|
|
||||||
aState.windows &&
|
|
||||||
aState.windows.every(win => win.tabs.every(tab => tab.pinned));
|
|
||||||
|
|
||||||
@@ -7116,7 +7196,7 @@ class _SessionStore {
|
|
||||||
|
|
||||||
let groupsToSave = new Map();
|
let groupsToSave = new Map();
|
||||||
for (let tIndex = 0; tIndex < window.tabs.length; ) {
|
for (let tIndex = 0; tIndex < window.tabs.length; ) {
|
||||||
@@ -374,7 +339,7 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
// Adjust window.selected
|
// Adjust window.selected
|
||||||
if (tIndex + 1 < window.selected) {
|
if (tIndex + 1 < window.selected) {
|
||||||
window.selected -= 1;
|
window.selected -= 1;
|
||||||
@@ -7131,7 +7211,7 @@ class _SessionStore {
|
@@ -7669,7 +7730,7 @@ var SessionStoreInternal = {
|
||||||
);
|
);
|
||||||
// We don't want to increment tIndex here.
|
// We don't want to increment tIndex here.
|
||||||
continue;
|
continue;
|
||||||
@@ -383,15 +348,15 @@ index 52fc803050cd257d6de52b1e4a92f3211cbaba88..a9841832ddce540dc0f9b14c29e5eada
|
|||||||
// Convert any open groups into saved groups.
|
// Convert any open groups into saved groups.
|
||||||
let groupStateToSave = window.groups.find(
|
let groupStateToSave = window.groups.find(
|
||||||
groupState => groupState.id == window.tabs[tIndex].groupId
|
groupState => groupState.id == window.tabs[tIndex].groupId
|
||||||
@@ -7691,7 +7771,6 @@ class _SessionStore {
|
@@ -8233,7 +8294,6 @@ var SessionStoreInternal = {
|
||||||
timer.initWithCallback(
|
timer.initWithCallback(
|
||||||
() => {
|
function () {
|
||||||
if (beats <= 0) {
|
if (beats <= 0) {
|
||||||
- this.#log.debug(`looseTimer of ${delay} timed out`);
|
- this._log.debug(`looseTimer of ${delay} timed out`);
|
||||||
Glean.sessionRestore.shutdownFlushAllOutcomes.timed_out.add(1);
|
Glean.sessionRestore.shutdownFlushAllOutcomes.timed_out.add(1);
|
||||||
deferred.resolve();
|
deferred.resolve();
|
||||||
}
|
}
|
||||||
@@ -8174,6 +8253,7 @@ class _SessionStore {
|
@@ -8711,6 +8771,7 @@ var SessionStoreInternal = {
|
||||||
if (
|
if (
|
||||||
!savedTabGroupState.tabs.length ||
|
!savedTabGroupState.tabs.length ||
|
||||||
this.getSavedTabGroup(savedTabGroupState.id)
|
this.getSavedTabGroup(savedTabGroupState.id)
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs
|
diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs
|
||||||
index bb7bd8c7ca88f776188fce64e0c85beb5ceb27a5..bdec77ba26172fe1b41369b1d45d5a6f9d52ae25 100644
|
index a33deeb5b587d6a950960a1a4781176e4e730ad7..e96cfb9a5ffbe4feccdffa8b6d18ececb48d4c52 100644
|
||||||
--- a/browser/components/sessionstore/TabState.sys.mjs
|
--- a/browser/components/sessionstore/TabState.sys.mjs
|
||||||
+++ b/browser/components/sessionstore/TabState.sys.mjs
|
+++ b/browser/components/sessionstore/TabState.sys.mjs
|
||||||
@@ -10,6 +10,7 @@ const lazy = XPCOMUtils.declareLazy({
|
@@ -8,6 +8,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||||
"moz-src:///browser/components/sessionstore/TabAttributes.sys.mjs",
|
PrivacyFilter: "resource://gre/modules/sessionstore/PrivacyFilter.sys.mjs",
|
||||||
TabStateCache:
|
TabAttributes: "resource:///modules/sessionstore/TabAttributes.sys.mjs",
|
||||||
"moz-src:///browser/components/sessionstore/TabStateCache.sys.mjs",
|
TabStateCache: "resource:///modules/sessionstore/TabStateCache.sys.mjs",
|
||||||
+ UrlbarShared: "chrome://browser/content/urlbar/UrlbarShared.mjs",
|
+ UrlbarShared: "chrome://browser/content/urlbar/UrlbarShared.mjs",
|
||||||
sessionStoreLogger:
|
sessionStoreLogger: "resource:///modules/sessionstore/SessionLogger.sys.mjs",
|
||||||
"moz-src:///browser/components/sessionstore/SessionLogger.sys.mjs",
|
|
||||||
});
|
});
|
||||||
@@ -106,10 +107,28 @@ class _TabState {
|
|
||||||
|
@@ -103,10 +104,28 @@ class _TabState {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -39,14 +39,3 @@ index bb7bd8c7ca88f776188fce64e0c85beb5ceb27a5..bdec77ba26172fe1b41369b1d45d5a6f
|
|||||||
|
|
||||||
tabData.userContextId = tab.userContextId || 0;
|
tabData.userContextId = tab.userContextId || 0;
|
||||||
|
|
||||||
@@ -135,6 +154,10 @@ class _TabState {
|
|
||||||
tabData.image = tabbrowser.getIcon(tab);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (tab.zenStaticIcon) {
|
|
||||||
+ tabData.image = tab.zenStaticIcon;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
// If there is a userTypedValue set, then either the user has typed something
|
|
||||||
// in the URL bar, or a new tab was opened with a URI to load.
|
|
||||||
// If so, we also track whether we were still in the process of loading something.
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/browser/components/tabbrowser/content/drag-and-drop.js b/browser/components/tabbrowser/content/drag-and-drop.js
|
diff --git a/browser/components/tabbrowser/content/drag-and-drop.js b/browser/components/tabbrowser/content/drag-and-drop.js
|
||||||
index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e305afba9e 100644
|
index 70b37f93c4e8ff4ad9a2452681e468d23914c1b5..dbf2d9c83dafbe0e0b4e6caf3835edc8edf9bcf4 100644
|
||||||
--- a/browser/components/tabbrowser/content/drag-and-drop.js
|
--- a/browser/components/tabbrowser/content/drag-and-drop.js
|
||||||
+++ b/browser/components/tabbrowser/content/drag-and-drop.js
|
+++ b/browser/components/tabbrowser/content/drag-and-drop.js
|
||||||
@@ -42,6 +42,9 @@
|
@@ -35,6 +35,9 @@
|
||||||
* @returns {MozTabbrowserTab|vbox}
|
* @returns {MozTabbrowserTab|vbox}
|
||||||
*/
|
*/
|
||||||
const elementToMove = element => {
|
const elementToMove = element => {
|
||||||
@@ -12,7 +12,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
if (isTab(element) || isSplitViewWrapper(element)) {
|
if (isTab(element) || isSplitViewWrapper(element)) {
|
||||||
return element;
|
return element;
|
||||||
}
|
}
|
||||||
@@ -140,6 +143,9 @@
|
@@ -128,6 +131,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
|
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
|
||||||
@@ -22,15 +22,15 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
if (
|
if (
|
||||||
(dropEffect == "move" || dropEffect == "copy") &&
|
(dropEffect == "move" || dropEffect == "copy") &&
|
||||||
document == draggedTab.ownerDocument &&
|
document == draggedTab.ownerDocument &&
|
||||||
@@ -161,6 +167,7 @@
|
@@ -148,6 +154,7 @@
|
||||||
|
!draggedTab.group.collapsed
|
||||||
) {
|
) {
|
||||||
draggedTab.group.collapsedByDrag = true;
|
|
||||||
draggedTab.group.collapsed = true;
|
draggedTab.group.collapsed = true;
|
||||||
+ gZenFolders.animateGroupMove(draggedTab.group);
|
+ gZenFolders.animateGroupMove(draggedTab.group);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dropEffect == "move") {
|
if (dropEffect == "move") {
|
||||||
@@ -168,10 +175,6 @@
|
@@ -155,10 +162,6 @@
|
||||||
|
|
||||||
// Pinned tabs in expanded vertical mode are on a grid format and require
|
// Pinned tabs in expanded vertical mode are on a grid format and require
|
||||||
// different logic to drag and drop.
|
// different logic to drag and drop.
|
||||||
@@ -41,7 +41,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
this._animateTabMove(event);
|
this._animateTabMove(event);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -310,6 +313,10 @@
|
@@ -297,6 +300,10 @@
|
||||||
|
|
||||||
this._tabDropIndicator.hidden = true;
|
this._tabDropIndicator.hidden = true;
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
@@ -52,7 +52,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
if (draggedTab && dropEffect == "copy") {
|
if (draggedTab && dropEffect == "copy") {
|
||||||
let duplicatedDraggedTab;
|
let duplicatedDraggedTab;
|
||||||
let duplicatedTabs = [];
|
let duplicatedTabs = [];
|
||||||
@@ -337,12 +344,16 @@
|
@@ -324,12 +331,16 @@
|
||||||
let translateOffsetY = oldTranslateY % tabHeight;
|
let translateOffsetY = oldTranslateY % tabHeight;
|
||||||
let newTranslateX = oldTranslateX - translateOffsetX;
|
let newTranslateX = oldTranslateX - translateOffsetX;
|
||||||
let newTranslateY = oldTranslateY - translateOffsetY;
|
let newTranslateY = oldTranslateY - translateOffsetY;
|
||||||
@@ -73,7 +73,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
|
|
||||||
if (this._tabbrowserTabs.isContainerVerticalPinnedGrid(draggedTab)) {
|
if (this._tabbrowserTabs.isContainerVerticalPinnedGrid(draggedTab)) {
|
||||||
// Update both translate axis for pinned vertical expanded tabs
|
// Update both translate axis for pinned vertical expanded tabs
|
||||||
@@ -417,11 +428,13 @@
|
@@ -404,11 +415,13 @@
|
||||||
this._dragToPinPromoCard,
|
this._dragToPinPromoCard,
|
||||||
];
|
];
|
||||||
let shouldPin =
|
let shouldPin =
|
||||||
@@ -87,7 +87,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
isTab(draggedTab) &&
|
isTab(draggedTab) &&
|
||||||
draggedTab.pinned &&
|
draggedTab.pinned &&
|
||||||
this._tabbrowserTabs.arrowScrollbox.contains(event.target);
|
this._tabbrowserTabs.arrowScrollbox.contains(event.target);
|
||||||
@@ -492,6 +505,7 @@
|
@@ -484,6 +497,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,7 +95,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
if (shouldTranslate) {
|
if (shouldTranslate) {
|
||||||
this.#dropAnimationEndTime = Date.now() + DROP_ANIMATION_GRACE_MS;
|
this.#dropAnimationEndTime = Date.now() + DROP_ANIMATION_GRACE_MS;
|
||||||
let translationPromises = [];
|
let translationPromises = [];
|
||||||
@@ -504,7 +518,7 @@
|
@@ -496,7 +510,7 @@
|
||||||
item.removeAttribute("tabdrop-samewindow");
|
item.removeAttribute("tabdrop-samewindow");
|
||||||
resolve();
|
resolve();
|
||||||
};
|
};
|
||||||
@@ -104,7 +104,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
postTransitionCleanup();
|
postTransitionCleanup();
|
||||||
} else {
|
} else {
|
||||||
let onTransitionEnd = transitionendEvent => {
|
let onTransitionEnd = transitionendEvent => {
|
||||||
@@ -595,7 +609,7 @@
|
@@ -580,7 +594,7 @@
|
||||||
if (tab.selected) {
|
if (tab.selected) {
|
||||||
selectedTab = tab;
|
selectedTab = tab;
|
||||||
indexForSelectedTab = newIndex;
|
indexForSelectedTab = newIndex;
|
||||||
@@ -113,7 +113,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
const droppedIntoPinnedArea = dropIndex < gBrowser.pinnedTabCount;
|
const droppedIntoPinnedArea = dropIndex < gBrowser.pinnedTabCount;
|
||||||
const newSplitView = gBrowser.adoptSplitView(tab, {
|
const newSplitView = gBrowser.adoptSplitView(tab, {
|
||||||
elementIndex: droppedIntoPinnedArea
|
elementIndex: droppedIntoPinnedArea
|
||||||
@@ -620,7 +634,7 @@
|
@@ -605,7 +619,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -122,7 +122,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
const newTab = gBrowser.adoptTab(selectedTab, {
|
const newTab = gBrowser.adoptTab(selectedTab, {
|
||||||
elementIndex: indexForSelectedTab,
|
elementIndex: indexForSelectedTab,
|
||||||
selectTab: selectedTab == draggedTab,
|
selectTab: selectedTab == draggedTab,
|
||||||
@@ -654,10 +668,6 @@
|
@@ -639,10 +653,6 @@
|
||||||
this._tabbrowserTabs.dragAndDropElements[
|
this._tabbrowserTabs.dragAndDropElements[
|
||||||
gBrowser.pinnedTabCount + unpinnedSplitViews.length - 1
|
gBrowser.pinnedTabCount + unpinnedSplitViews.length - 1
|
||||||
];
|
];
|
||||||
@@ -133,7 +133,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -717,6 +727,7 @@
|
@@ -703,6 +713,7 @@
|
||||||
|
|
||||||
let nextItem = this._tabbrowserTabs.dragAndDropElements[newIndex];
|
let nextItem = this._tabbrowserTabs.dragAndDropElements[newIndex];
|
||||||
let tabGroup = isTab(nextItem) && nextItem.group;
|
let tabGroup = isTab(nextItem) && nextItem.group;
|
||||||
@@ -141,7 +141,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
gBrowser.loadTabs(urls, {
|
gBrowser.loadTabs(urls, {
|
||||||
inBackground,
|
inBackground,
|
||||||
replace,
|
replace,
|
||||||
@@ -758,6 +769,22 @@
|
@@ -744,6 +755,22 @@
|
||||||
this._expandGroupOnDrop(draggedTab);
|
this._expandGroupOnDrop(draggedTab);
|
||||||
}
|
}
|
||||||
this._resetTabsAfterDrop(draggedTab);
|
this._resetTabsAfterDrop(draggedTab);
|
||||||
@@ -164,7 +164,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
dt.mozUserCancelled ||
|
dt.mozUserCancelled ||
|
||||||
@@ -1088,11 +1115,10 @@
|
@@ -1074,11 +1101,10 @@
|
||||||
return this.#getHorizontalScrollboxDragTarget(event, ignoreSides);
|
return this.#getHorizontalScrollboxDragTarget(event, ignoreSides);
|
||||||
}
|
}
|
||||||
while (target) {
|
while (target) {
|
||||||
@@ -180,7 +180,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
target = target.parentNode;
|
target = target.parentNode;
|
||||||
@@ -1122,6 +1148,9 @@
|
@@ -1108,6 +1134,9 @@
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -190,43 +190,36 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1188,17 +1217,24 @@
|
@@ -1170,14 +1199,20 @@
|
||||||
let periphery = draggedTab.ownerDocument.getElementById(
|
let releaseReservedSpace = () =>
|
||||||
"tabbrowser-arrowscrollbox-periphery"
|
this.#releaseSpaceInScrolledContent(periphery);
|
||||||
);
|
if (group.collapsed) {
|
||||||
- // The group's tabs animate back to their full size, so hold on to the
|
- // The group's tabs animate back to their full size, so hold on to the
|
||||||
- // space reserved for them until they get there.
|
- // space reserved for them until they get there.
|
||||||
- group.addEventListener(
|
- group.addEventListener(
|
||||||
- "TabGroupAnimationComplete",
|
- "TabGroupAnimationComplete",
|
||||||
- () => {
|
- releaseReservedSpace,
|
||||||
- group.collapsedByDrag = false;
|
- { once: true }
|
||||||
- this.#releaseSpaceInScrolledContent(periphery);
|
- );
|
||||||
- },
|
- group.collapsed = false;
|
||||||
- { once: true }
|
+ const expand = !group.hasAttribute("has-active");
|
||||||
- );
|
+ if (expand) {
|
||||||
- group.collapsed = false;
|
+ // The group's tabs animate back to their full size, so hold on to the
|
||||||
+ const expand = !group.hasAttribute("has-active");
|
+ // space reserved for them until they get there.
|
||||||
+ if (expand) {
|
+ group.addEventListener(
|
||||||
+ // The group's tabs animate back to their full size, so hold on to the
|
+ "TabGroupAnimationComplete",
|
||||||
+ // space reserved for them until they get there.
|
+ releaseReservedSpace,
|
||||||
+ group.addEventListener(
|
+ { once: true }
|
||||||
+ "TabGroupAnimationComplete",
|
+ );
|
||||||
+ () => {
|
+ } else {
|
||||||
+ group.collapsedByDrag = false;
|
+ releaseReservedSpace();
|
||||||
+ this.#releaseSpaceInScrolledContent(periphery);
|
+ }
|
||||||
+ },
|
+ group.collapsed = !expand;
|
||||||
+ { once: true }
|
+ gZenFolders.animateGroupMove(group, true);
|
||||||
+ );
|
} else {
|
||||||
+ } else {
|
releaseReservedSpace();
|
||||||
+ group.collapsedByDrag = false;
|
}
|
||||||
+ this.#releaseSpaceInScrolledContent(periphery);
|
@@ -1362,7 +1397,6 @@
|
||||||
+ }
|
|
||||||
+ group.collapsed = !expand;
|
|
||||||
+ gZenFolders.animateGroupMove(group, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
@@ -1380,7 +1416,6 @@
|
|
||||||
// using updateDragImage. On Linux, we can use a panel.
|
// using updateDragImage. On Linux, we can use a panel.
|
||||||
if (platform == "win" || platform == "macosx") {
|
if (platform == "win" || platform == "macosx") {
|
||||||
captureListener = function () {
|
captureListener = function () {
|
||||||
@@ -234,7 +227,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
// Create a panel to use it in setDragImage
|
// Create a panel to use it in setDragImage
|
||||||
@@ -1418,7 +1453,6 @@
|
@@ -1400,7 +1434,6 @@
|
||||||
);
|
);
|
||||||
dragImageOffset = dragImageOffset * scale;
|
dragImageOffset = dragImageOffset * scale;
|
||||||
}
|
}
|
||||||
@@ -242,7 +235,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
|
|
||||||
// _dragData.offsetX/Y give the coordinates that the mouse should be
|
// _dragData.offsetX/Y give the coordinates that the mouse should be
|
||||||
// positioned relative to the corner of the new window created upon
|
// positioned relative to the corner of the new window created upon
|
||||||
@@ -1437,7 +1471,7 @@
|
@@ -1419,7 +1452,7 @@
|
||||||
let dropEffect = this.getDropEffectForTabDrag(event);
|
let dropEffect = this.getDropEffectForTabDrag(event);
|
||||||
let isMovingInTabStrip = !fromTabList && dropEffect == "move";
|
let isMovingInTabStrip = !fromTabList && dropEffect == "move";
|
||||||
let collapseTabGroupDuringDrag =
|
let collapseTabGroupDuringDrag =
|
||||||
@@ -251,7 +244,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
|
|
||||||
tab._dragData = {
|
tab._dragData = {
|
||||||
offsetX: this._tabbrowserTabs.verticalMode
|
offsetX: this._tabbrowserTabs.verticalMode
|
||||||
@@ -1447,7 +1481,7 @@
|
@@ -1429,7 +1462,7 @@
|
||||||
? event.screenY - window.screenY - tabOffset
|
? event.screenY - window.screenY - tabOffset
|
||||||
: event.screenY - window.screenY,
|
: event.screenY - window.screenY,
|
||||||
scrollPos:
|
scrollPos:
|
||||||
@@ -260,7 +253,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
? this._tabbrowserTabs.pinnedTabsContainer.scrollPosition
|
? this._tabbrowserTabs.pinnedTabsContainer.scrollPosition
|
||||||
: this._tabbrowserTabs.arrowScrollbox.scrollPosition,
|
: this._tabbrowserTabs.arrowScrollbox.scrollPosition,
|
||||||
screenX: event.screenX,
|
screenX: event.screenX,
|
||||||
@@ -1540,6 +1574,7 @@
|
@@ -1522,6 +1555,7 @@
|
||||||
if (tabStripItemElement.hasAttribute("dragtarget")) {
|
if (tabStripItemElement.hasAttribute("dragtarget")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -268,7 +261,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
let isPinned = tab.pinned;
|
let isPinned = tab.pinned;
|
||||||
let dragAndDropElements = this._tabbrowserTabs.dragAndDropElements;
|
let dragAndDropElements = this._tabbrowserTabs.dragAndDropElements;
|
||||||
let isGrid = this._tabbrowserTabs.isContainerVerticalPinnedGrid(tab);
|
let isGrid = this._tabbrowserTabs.isContainerVerticalPinnedGrid(tab);
|
||||||
@@ -1913,23 +1948,6 @@
|
@@ -1895,23 +1929,6 @@
|
||||||
|
|
||||||
// Slide the relevant tabs to their new position.
|
// Slide the relevant tabs to their new position.
|
||||||
// non-moving tabs adjust for RTL
|
// non-moving tabs adjust for RTL
|
||||||
@@ -292,7 +285,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
// moving tabs don't adjust for RTL
|
// moving tabs don't adjust for RTL
|
||||||
for (let item of selectedElements) {
|
for (let item of selectedElements) {
|
||||||
if (
|
if (
|
||||||
@@ -1978,7 +1996,6 @@
|
@@ -1960,7 +1977,6 @@
|
||||||
for (let item of this._tabbrowserTabs.dragAndDropElements) {
|
for (let item of this._tabbrowserTabs.dragAndDropElements) {
|
||||||
delete item._moveTogetherSelectedTabsData;
|
delete item._moveTogetherSelectedTabsData;
|
||||||
item = elementToMove(item);
|
item = elementToMove(item);
|
||||||
@@ -300,7 +293,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
item.removeAttribute("multiselected-move-together");
|
item.removeAttribute("multiselected-move-together");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2830,7 +2847,6 @@
|
@@ -2812,7 +2828,6 @@
|
||||||
tab.style.top = "";
|
tab.style.top = "";
|
||||||
tab.style.maxWidth = "";
|
tab.style.maxWidth = "";
|
||||||
tab.style.pointerEvents = "";
|
tab.style.pointerEvents = "";
|
||||||
@@ -308,7 +301,7 @@ index f9623f82499e516050d523068e70ebaa4fe9a66a..95bcc078a86b4ec4b35f5916b7e4a5e3
|
|||||||
tab.removeAttribute("small-stack");
|
tab.removeAttribute("small-stack");
|
||||||
tab.removeAttribute("big-stack");
|
tab.removeAttribute("big-stack");
|
||||||
}
|
}
|
||||||
@@ -2839,11 +2855,9 @@
|
@@ -2821,11 +2836,9 @@
|
||||||
)) {
|
)) {
|
||||||
label.style.width = "";
|
label.style.width = "";
|
||||||
label.style.maxWidth = "";
|
label.style.maxWidth = "";
|
||||||
|
|||||||
1171
src/browser/components/tabbrowser/content/tabbrowser-js.patch
Normal file
@@ -1,15 +1,15 @@
|
|||||||
diff --git a/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs b/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs
|
diff --git a/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs b/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs
|
||||||
index e32b02941a6019703212cede4660a24b88845120..5cb363ed20d49c1ae8abedecc3b08540406b7a1b 100644
|
index cfc232f038cd491db32e0c0ca35622360dd9dec5..4806a725ddefa9d0709020d537eae5464249a294 100644
|
||||||
--- a/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs
|
--- a/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs
|
||||||
+++ b/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs
|
+++ b/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs
|
||||||
@@ -76,22 +76,26 @@ export class UrlbarProviderHeuristicFallback extends UrlbarProvider {
|
@@ -77,22 +77,26 @@ export class UrlbarProviderHeuristicFallback extends UrlbarProvider {
|
||||||
// Since we can't tell if this is a real URL and whether the user wants
|
// Since we can't tell if this is a real URL and whether the user wants
|
||||||
// to visit or search for it, we provide an alternative searchengine
|
// to visit or search for it, we provide an alternative searchengine
|
||||||
// match if the string looks like an alphanumeric origin or an e-mail.
|
// match if the string looks like an alphanumeric origin or an e-mail.
|
||||||
- let str = queryContext.searchString;
|
- let str = queryContext.searchString;
|
||||||
- if (!URL.canParse(str)) {
|
- if (!URL.canParse(str)) {
|
||||||
- if (
|
- if (
|
||||||
- queryContext.keywordEnabled &&
|
- lazy.UrlbarPrefs.get("keyword.enabled") &&
|
||||||
- (lazy.UrlUtils.looksLikeOrigin(str, {
|
- (lazy.UrlUtils.looksLikeOrigin(str, {
|
||||||
- noIp: true,
|
- noIp: true,
|
||||||
- noPort: true,
|
- noPort: true,
|
||||||
@@ -24,7 +24,7 @@ index e32b02941a6019703212cede4660a24b88845120..5cb363ed20d49c1ae8abedecc3b08540
|
|||||||
+ }
|
+ }
|
||||||
+ );
|
+ );
|
||||||
+ if (
|
+ if (
|
||||||
+ queryContext.keywordEnabled &&
|
+ lazy.UrlbarPrefs.get("keyword.enabled") &&
|
||||||
+ (lazy.UrlUtils.looksLikeUrl(searchCandidate) ||
|
+ (lazy.UrlUtils.looksLikeUrl(searchCandidate) ||
|
||||||
+ lazy.UrlUtils.looksLikeOrigin(searchCandidate, {
|
+ lazy.UrlUtils.looksLikeOrigin(searchCandidate, {
|
||||||
+ allowPartialNumericalTLDs: true,
|
+ allowPartialNumericalTLDs: true,
|
||||||
|
|||||||
16
src/browser/components/urlbar/UrlbarUtils-sys-mjs.patch
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
diff --git a/browser/components/urlbar/UrlbarUtils.sys.mjs b/browser/components/urlbar/UrlbarUtils.sys.mjs
|
||||||
|
index 178cd5e84fda74a28b2de59b671b3399cc28fac4..b03c6e06de4ee9a95dcb4d33d7ac9f0b053be4e1 100644
|
||||||
|
--- a/browser/components/urlbar/UrlbarUtils.sys.mjs
|
||||||
|
+++ b/browser/components/urlbar/UrlbarUtils.sys.mjs
|
||||||
|
@@ -214,6 +214,11 @@ export var UrlbarUtils = {
|
||||||
|
return UrlbarShared.RESULT_GROUP.HEURISTIC_FALLBACK;
|
||||||
|
case "UrlbarProviderHistoryUrlHeuristic":
|
||||||
|
return UrlbarShared.RESULT_GROUP.HEURISTIC_HISTORY_URL;
|
||||||
|
+ case "ZenUrlbarProviderGlobalActions":
|
||||||
|
+ if (result.source == UrlbarShared.RESULT_SOURCE.WORKSPACES) {
|
||||||
|
+ return UrlbarShared.RESULT_GROUP.ZEN_WORKSPACE;
|
||||||
|
+ }
|
||||||
|
+ return UrlbarShared.RESULT_GROUP.ZEN_ACTION;
|
||||||
|
case "UrlbarProviderOmnibox":
|
||||||
|
return UrlbarShared.RESULT_GROUP.HEURISTIC_OMNIBOX;
|
||||||
|
case "UrlbarProviderRestrictKeywordsAutofill":
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
diff --git a/browser/components/urlbar/content/UrlbarChildController.mjs b/browser/components/urlbar/content/UrlbarChildController.mjs
|
diff --git a/browser/components/urlbar/content/UrlbarChildController.mjs b/browser/components/urlbar/content/UrlbarChildController.mjs
|
||||||
index 52ed36deac35d3de9f7f537313159fb4debe98a6..3bbc612a2e10eedafdabdaa8e17cf36831a6a27c 100644
|
index a17a4de079b69d2818388b33a2c1746cc6148c73..4fee63a22919972af08716db2d2de1c7549ff100 100644
|
||||||
--- a/browser/components/urlbar/content/UrlbarChildController.mjs
|
--- a/browser/components/urlbar/content/UrlbarChildController.mjs
|
||||||
+++ b/browser/components/urlbar/content/UrlbarChildController.mjs
|
+++ b/browser/components/urlbar/content/UrlbarChildController.mjs
|
||||||
@@ -446,7 +446,6 @@ export class UrlbarChildController {
|
@@ -438,7 +438,6 @@ export class UrlbarChildController {
|
||||||
const isMac = UrlbarContentUtils.getPlatform() == "macosx";
|
const isMac = AppConstants.platform == "macosx";
|
||||||
// Handle readline/emacs-style navigation bindings on Mac.
|
// Handle readline/emacs-style navigation bindings on Mac.
|
||||||
if (
|
if (
|
||||||
- isMac &&
|
- isMac &&
|
||||||
this.view.isOpen &&
|
this.view.isOpen &&
|
||||||
event.ctrlKey &&
|
event.ctrlKey &&
|
||||||
(event.key == "n" || event.key == "p")
|
(event.key == "n" || event.key == "p")
|
||||||
@@ -644,6 +643,8 @@ export class UrlbarChildController {
|
@@ -630,6 +629,8 @@ export class UrlbarChildController {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
@@ -19,7 +19,7 @@ index 52ed36deac35d3de9f7f537313159fb4debe98a6..3bbc612a2e10eedafdabdaa8e17cf368
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -905,6 +906,10 @@ export class UrlbarChildController {
|
@@ -934,6 +935,10 @@ export class UrlbarChildController {
|
||||||
}
|
}
|
||||||
reuseEmpty = true;
|
reuseEmpty = true;
|
||||||
}
|
}
|
||||||
@@ -30,7 +30,7 @@ index 52ed36deac35d3de9f7f537313159fb4debe98a6..3bbc612a2e10eedafdabdaa8e17cf368
|
|||||||
// The browser window exists only in chrome; a content-process input has no
|
// The browser window exists only in chrome; a content-process input has no
|
||||||
// tab to reuse, so `gBrowser` is absent and the reuse is skipped.
|
// tab to reuse, so `gBrowser` is absent and the reuse is skipped.
|
||||||
if (
|
if (
|
||||||
@@ -914,6 +919,10 @@ export class UrlbarChildController {
|
@@ -943,6 +948,10 @@ export class UrlbarChildController {
|
||||||
) {
|
) {
|
||||||
where = "current";
|
where = "current";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,22 @@
|
|||||||
diff --git a/browser/components/urlbar/content/UrlbarInputBase.mjs b/browser/components/urlbar/content/UrlbarInputBase.mjs
|
diff --git a/browser/components/urlbar/content/UrlbarInput.mjs b/browser/components/urlbar/content/UrlbarInput.mjs
|
||||||
index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da6e01bec5 100644
|
index e7e9495e56076cd112beafb8297dece4ae4cea58..afdc80c034e2a3c9a50e6e5d2cc650e59bf2eb91 100644
|
||||||
--- a/browser/components/urlbar/content/UrlbarInputBase.mjs
|
--- a/browser/components/urlbar/content/UrlbarInput.mjs
|
||||||
+++ b/browser/components/urlbar/content/UrlbarInputBase.mjs
|
+++ b/browser/components/urlbar/content/UrlbarInput.mjs
|
||||||
@@ -83,6 +83,12 @@ if (lazy) {
|
@@ -88,6 +88,13 @@ const lazy = XPCOMUtils.declareLazy({
|
||||||
Ci.nsIURLQueryStringStripper,
|
logger: () => UrlbarShared.getLogger({ prefix: "Input" }),
|
||||||
],
|
});
|
||||||
});
|
|
||||||
+ XPCOMUtils.defineLazyPreferenceGetter(
|
|
||||||
+ lazy,
|
|
||||||
+ "ZEN_URLBAR_BEHAVIOR",
|
|
||||||
+ "zen.urlbar.behavior",
|
|
||||||
+ 'default'
|
|
||||||
+ );
|
|
||||||
}
|
|
||||||
|
|
||||||
const logger = () => UrlbarShared.getLogger({ prefix: "Input" });
|
+XPCOMUtils.defineLazyPreferenceGetter(
|
||||||
@@ -917,7 +923,16 @@ ${
|
+ lazy,
|
||||||
|
+ "ZEN_URLBAR_BEHAVIOR",
|
||||||
|
+ "zen.urlbar.behavior",
|
||||||
|
+ 'default'
|
||||||
|
+);
|
||||||
|
+
|
||||||
|
const UNLIMITED_MAX_RESULTS = 99;
|
||||||
|
|
||||||
|
let getBoundsWithoutFlushing = element =>
|
||||||
|
@@ -771,7 +778,16 @@ ${
|
||||||
// See _on_select(). HTMLInputElement.select() dispatches a "select"
|
// See _on_select(). HTMLInputElement.select() dispatches a "select"
|
||||||
// event but does not set the primary selection.
|
// event but does not set the primary selection.
|
||||||
this._suppressPrimaryAdjustment = true;
|
this._suppressPrimaryAdjustment = true;
|
||||||
@@ -32,7 +33,7 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
this._suppressPrimaryAdjustment = false;
|
this._suppressPrimaryAdjustment = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -992,6 +1007,10 @@ ${
|
@@ -846,6 +862,10 @@ ${
|
||||||
hideSearchTerms = false,
|
hideSearchTerms = false,
|
||||||
isSameDocument = false,
|
isSameDocument = false,
|
||||||
} = {}) {
|
} = {}) {
|
||||||
@@ -43,7 +44,7 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
if (!this.#isAddressbar) {
|
if (!this.#isAddressbar) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
"Cannot set URI for UrlbarInput that is not an address bar"
|
"Cannot set URI for UrlbarInput that is not an address bar"
|
||||||
@@ -1289,7 +1308,16 @@ ${
|
@@ -1143,7 +1163,16 @@ ${
|
||||||
this.searchModeSwitcher?.updateSearchIcon();
|
this.searchModeSwitcher?.updateSearchIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,17 +61,7 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1401,6 +1429,9 @@ ${
|
@@ -1726,7 +1755,11 @@ ${
|
||||||
where,
|
|
||||||
query: searchString,
|
|
||||||
});
|
|
||||||
+ if (where != "current" && this.sapName != "searchbar") {
|
|
||||||
+ this.handleRevert();
|
|
||||||
+ }
|
|
||||||
this.controller.openSERP(
|
|
||||||
engine.id,
|
|
||||||
searchString,
|
|
||||||
@@ -1884,7 +1915,11 @@ ${
|
|
||||||
openParams.avoidBrowserFocus = keepViewOpen;
|
openParams.avoidBrowserFocus = keepViewOpen;
|
||||||
|
|
||||||
if (!this.#providesSearchMode(result) && !keepViewOpen) {
|
if (!this.#providesSearchMode(result) && !keepViewOpen) {
|
||||||
@@ -83,12 +74,12 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isCanonized) {
|
if (isCanonized) {
|
||||||
@@ -3181,6 +3216,42 @@ ${
|
@@ -3016,6 +3049,42 @@ ${
|
||||||
await this.#updateLayoutBreakoutDimensions();
|
await this.#updateLayoutBreakoutDimensions();
|
||||||
}
|
}
|
||||||
|
|
||||||
+ zenFormatURLValue() {
|
+ zenFormatURLValue() {
|
||||||
+ return this.#getValueFormatter().update();
|
+ return this.#lazy.valueFormatter._formatURL();
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ get zenUrlbarBehavior() {
|
+ get zenUrlbarBehavior() {
|
||||||
@@ -126,11 +117,9 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
startLayoutExtend() {
|
startLayoutExtend() {
|
||||||
if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) {
|
if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) {
|
||||||
// Do not expand if the Urlbar does not support being expanded or it is
|
// Do not expand if the Urlbar does not support being expanded or it is
|
||||||
@@ -3193,8 +3264,16 @@ ${
|
@@ -2988,6 +3057,14 @@ ${
|
||||||
}
|
+ this.setAttribute("popover", "manual");
|
||||||
|
|
||||||
this.toggleAttribute("breakout-extend", true);
|
this.toggleAttribute("breakout-extend", true);
|
||||||
+ this.#showBreakoutPopover();
|
|
||||||
this.#updateTextboxPosition();
|
this.#updateTextboxPosition();
|
||||||
|
|
||||||
+ this.window.gZenUIManager.onUrlbarOpen();
|
+ this.window.gZenUIManager.onUrlbarOpen();
|
||||||
@@ -143,7 +132,7 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
// Enable the animation only after the first extend call to ensure it
|
// Enable the animation only after the first extend call to ensure it
|
||||||
// doesn't run when opening a new window.
|
// doesn't run when opening a new window.
|
||||||
if (!this.hasAttribute("breakout-extend-animate")) {
|
if (!this.hasAttribute("breakout-extend-animate")) {
|
||||||
@@ -3218,7 +3297,33 @@ ${
|
@@ -3011,6 +3088,30 @@ ${
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,13 +160,10 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
+ this.removeAttribute("zen-floating-urlbar");
|
+ this.removeAttribute("zen-floating-urlbar");
|
||||||
+
|
+
|
||||||
this.toggleAttribute("breakout-extend", false);
|
this.toggleAttribute("breakout-extend", false);
|
||||||
+ if (this.#isAddressbar) {
|
+ this.removeAttribute("popover");
|
||||||
+ this.#hideBreakoutPopover();
|
|
||||||
+ }
|
|
||||||
this.#updateTextboxPosition();
|
this.#updateTextboxPosition();
|
||||||
}
|
}
|
||||||
|
@@ -3091,7 +3190,7 @@ ${
|
||||||
@@ -3256,7 +3361,7 @@ ${
|
|
||||||
forceUnifiedSearchButtonAvailable = false
|
forceUnifiedSearchButtonAvailable = false
|
||||||
) {
|
) {
|
||||||
let prevState = this.getAttribute("pageproxystate");
|
let prevState = this.getAttribute("pageproxystate");
|
||||||
@@ -186,51 +172,20 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
this.setAttribute("pageproxystate", state);
|
this.setAttribute("pageproxystate", state);
|
||||||
this._inputContainer.setAttribute("pageproxystate", state);
|
this._inputContainer.setAttribute("pageproxystate", state);
|
||||||
this._identityBox?.setAttribute("pageproxystate", state);
|
this._identityBox?.setAttribute("pageproxystate", state);
|
||||||
@@ -3533,7 +3638,11 @@ ${
|
@@ -3355,10 +3454,12 @@ ${
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- this.style.top = px(getUntransformedTop(this.parentNode));
|
this.style.top = px(
|
||||||
+ this.style.top = px(
|
|
||||||
+ this.window.gZenVerticalTabsManager._hasSetSingleToolbar ?
|
+ this.window.gZenVerticalTabsManager._hasSetSingleToolbar ?
|
||||||
+ getUntransformedTop(this.parentNode)
|
this.parentNode.getBoxQuads({
|
||||||
+ : (UrlbarContentUtils.getPlatform() == "macosx" ? -2 : -5)
|
ignoreTransforms: true,
|
||||||
+ );
|
flush: false,
|
||||||
|
})[0].p1.y
|
||||||
|
+ : (AppConstants.platform == "macosx" ? -2 : -5)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#updateTextboxPositionNextFrame() {
|
@@ -3417,9 +3518,10 @@ ${
|
||||||
@@ -3553,12 +3662,29 @@ ${
|
|
||||||
this.removeAttribute("breakout");
|
|
||||||
this.parentNode.removeAttribute("breakout");
|
|
||||||
this.style.top = "";
|
|
||||||
+ this.#hideBreakoutPopover();
|
|
||||||
+ this._layoutBreakoutUpdateKey = {};
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ #showBreakoutPopover() {
|
|
||||||
+ if (this.#isAddressbar) {
|
|
||||||
+ this.setAttribute("popover", "manual");
|
|
||||||
+ }
|
|
||||||
+ if (!this.matches(":popover-open")) {
|
|
||||||
+ this.showPopover();
|
|
||||||
+ }
|
|
||||||
+ this.#fixAddressbarSearchbarOrder();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ #hideBreakoutPopover() {
|
|
||||||
try {
|
|
||||||
this.hidePopover();
|
|
||||||
} catch (ex) {
|
|
||||||
// No big deal if not a popover already.
|
|
||||||
}
|
|
||||||
- this._layoutBreakoutUpdateKey = {};
|
|
||||||
+ if (this.#isAddressbar) {
|
|
||||||
+ this.removeAttribute("popover");
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
incrementBreakoutBlockerCount() {
|
|
||||||
@@ -3591,9 +3717,10 @@ ${
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -242,19 +197,7 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (this.#breakoutBlockerCount) {
|
if (this.#breakoutBlockerCount) {
|
||||||
@@ -3602,8 +3729,9 @@ ${
|
@@ -3929,6 +4031,7 @@ ${
|
||||||
|
|
||||||
this.setAttribute("breakout", "true");
|
|
||||||
this.parentNode.setAttribute("breakout", "true");
|
|
||||||
- this.showPopover();
|
|
||||||
- this.#fixAddressbarSearchbarOrder();
|
|
||||||
+ if (!this.#isAddressbar || this.hasAttribute("breakout-extend")) {
|
|
||||||
+ this.#showBreakoutPopover();
|
|
||||||
+ }
|
|
||||||
this.#updateTextboxPosition();
|
|
||||||
|
|
||||||
resolve();
|
|
||||||
@@ -4108,6 +4236,7 @@ ${
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_toggleActionOverride(event) {
|
_toggleActionOverride(event) {
|
||||||
@@ -262,7 +205,7 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
if (
|
if (
|
||||||
event.keyCode == KeyEvent.DOM_VK_SHIFT ||
|
event.keyCode == KeyEvent.DOM_VK_SHIFT ||
|
||||||
event.keyCode == KeyEvent.DOM_VK_ALT ||
|
event.keyCode == KeyEvent.DOM_VK_ALT ||
|
||||||
@@ -4206,9 +4335,10 @@ ${
|
@@ -4027,9 +4130,10 @@ ${
|
||||||
if (!this.#isAddressbar) {
|
if (!this.#isAddressbar) {
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
@@ -275,36 +218,36 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
+ : val;
|
+ : val;
|
||||||
// Only trim value if the directionality doesn't change to RTL and we're not
|
// Only trim value if the directionality doesn't change to RTL and we're not
|
||||||
// showing a strikeout https protocol.
|
// showing a strikeout https protocol.
|
||||||
return UrlbarContentUtils.isTextDirectionRTL(trimmedValue, window) ||
|
return this.controller.isTextDirectionRTL(trimmedValue) ||
|
||||||
@@ -4410,6 +4540,11 @@ ${
|
@@ -4235,6 +4339,11 @@ ${
|
||||||
keepViewOpen = false,
|
keepViewOpen = false,
|
||||||
browserId = null,
|
browserId = null,
|
||||||
}) {
|
}) {
|
||||||
+ where = this.window.gZenUIManager.getOpenUILinkWhere(
|
+ where = this.window.gZenUIManager.getOpenUILinkWhere(
|
||||||
+ loadRequest.urlLoad?.url ?? "",
|
+ url,
|
||||||
+ this.window.gBrowser.selectedBrowser,
|
+ this.window.gBrowser.selectedBrowser,
|
||||||
+ where
|
+ where
|
||||||
+ );
|
+ );
|
||||||
let keyDownEnterDeferred;
|
let userTypedValue;
|
||||||
if (
|
if (this.#isAddressbar && where == "current") {
|
||||||
this._keyDownEnterDeferred &&
|
// Make sure URL is formatted properly (don't show punycode).
|
||||||
@@ -4731,6 +4866,7 @@ ${
|
@@ -4576,6 +4685,7 @@ ${
|
||||||
this.setResultForCurrentValue(null);
|
this.setResultForCurrentValue(null);
|
||||||
this.handleCommand();
|
this.handleCommand();
|
||||||
this.controller.clearLastQueryContextCache();
|
this.controller.clearLastQueryContextCache();
|
||||||
+ this.view.close();
|
+ this.view.close();
|
||||||
|
|
||||||
this._suppressStartQuery = false;
|
this._suppressStartQuery = false;
|
||||||
});
|
});
|
||||||
@@ -4742,7 +4878,6 @@ ${
|
@@ -4583,7 +4693,6 @@ ${
|
||||||
// Close the results pane, because paste and go doesn't want a result
|
contextMenu.addEventListener("popupshowing", () => {
|
||||||
// selection. This has to happen before the menu opens: ending
|
// Close the results pane when the input field contextual menu is open,
|
||||||
// breakout-extend once it's open keeps it from showing (bug 2037468).
|
// because paste and go doesn't want a result selection.
|
||||||
- this.view.close();
|
- this.view.close();
|
||||||
|
|
||||||
let controller =
|
let controller =
|
||||||
this.document.commandDispatcher.getControllerForCommand("cmd_paste");
|
this.document.commandDispatcher.getControllerForCommand("cmd_paste");
|
||||||
@@ -5025,7 +5160,11 @@ ${
|
@@ -4850,7 +4959,11 @@ ${
|
||||||
if (!engineName && !source && !this.hasAttribute("searchmode")) {
|
if (!engineName && !source && !this.hasAttribute("searchmode")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -317,7 +260,7 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
if (this._searchModeIndicatorTitle) {
|
if (this._searchModeIndicatorTitle) {
|
||||||
this._searchModeIndicatorTitle.textContent = "";
|
this._searchModeIndicatorTitle.textContent = "";
|
||||||
this._searchModeIndicatorTitle.removeAttribute("data-l10n-id");
|
this._searchModeIndicatorTitle.removeAttribute("data-l10n-id");
|
||||||
@@ -5335,6 +5474,7 @@ ${
|
@@ -5149,6 +5262,7 @@ ${
|
||||||
|
|
||||||
this.document.l10n.setAttributes(
|
this.document.l10n.setAttributes(
|
||||||
this.inputField,
|
this.inputField,
|
||||||
@@ -325,10 +268,10 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
l10nId,
|
l10nId,
|
||||||
l10nId == "urlbar-placeholder-with-name"
|
l10nId == "urlbar-placeholder-with-name"
|
||||||
? { name: engineName }
|
? { name: engineName }
|
||||||
@@ -5385,6 +5525,12 @@ ${
|
@@ -5199,6 +5313,12 @@ ${
|
||||||
}
|
}
|
||||||
|
|
||||||
logger().debug("Blur Event");
|
lazy.logger.debug("Blur Event");
|
||||||
+ if (
|
+ if (
|
||||||
+ this.document.commandDispatcher.focusedElement == this.inputField &&
|
+ this.document.commandDispatcher.focusedElement == this.inputField &&
|
||||||
+ !UrlbarPrefs.get("closeOnWindowBlur")
|
+ !UrlbarPrefs.get("closeOnWindowBlur")
|
||||||
@@ -338,7 +281,7 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
// We cannot count every blur events after a missed engagement as abandoment
|
// We cannot count every blur events after a missed engagement as abandoment
|
||||||
// because the user may have clicked on some view element that executes
|
// because the user may have clicked on some view element that executes
|
||||||
// a command causing a focus change. For example opening preferences from
|
// a command causing a focus change. For example opening preferences from
|
||||||
@@ -5464,6 +5610,11 @@ ${
|
@@ -5276,6 +5396,11 @@ ${
|
||||||
}
|
}
|
||||||
|
|
||||||
_on_click(event) {
|
_on_click(event) {
|
||||||
@@ -350,7 +293,7 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
switch (event.target) {
|
switch (event.target) {
|
||||||
case this.inputField:
|
case this.inputField:
|
||||||
case this._inputContainer:
|
case this._inputContainer:
|
||||||
@@ -5558,10 +5709,11 @@ ${
|
@@ -5371,10 +5496,11 @@ ${
|
||||||
}
|
}
|
||||||
if (untrim) {
|
if (untrim) {
|
||||||
this.setValue(this._untrimmedValue);
|
this.setValue(this._untrimmedValue);
|
||||||
@@ -363,7 +306,7 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
this.view.autoOpen({ event });
|
this.view.autoOpen({ event });
|
||||||
} else {
|
} else {
|
||||||
if (this._untrimOnFocusAfterKeydown) {
|
if (this._untrimOnFocusAfterKeydown) {
|
||||||
@@ -5605,9 +5757,16 @@ ${
|
@@ -5414,9 +5540,16 @@ ${
|
||||||
}
|
}
|
||||||
|
|
||||||
_on_mousedown(event) {
|
_on_mousedown(event) {
|
||||||
@@ -381,7 +324,7 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
if (
|
if (
|
||||||
event.composedTarget != this.inputField &&
|
event.composedTarget != this.inputField &&
|
||||||
event.composedTarget != this._inputContainer
|
event.composedTarget != this._inputContainer
|
||||||
@@ -5617,6 +5776,10 @@ ${
|
@@ -5426,6 +5559,10 @@ ${
|
||||||
|
|
||||||
this.focusedViaMousedown = !this.focused;
|
this.focusedViaMousedown = !this.focused;
|
||||||
this.#preventClickSelectsAll = this.focused;
|
this.#preventClickSelectsAll = this.focused;
|
||||||
@@ -392,16 +335,16 @@ index 8be35b58c5369e123ca69426e852e3849bf75513..778d8aecce4da6748ecbf8b86a38c2da
|
|||||||
|
|
||||||
// Keep the focus status, since the attribute may be changed
|
// Keep the focus status, since the attribute may be changed
|
||||||
// upon calling this.focus().
|
// upon calling this.focus().
|
||||||
@@ -5654,7 +5817,7 @@ ${
|
@@ -5463,7 +5600,7 @@ ${
|
||||||
// view open on tab switch, and the TabSelect event arrived earlier.
|
// view open on tab switch, and the TabSelect event arrived earlier.
|
||||||
// Also ignore mousedown on the urlbarView context menu: opening/closing the
|
// Also ignore mousedown on the urlbarView context menu: opening/closing the
|
||||||
// view is already handled by the result opening flow.
|
// view is already handled by the result opening flow.
|
||||||
- if (event.target.closest?.("tab, #urlbarView-context-menu")) {
|
- if (event.target.closest?.("tab, #urlbarView-context-menu")) {
|
||||||
+ if (event.target.closest?.("tab, #urlbarView-context-menu") || event.target.closest?.("menupopup") || event.target.closest?.("#tabs-newtab-button")) {
|
+ if (event.target.closest?.("tab, #urlbarView-context-menu") || event.target.closest?.("#tabs-newtab-button")) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5948,7 +6111,7 @@ ${
|
@@ -5754,7 +5891,7 @@ ${
|
||||||
// When we are in actions search mode we can show more results so
|
// When we are in actions search mode we can show more results so
|
||||||
// increase the limit.
|
// increase the limit.
|
||||||
let maxResults =
|
let maxResults =
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/browser/components/urlbar/content/UrlbarShared.mjs b/browser/components/urlbar/content/UrlbarShared.mjs
|
diff --git a/browser/components/urlbar/content/UrlbarShared.mjs b/browser/components/urlbar/content/UrlbarShared.mjs
|
||||||
index 0ac5330223c84fbb98880a5c2d83ae58a8f3079e..ff488cf5a2c8b7857a8e145e40aaf861cfa655ec 100644
|
index 4e67dad66ae006842abc6eed547e4a244320d57a..393b61b4d2543c73e60afd334a353f36119ae73e 100644
|
||||||
--- a/browser/components/urlbar/content/UrlbarShared.mjs
|
--- a/browser/components/urlbar/content/UrlbarShared.mjs
|
||||||
+++ b/browser/components/urlbar/content/UrlbarShared.mjs
|
+++ b/browser/components/urlbar/content/UrlbarShared.mjs
|
||||||
@@ -158,6 +158,7 @@ export const UrlbarShared = {
|
@@ -100,6 +100,7 @@ export const UrlbarShared = {
|
||||||
// `looksLikeOrigin()` returned `LOOKS_LIKE_ORIGIN.OTHER` for this token.
|
// `looksLikeOrigin()` returned `LOOKS_LIKE_ORIGIN.OTHER` for this token.
|
||||||
// It may or may not be an origin.
|
// It may or may not be an origin.
|
||||||
POSSIBLE_ORIGIN_BUT_SEARCH_ALLOWED: 12,
|
POSSIBLE_ORIGIN_BUT_SEARCH_ALLOWED: 12,
|
||||||
@@ -10,7 +10,7 @@ index 0ac5330223c84fbb98880a5c2d83ae58a8f3079e..ff488cf5a2c8b7857a8e145e40aaf861
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -178,6 +179,7 @@ export const UrlbarShared = {
|
@@ -120,6 +121,7 @@ export const UrlbarShared = {
|
||||||
TITLE: "#",
|
TITLE: "#",
|
||||||
URL: "$",
|
URL: "$",
|
||||||
ACTION: ">",
|
ACTION: ">",
|
||||||
@@ -18,7 +18,7 @@ index 0ac5330223c84fbb98880a5c2d83ae58a8f3079e..ff488cf5a2c8b7857a8e145e40aaf861
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
// Defines UrlbarResult types.
|
// Defines UrlbarResult types.
|
||||||
@@ -223,6 +225,8 @@ export const UrlbarShared = {
|
@@ -165,6 +167,8 @@ export const UrlbarShared = {
|
||||||
OTHER_NETWORK: 6,
|
OTHER_NETWORK: 6,
|
||||||
ADDON: 7,
|
ADDON: 7,
|
||||||
ACTIONS: 8,
|
ACTIONS: 8,
|
||||||
@@ -27,7 +27,7 @@ index 0ac5330223c84fbb98880a5c2d83ae58a8f3079e..ff488cf5a2c8b7857a8e145e40aaf861
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
// Results are categorized into groups to help the muxer compose them. See
|
// Results are categorized into groups to help the muxer compose them. See
|
||||||
@@ -258,6 +262,8 @@ export const UrlbarShared = {
|
@@ -200,6 +204,8 @@ export const UrlbarShared = {
|
||||||
SEMANTIC_HISTORY: "semanticHistory",
|
SEMANTIC_HISTORY: "semanticHistory",
|
||||||
SUGGESTED_INDEX: "suggestedIndex",
|
SUGGESTED_INDEX: "suggestedIndex",
|
||||||
TAIL_SUGGESTION: "tailSuggestion",
|
TAIL_SUGGESTION: "tailSuggestion",
|
||||||
@@ -36,7 +36,7 @@ index 0ac5330223c84fbb98880a5c2d83ae58a8f3079e..ff488cf5a2c8b7857a8e145e40aaf861
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
// Defines provider types.
|
// Defines provider types.
|
||||||
@@ -443,6 +449,14 @@ export const UrlbarShared = {
|
@@ -385,6 +391,14 @@ export const UrlbarShared = {
|
||||||
telemetryLabel: "actions",
|
telemetryLabel: "actions",
|
||||||
uiLabel: "urlbar-searchmode-actions3",
|
uiLabel: "urlbar-searchmode-actions3",
|
||||||
},
|
},
|
||||||
@@ -51,7 +51,7 @@ index 0ac5330223c84fbb98880a5c2d83ae58a8f3079e..ff488cf5a2c8b7857a8e145e40aaf861
|
|||||||
]);
|
]);
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -460,6 +474,7 @@ export const UrlbarShared = {
|
@@ -402,6 +416,7 @@ export const UrlbarShared = {
|
||||||
if (UrlbarPrefs.get("scotchBonnet.enableOverride")) {
|
if (UrlbarPrefs.get("scotchBonnet.enableOverride")) {
|
||||||
keys.push(this.RESTRICT_TOKENS.ACTION);
|
keys.push(this.RESTRICT_TOKENS.ACTION);
|
||||||
}
|
}
|
||||||
@@ -59,23 +59,3 @@ index 0ac5330223c84fbb98880a5c2d83ae58a8f3079e..ff488cf5a2c8b7857a8e145e40aaf861
|
|||||||
return new Set(keys);
|
return new Set(keys);
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -1032,6 +1047,11 @@ export const UrlbarShared = {
|
|
||||||
return UrlbarShared.RESULT_GROUP.HEURISTIC_FALLBACK;
|
|
||||||
case "UrlbarProviderHistoryUrlHeuristic":
|
|
||||||
return UrlbarShared.RESULT_GROUP.HEURISTIC_HISTORY_URL;
|
|
||||||
+ case "ZenUrlbarProviderGlobalActions":
|
|
||||||
+ if (result.source == UrlbarShared.RESULT_SOURCE.WORKSPACES) {
|
|
||||||
+ return UrlbarShared.RESULT_GROUP.ZEN_WORKSPACE;
|
|
||||||
+ }
|
|
||||||
+ return UrlbarShared.RESULT_GROUP.ZEN_ACTION;
|
|
||||||
case "UrlbarProviderOmnibox":
|
|
||||||
return UrlbarShared.RESULT_GROUP.HEURISTIC_OMNIBOX;
|
|
||||||
case "UrlbarProviderRestrictKeywordsAutofill":
|
|
||||||
@@ -1060,6 +1080,7 @@ export const UrlbarShared = {
|
|
||||||
case "UrlbarProviderAboutPages":
|
|
||||||
return UrlbarShared.RESULT_GROUP.ABOUT_PAGES;
|
|
||||||
case "UrlbarProviderInputHistory":
|
|
||||||
+ case "ZenUrlbarProviderSidebar":
|
|
||||||
return UrlbarShared.RESULT_GROUP.INPUT_HISTORY;
|
|
||||||
case "UrlbarProviderQuickSuggest":
|
|
||||||
return UrlbarShared.RESULT_GROUP.GENERAL_PARENT;
|
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
diff --git a/browser/extensions/newtab/lib/AboutPreferences.sys.mjs b/browser/extensions/newtab/lib/AboutPreferences.sys.mjs
|
|
||||||
index 4562efc05b76d5dddd35bda79bd7d5d98a51ffc9..ad9b6f55f5e77065ce74535daf6457a5c4b44058 100644
|
|
||||||
--- a/browser/extensions/newtab/lib/AboutPreferences.sys.mjs
|
|
||||||
+++ b/browser/extensions/newtab/lib/AboutPreferences.sys.mjs
|
|
||||||
@@ -355,7 +355,7 @@ export class AboutPreferences {
|
|
||||||
// Firefox 155+ registers `homepage` and `customHomepage` in
|
|
||||||
// components/preferences. They can't be registered twice, so skip them
|
|
||||||
// on 155+. Drop this condition once 155 reaches Release.
|
|
||||||
- if (Services.vc.compare(AppConstants.MOZ_APP_VERSION, "155.0a1") < 0) {
|
|
||||||
+ if (false) {
|
|
||||||
groups.homepage = this._setupHomepageGroup(window);
|
|
||||||
groups.customHomepage = this._setupCustomHomepageGroup(window);
|
|
||||||
}
|
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
diff --git a/browser/modules/ExtensionsUI.sys.mjs b/browser/modules/ExtensionsUI.sys.mjs
|
diff --git a/browser/modules/ExtensionsUI.sys.mjs b/browser/modules/ExtensionsUI.sys.mjs
|
||||||
index 73ef024602cb4554a024de4ddef83f492adc33ef..959c3403a48a3e4294ad5d2f72bad0e5d4fbfd75 100644
|
index 95a4b6e40bd568c3ea5003b648b0acbf96bbb725..6ab8a658721aa6470d482dc958e4b3ac78f49f44 100644
|
||||||
--- a/browser/modules/ExtensionsUI.sys.mjs
|
--- a/browser/modules/ExtensionsUI.sys.mjs
|
||||||
+++ b/browser/modules/ExtensionsUI.sys.mjs
|
+++ b/browser/modules/ExtensionsUI.sys.mjs
|
||||||
@@ -507,7 +507,7 @@ export var ExtensionsUI = {
|
@@ -502,7 +502,7 @@ export var ExtensionsUI = {
|
||||||
// right after the panel opens can't accidentally grant permissions).
|
eventCallback,
|
||||||
autofocus: true,
|
removeOnDismissal: true,
|
||||||
popupOptions: {
|
popupOptions: {
|
||||||
- position: "bottomright topright",
|
- position: "bottomright topright",
|
||||||
+ position: window.gZenUIManager.panelUIPosition(),
|
+ position: window.gZenUIManager.panelUIPosition(),
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/browser/themes/shared/tabbrowser/content-area.css b/browser/themes/shared/tabbrowser/content-area.css
|
diff --git a/browser/themes/shared/tabbrowser/content-area.css b/browser/themes/shared/tabbrowser/content-area.css
|
||||||
index 86400b643c8b2af4207d226fbd6d91e5e74548b9..3044e4ab87b7ebcfaa2ac624680da1cc5653c861 100644
|
index 2374ed38bd9361d6c7e1886117099c6761e403b8..72f1f52a13096f19ca4009037ad0cdc880775ff7 100644
|
||||||
--- a/browser/themes/shared/tabbrowser/content-area.css
|
--- a/browser/themes/shared/tabbrowser/content-area.css
|
||||||
+++ b/browser/themes/shared/tabbrowser/content-area.css
|
+++ b/browser/themes/shared/tabbrowser/content-area.css
|
||||||
@@ -166,7 +166,6 @@
|
@@ -239,7 +239,6 @@
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
|
|
||||||
/* We want to be able to show the frame color behind the clipped radiused corner */
|
/* We want to be able to show the frame color behind the clipped radiused corner */
|
||||||
@@ -10,7 +10,7 @@ index 86400b643c8b2af4207d226fbd6d91e5e74548b9..3044e4ab87b7ebcfaa2ac624680da1cc
|
|||||||
|
|
||||||
display: grid;
|
display: grid;
|
||||||
/**
|
/**
|
||||||
@@ -355,7 +354,6 @@
|
@@ -425,7 +424,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
browser:is([blank], [pendingpaint]) {
|
browser:is([blank], [pendingpaint]) {
|
||||||
@@ -18,21 +18,21 @@ index 86400b643c8b2af4207d226fbd6d91e5e74548b9..3044e4ab87b7ebcfaa2ac624680da1cc
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Exclude browsers with smartwindow-content attribute which inherit
|
/* Exclude browsers with smartwindow-content attribute which inherit
|
||||||
@@ -735,7 +733,7 @@ split-view-footer {
|
@@ -865,7 +863,7 @@ split-view-footer {
|
||||||
|
|
||||||
.dialogStack {
|
.dialogStack {
|
||||||
z-index: var(--browser-stack-z-index-dialog-stack);
|
z-index: var(--browser-stack-z-index-dialog-stack);
|
||||||
- position: absolute;
|
- position: absolute;
|
||||||
+ position: fixed;
|
+ position: fixed;
|
||||||
|
inset: 0;
|
||||||
/* --browser-with-dialog set on browser[tabDialogShowing], we want to position the overlay
|
/* --browser-with-dialog set on browser[tabDialogShowing], we want to position the overlay
|
||||||
only on the top of the <browser> element so it doesn't overlap the DevTools toolbox */
|
only on the top of the <browser> element so it doesn't overlap the DevTools toolbox */
|
||||||
@@ -909,7 +907,7 @@ split-view-footer {
|
@@ -1034,7 +1032,7 @@ split-view-footer {
|
||||||
|
|
||||||
.dialogOverlay[topmost="true"],
|
.dialogOverlay[topmost="true"],
|
||||||
#window-modal-dialog::backdrop {
|
#window-modal-dialog::backdrop {
|
||||||
- background-color: var(--background-color-overlay);
|
- background-color: var(--background-color-overlay);
|
||||||
+ background-color: light-dark(rgba(255, 255, 255, .3), rgba(0, 0, 0, .3));
|
+ background-color: light-dark(rgba(255, 255, 255, .3), rgba(0, 0, 0, .3));
|
||||||
}
|
border-radius: var(--chrome-block-radius);
|
||||||
|
|
||||||
.dialogOverlay[hideContent="true"][topmost="true"] {
|
.browserSidebarContainer.responsive-mode & {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/browser/themes/shared/toolbarbuttons.css b/browser/themes/shared/toolbarbuttons.css
|
diff --git a/browser/themes/shared/toolbarbuttons.css b/browser/themes/shared/toolbarbuttons.css
|
||||||
index bbf906c7bf1d6f0d71744953aeeb750c5181639a..dd116e22c38dc376c9c6b34dfa569bf4661a8971 100644
|
index 94b1a2a841d8fd47a491616d52e5bf544f0c0bf9..9e98266b98c6b66fed26fec12fa3391fc5fcc79b 100644
|
||||||
--- a/browser/themes/shared/toolbarbuttons.css
|
--- a/browser/themes/shared/toolbarbuttons.css
|
||||||
+++ b/browser/themes/shared/toolbarbuttons.css
|
+++ b/browser/themes/shared/toolbarbuttons.css
|
||||||
@@ -13,20 +13,6 @@
|
@@ -13,20 +13,6 @@
|
||||||
@@ -23,7 +23,7 @@ index bbf906c7bf1d6f0d71744953aeeb750c5181639a..dd116e22c38dc376c9c6b34dfa569bf4
|
|||||||
&:where([uidensity="compact"]) {
|
&:where([uidensity="compact"]) {
|
||||||
--toolbarbutton-padding-inner: var(--toolbarbutton-padding-inner-compact);
|
--toolbarbutton-padding-inner: var(--toolbarbutton-padding-inner-compact);
|
||||||
--bookmark-block-padding: 1px;
|
--bookmark-block-padding: 1px;
|
||||||
@@ -119,9 +105,7 @@
|
@@ -123,9 +109,7 @@
|
||||||
#TabsToolbar {
|
#TabsToolbar {
|
||||||
/* Override the inner padding to ensure the dimensions match the tabs, but also making sure
|
/* Override the inner padding to ensure the dimensions match the tabs, but also making sure
|
||||||
different types of buttons (combined-buttons-dropmarker or text) still look correct. */
|
different types of buttons (combined-buttons-dropmarker or text) still look correct. */
|
||||||
@@ -33,16 +33,18 @@ index bbf906c7bf1d6f0d71744953aeeb750c5181639a..dd116e22c38dc376c9c6b34dfa569bf4
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Primary toolbar buttons */
|
/* Primary toolbar buttons */
|
||||||
@@ -174,7 +158,7 @@
|
@@ -205,8 +189,8 @@ toolbar .toolbarbutton-1 {
|
||||||
|
|
||||||
toolbar .toolbarbutton-1 {
|
> .toolbarbutton-icon {
|
||||||
/* horizontal padding + actual icon width */
|
/* horizontal padding + actual icon width */
|
||||||
- --toolbarbutton-icon-size: calc(2 * var(--toolbarbutton-padding-inner) + 16px);
|
- width: calc(2 * var(--toolbarbutton-padding-inner) + 16px);
|
||||||
+ --toolbarbutton-icon-size: calc(2 * var(--toolbarbutton-padding-inner) + var(--zen-toolbar-button-size, 16px));
|
- height: calc(2 * var(--toolbarbutton-padding-inner) + 16px);
|
||||||
|
+ width: calc(2 * var(--toolbarbutton-padding-inner) + var(--zen-toolbar-button-size, 16px));
|
||||||
|
+ height: calc(2 * var(--toolbarbutton-padding-inner) + var(--zen-toolbar-button-size, 16px));
|
||||||
|
}
|
||||||
|
|
||||||
appearance: none;
|
> .toolbarbutton-text {
|
||||||
margin: 0;
|
@@ -216,7 +200,7 @@ toolbar .toolbarbutton-1 {
|
||||||
@@ -214,7 +198,7 @@ toolbar .toolbarbutton-1 {
|
|
||||||
* height as the button icons and the same vertical padding, but as a minimum,
|
* height as the button icons and the same vertical padding, but as a minimum,
|
||||||
* because otherwise an increase in text sizes would break things.
|
* because otherwise an increase in text sizes would break things.
|
||||||
*/
|
*/
|
||||||
@@ -60,7 +62,7 @@ index bbf906c7bf1d6f0d71744953aeeb750c5181639a..dd116e22c38dc376c9c6b34dfa569bf4
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -427,7 +411,7 @@ toolbarbutton.bookmark-item:not(.subviewbutton) {
|
@@ -536,7 +520,7 @@ toolbarbutton.bookmark-item:not(.subviewbutton) {
|
||||||
*/
|
*/
|
||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
> .toolbarbutton-icon {
|
> .toolbarbutton-icon {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/browser/themes/shared/urlbar.css b/browser/themes/shared/urlbar.css
|
diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css
|
||||||
index 06183c82e2869290a5fb476c47fb7db92bbef57f..c64cde1eef50d3457fb1c540d95fe3b8aa087294 100644
|
index 149f123e26cd79e89432dfeb504ca7218ee04810..7e0e6d981d6c2aa53bc2a76d82d2078419659065 100644
|
||||||
--- a/browser/themes/shared/urlbar.css
|
--- a/browser/themes/shared/urlbar-searchbar.css
|
||||||
+++ b/browser/themes/shared/urlbar.css
|
+++ b/browser/themes/shared/urlbar-searchbar.css
|
||||||
@@ -24,8 +24,8 @@
|
@@ -19,8 +19,8 @@
|
||||||
|
|
||||||
@media not -moz-pref("browser.nova.enabled") {
|
@media not -moz-pref("browser.nova.enabled") {
|
||||||
--urlbar-basic-component-size: calc(var(--urlbar-height) - 2 * (var(--urlbar-input-container-border-width) + var(--urlbar-input-container-padding)));
|
--urlbar-basic-component-size: calc(var(--urlbar-height) - 2 * (var(--urlbar-input-container-border-width) + var(--urlbar-input-container-padding)));
|
||||||
@@ -13,7 +13,7 @@ index 06183c82e2869290a5fb476c47fb7db92bbef57f..c64cde1eef50d3457fb1c540d95fe3b8
|
|||||||
}
|
}
|
||||||
@media (max-width: 770px) {
|
@media (max-width: 770px) {
|
||||||
--urlbar-container-min-width: 240px;
|
--urlbar-container-min-width: 240px;
|
||||||
@@ -143,7 +143,7 @@ toolbar[inactive="true"] .urlbar,
|
@@ -127,7 +127,7 @@ toolbar[inactive="true"] .urlbar,
|
||||||
.urlbar:not([usertyping]) > .urlbar-input-container > .urlbar-go-button,
|
.urlbar:not([usertyping]) > .urlbar-input-container > .urlbar-go-button,
|
||||||
.urlbar:not(#searchbar-new, [focused]) > .urlbar-input-container > .urlbar-go-button,
|
.urlbar:not(#searchbar-new, [focused]) > .urlbar-input-container > .urlbar-go-button,
|
||||||
#urlbar-revert-button-container {
|
#urlbar-revert-button-container {
|
||||||
@@ -22,7 +22,7 @@ index 06183c82e2869290a5fb476c47fb7db92bbef57f..c64cde1eef50d3457fb1c540d95fe3b8
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Document Picture-in-Picture API window */
|
/* Document Picture-in-Picture API window */
|
||||||
@@ -434,6 +434,10 @@ toolbar[inactive="true"] .urlbar,
|
@@ -405,6 +405,10 @@ toolbar[inactive="true"] .urlbar,
|
||||||
.urlbar:not([focused])[textoverflow="left"][domaindir="rtl"] > .urlbar-input-container > .urlbar-input-box > & {
|
.urlbar:not([focused])[textoverflow="left"][domaindir="rtl"] > .urlbar-input-container > .urlbar-input-box > & {
|
||||||
mask-image: linear-gradient(to right, transparent var(--urlbar-scheme-size), black calc(var(--urlbar-scheme-size) + 3ch));
|
mask-image: linear-gradient(to right, transparent var(--urlbar-scheme-size), black calc(var(--urlbar-scheme-size) + 3ch));
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@ index 06183c82e2869290a5fb476c47fb7db92bbef57f..c64cde1eef50d3457fb1c540d95fe3b8
|
|||||||
}
|
}
|
||||||
|
|
||||||
#urlbar-scheme {
|
#urlbar-scheme {
|
||||||
@@ -505,10 +509,15 @@ toolbar[inactive="true"] .urlbar,
|
@@ -476,10 +480,15 @@ toolbar[inactive="true"] .urlbar,
|
||||||
}
|
}
|
||||||
|
|
||||||
.urlbar[breakout][breakout-extend] {
|
.urlbar[breakout][breakout-extend] {
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
#filter dumbComments emptyLines substitution
|
||||||
|
# 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/.
|
||||||
|
<svg class="zen-library-icon" width="18" height="18" viewBox="4 4 18 18" fill="context-fill" fill-opacity="context-fill-opacity" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<style>
|
||||||
|
@property --zen-triangle-anim { syntax: '<number>'; initial-value: 0; inherits: false; }
|
||||||
|
@property --zen-circle-anim { syntax: '<number>'; initial-value: 0; inherits: false; }
|
||||||
|
@keyframes StarForward {
|
||||||
|
0% { transform: rotate(0deg); }
|
||||||
|
100% { transform: rotate(120deg); }
|
||||||
|
}
|
||||||
|
@keyframes TriangleForward {
|
||||||
|
0% { --zen-triangle-anim: 0; }
|
||||||
|
100% { --zen-triangle-anim: 1; }
|
||||||
|
}
|
||||||
|
@keyframes CircleForward {
|
||||||
|
0% { --zen-circle-anim: 0; }
|
||||||
|
100% { --zen-circle-anim: 1; }
|
||||||
|
}
|
||||||
|
@keyframes GlowForward {
|
||||||
|
0% { opacity: 0; }
|
||||||
|
100% { opacity: 0.4; }
|
||||||
|
}
|
||||||
|
@keyframes GlowElementsForward {
|
||||||
|
0% { opacity: 0; }
|
||||||
|
100% { opacity: 0.5; }
|
||||||
|
}
|
||||||
|
.zen-library-star { transform-origin: 10px 10.2px; animation: StarForward 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
|
||||||
|
.zen-library-triangle-group { transform-origin: 17px 9.2px; animation: TriangleForward 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; transform: translate(calc(var(--zen-triangle-anim) * 2px), 0px) rotate(calc(var(--zen-triangle-anim) * 365deg)) scale(max(1 - var(--zen-triangle-anim) / 0.65, (var(--zen-triangle-anim) - 0.65) / 0.35)); }
|
||||||
|
.zen-library-circle { transform-origin: 0px 0px; animation: CircleForward 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; transform: translate(calc(var(--zen-circle-anim) * 1px), calc(var(--zen-circle-anim) * -1.5px)) scale(max(0, max((var(--zen-circle-anim) - 0.75) / 0.25, min(1, 1 - (var(--zen-circle-anim) - 0.3) / 0.35)))); }
|
||||||
|
.zen-library-glow { filter: blur(2px); animation: GlowForward 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
|
||||||
|
.zen-library-glow-element { filter: blur(2px); animation: GlowElementsForward 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
|
||||||
|
.zen-library-glow-bg, .zen-library-glow-element { fill: transparent !important; stroke: none !important; }
|
||||||
|
.zen-library-glow-rays { stroke: transparent !important; fill: none !important; }
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
.zen-library-glow-bg, .zen-library-glow-element { fill: white !important; }
|
||||||
|
.zen-library-glow-rays { stroke: white !important; }
|
||||||
|
.zen-library-star:not(.zen-library-glow-element), .zen-library-circle:not(.zen-library-glow-element), .zen-library-triangle:not(.zen-library-glow-element) { fill: white !important; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<defs>
|
||||||
|
<mask id="zen-library-box-mask">
|
||||||
|
<rect x="-10" y="-10" width="40" height="40" fill="white"/>
|
||||||
|
<rect x="-10" y="11.635" width="40" height="40" fill="black"/>
|
||||||
|
</mask>
|
||||||
|
</defs>
|
||||||
|
<g fill-rule="evenodd">
|
||||||
|
<g mask="url(#zen-library-box-mask)">
|
||||||
|
<path class="zen-library-star zen-library-glow-element" d="M 7.773 11.635 C 8.136 11.863 8.24 12.075 8.218 12.294 L 8.036 14.082 C 7.984 14.598 8.584 14.917 8.982 14.585 L 10.362 13.432 C 10.53 13.291 10.764 13.258 10.966 13.347 L 12.61 14.072 C 13.085 14.281 13.574 13.808 13.38 13.327 L 12.701 11.635 C 12.632 11.437 12.675 11.216 12.816 11.058 L 14.014 9.718 C 14.36 9.331 14.061 8.72 13.544 8.756 L 11.75 8.877 C 11.531 8.892 11.322 8.781 11.211 8.591 L 10.307 7.038 C 10.046 6.59 9.373 6.685 9.247 7.188 L 8.808 8.931 C 8.754 9.144 8.585 9.309 8.37 9.355 L 6.613 9.735 C 6.106 9.845 5.988 10.514 6.427 10.79 L 7.773 11.635 Z"/>
|
||||||
|
<path class="zen-library-star" d="M 7.773 11.635 C 8.136 11.863 8.24 12.075 8.218 12.294 L 8.036 14.082 C 7.984 14.598 8.584 14.917 8.982 14.585 L 10.362 13.432 C 10.53 13.291 10.764 13.258 10.966 13.347 L 12.61 14.072 C 13.085 14.281 13.574 13.808 13.38 13.327 L 12.701 11.635 C 12.632 11.437 12.675 11.216 12.816 11.058 L 14.014 9.718 C 14.36 9.331 14.061 8.72 13.544 8.756 L 11.75 8.877 C 11.531 8.892 11.322 8.781 11.211 8.591 L 10.307 7.038 C 10.046 6.59 9.373 6.685 9.247 7.188 L 8.808 8.931 C 8.754 9.144 8.585 9.309 8.37 9.355 L 6.613 9.735 C 6.106 9.845 5.988 10.514 6.427 10.79 L 7.773 11.635 Z"/>
|
||||||
|
</g>
|
||||||
|
<g transform="translate(14, 7.3)">
|
||||||
|
<circle class="zen-library-circle zen-library-glow-element" cx="0" cy="0" r="1.4"/>
|
||||||
|
<circle class="zen-library-circle" cx="0" cy="0" r="1"/>
|
||||||
|
</g>
|
||||||
|
<g class="zen-library-triangle-group">
|
||||||
|
<g transform="translate(17, 9.2)">
|
||||||
|
<path class="zen-library-triangle zen-library-glow-element" d="M -1.1 1.8 C -1.4 2.0, -1.7 1.8, -1.7 1.5 L -1.7 -1.5 C -1.7 -1.8, -1.4 -2.0, -1.1 -1.8 L 1.4 -0.4 C 1.7 -0.2, 1.7 0.2, 1.4 0.4 Z"/>
|
||||||
|
<path class="zen-library-triangle" d="M -1.1 1.8 C -1.4 2.0, -1.7 1.8, -1.7 1.5 L -1.7 -1.5 C -1.7 -1.8, -1.4 -2.0, -1.1 -1.8 L 1.4 -0.4 C 1.7 -0.2, 1.7 0.2, 1.4 0.4 Z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="zen-library-glow">
|
||||||
|
<path class="zen-library-glow-bg" d="M 6.6 6.6 L 8.04 12.7 L 17.96 12.7 L 19.4 6.6 Z"/>
|
||||||
|
<path class="zen-library-glow-rays" d="M 6.1 6.6 L 8.04 12.7 L 17.96 12.7 L 19.9 6.6"/>
|
||||||
|
</g>
|
||||||
|
<path class="zen-library-box" d="M 7.218 13.287 C 7.218 12.831 7.588 12.461 8.044 12.461 H 17.957 C 18.414 12.461 18.783 12.831 18.783 13.287 V 17.418 C 18.783 19.243 17.304 20.722 15.479 20.722 H 10.523 C 8.698 20.722 7.218 19.243 7.218 17.418 V 13.287 Z M 10.609 14.526 C 10.609 14.07 10.979 13.7 11.435 13.7 H 14.739 C 15.196 13.7 15.565 14.07 15.565 14.526 C 15.565 14.982 15.196 15.352 14.739 15.352 H 11.435 C 10.979 15.352 10.609 14.982 10.609 14.526 Z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
#filter dumbComments emptyLines substitution
|
||||||
|
# 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/.
|
||||||
|
<svg class="zen-boosts-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<style>
|
||||||
|
@keyframes zenBoostsCardTilt {
|
||||||
|
0%, 13.33% { transform: translate(61.889px, 63.143px) scale(1.1) rotate(-15deg); animation-timing-function: cubic-bezier(0.35, 0, 0.685, 1); }
|
||||||
|
37.77% { transform: translate(61.889px, 68.143px) scale(1.1) rotate(-23deg); animation-timing-function: cubic-bezier(0.25, 0, 0.7, 1); }
|
||||||
|
64.8% { transform: translate(61.889px, 55.143px) scale(1.1) rotate(-5.4deg); animation-timing-function: cubic-bezier(0.28, 0, 0.68, 1); }
|
||||||
|
87%, 100% { transform: translate(61.889px, 63.143px) scale(1.1) rotate(-15deg); }
|
||||||
|
}
|
||||||
|
@keyframes zenBoostsBrushRotate {
|
||||||
|
0%, 2.22% { transform: translate(18.247px, 109.504px) scale(1.1) rotate(0deg); animation-timing-function: cubic-bezier(0.6, 0, 0.7, 1); }
|
||||||
|
32% { transform: translate(18.247px, 112px) scale(1.1) rotate(12deg); animation-timing-function: cubic-bezier(0.3, 0, 0.6, 1); }
|
||||||
|
52% { transform: translate(18.247px, 97.957px) scale(1.1) rotate(-16.5deg); animation-timing-function: cubic-bezier(0.4, 0, 0.5, 1); }
|
||||||
|
80%, 100% { transform: translate(18.247px, 109.504px) scale(1.1) rotate(0deg); }
|
||||||
|
}
|
||||||
|
@keyframes zenBoostsStarLargeBounce {
|
||||||
|
0%, 20% { transform: translate(85.002px, 50.174px) rotate(2.014deg) scale(1); animation-timing-function: cubic-bezier(0.29, 0, 0.83, 1); }
|
||||||
|
33.3% { transform: translate(85.002px, 59px) rotate(2.014deg) scale(1); animation-timing-function: linear; }
|
||||||
|
42.2% { transform: translate(85.002px, 60.5px) rotate(2.014deg) scale(0); animation-timing-function: linear; }
|
||||||
|
53.3% { transform: translate(85.002px, 45px) rotate(2.014deg) scale(0); animation-timing-function: cubic-bezier(0.45, 0, 0.63, 1); }
|
||||||
|
62.2% { transform: translate(85.002px, 33.344px) rotate(2.014deg) scale(1); animation-timing-function: cubic-bezier(0.45, 0, 0.63, 1); }
|
||||||
|
88.8%, 100% { transform: translate(85.002px, 50.174px) rotate(2.014deg) scale(1); }
|
||||||
|
}
|
||||||
|
@keyframes zenBoostsStarSmallBounce {
|
||||||
|
0%, 26.6% { transform: translate(68.002px, 37.075px) rotate(2.014deg) scale(1); animation-timing-function: cubic-bezier(0.29, 0, 0.83, 1); }
|
||||||
|
44.8% { transform: translate(68.002px, 44.632px) rotate(2.014deg) scale(1); animation-timing-function: linear; }
|
||||||
|
55.5% { transform: translate(68.002px, 34px) rotate(2.014deg) scale(1); animation-timing-function: linear; }
|
||||||
|
64.4% { transform: translate(68.002px, 25px) rotate(2.014deg) scale(0); animation-timing-function: linear; }
|
||||||
|
75.5% { transform: translate(68.002px, 15px) rotate(2.014deg) scale(0); animation-timing-function: cubic-bezier(0.45, 0, 0.63, 1); }
|
||||||
|
84.4% { transform: translate(68.002px, 28px) rotate(2.014deg) scale(1); animation-timing-function: cubic-bezier(0.45, 0, 0.63, 1); }
|
||||||
|
93.3%, 100% { transform: translate(68.002px, 37.075px) rotate(2.014deg) scale(1); }
|
||||||
|
}
|
||||||
|
.zen-boosts-card { animation: zenBoostsCardTilt 0.583s forwards; }
|
||||||
|
.zen-boosts-brush { animation: zenBoostsBrushRotate 0.583s forwards; }
|
||||||
|
.zen-boosts-star-large { animation: zenBoostsStarLargeBounce 0.583s forwards; }
|
||||||
|
.zen-boosts-star-small { animation: zenBoostsStarSmallBounce 0.583s forwards; }
|
||||||
|
</style>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="zen-boosts-grad" gradientUnits="userSpaceOnUse" x1="64" y1="16" x2="64" y2="144">
|
||||||
|
<stop offset="0" stop-color="context-fill"/>
|
||||||
|
<stop offset="1" stop-color="context-stroke"/>
|
||||||
|
</linearGradient>
|
||||||
|
<mask id="zen-boosts-mask" maskContentUnits="userSpaceOnUse">
|
||||||
|
<rect x="-100" y="-100" width="300" height="300" fill="#fff"/>
|
||||||
|
<path fill="#000" stroke="#000" stroke-width="8" stroke-linejoin="round" d="M-3.79 54.121C-5.31 51.635-6.984 48.884-7.082 42.132L-7.073 42.091-7.063 42.051C-6.2 38.573-3.904 36.054-1.1 34.382L4.474 31.059C6.968 29.572 9.896 28.739 13.003 29.233 13.558 28.514 14.137 27.648 14.736 26.617L14.752 26.589 14.769 26.561C15.438 25.438 16.22 24.032 17.105 22.317 18.032 20.521 19.176 18.3 20.531 15.65 21.63 13.5 23.221 11.59 25.405 10.221 27.368 8.99 29.589 8.271 31.984 8.218L32.013 8.218C34.325 8.178 36.528 8.749 38.557 9.821 40.713 10.96 42.401 12.627 43.642 14.615L43.662 14.646 63.922 47.997C66.006 51.466 67.049 55.422 66.104 59.547 65.148 63.723 62.394 66.785 58.898 68.869L44.274 77.586C44.222 77.953 44.148 78.323 44.06 78.696 43.24 82.158 40.963 84.66 38.246 86.34L38.205 86.365 32.548 89.738C29.738 91.413 26.42 92.18 22.922 91.299 18.565 90.201 14.485 87.919 10.34 86.196 10.34 86.196 8.779 87.737 7.305 89.123 5.699 90.632 4.021 91.927 2.291 92.956-2.345 95.712-7.442 96.912-12.65 95.581-17.868 94.248-21.776 90.71-24.597 86.068-27.411 81.439-28.702 76.368-27.456 71.195-26.206 66.005-22.739 62.101-18.096 59.333-16.417 58.332-14.507 57.488-12.438 56.763L-12.4 56.75C-10.473 56.089-8.488 55.472-6.445 54.899-5.537 54.635-4.652 54.375-3.79 54.121Z"/>
|
||||||
|
</mask>
|
||||||
|
</defs>
|
||||||
|
<g class="zen-boosts-card" style="transform-origin: 0 0;" transform="translate(61.889 63.143) scale(1.1) rotate(-15)">
|
||||||
|
<g class="zen-boosts-card-anchor" transform="translate(-44 -44)">
|
||||||
|
<rect class="zen-boosts-bg" x="3.55" y="3.55" width="80.9" height="80.9" rx="12.45" fill="context-fill" fill-opacity="1"/>
|
||||||
|
<rect class="zen-boosts-gradient" x="3.55" y="3.55" width="80.9" height="80.9" rx="12.45" fill="url(#zen-boosts-grad)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
|
||||||
|
<rect class="zen-boosts-border" width="88" height="88" rx="16" mask="url(#zen-boosts-mask)" fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="zen-boosts-brush" style="transform-origin: 0 0;" transform="translate(18.247 109.504) scale(1.1)">
|
||||||
|
<g class="zen-boosts-brush-anchor" transform="translate(-15 -70)">
|
||||||
|
<g class="zen-boosts-brush-tip-translate" transform="translate(27.307 3.73)">
|
||||||
|
<path class="zen-boosts-bg" d="M0 28 6 14 12 0 44 34 26 54Z" fill="context-fill" fill-opacity="1"/>
|
||||||
|
<path class="zen-boosts-gradient" d="M0 28 6 14 12 0 44 34 26 54Z" fill="url(#zen-boosts-grad)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
|
||||||
|
</g>
|
||||||
|
<g class="zen-boosts-brush-silhouette-fills">
|
||||||
|
<path class="zen-boosts-bg" fill="context-fill" fill-opacity="1" d="M0 69.826C-0.023 66.459 1.467 63.29 4.469 60.318 5.501 59.296 6.814 58.264 8.409 57.219 10.027 56.174 11.717 55.176 13.476 54.154 15.235 53.132 16.877 52.158 18.472 51.229L22.377 48.617 15.024 41.373C13.546 39.91 12.795 38.354 12.772 36.706 12.772 35.034 13.5 33.479 14.954 32.04L19.563 27.478C21.017 26.039 22.577 25.33 24.242 25.353 26.219 25.381 26.531 25.828 28.992 27.547L56.964 55.303C58.465 56.766 59.215 58.322 59.215 59.97 59.238 61.595 58.535 63.139 57.104 64.602L52.46 69.199C51.029 70.615 49.47 71.311 47.781 71.288 46.092 71.288 44.52 70.557 43.066 69.094L35.748 61.816C34.904 62.814 34.012 64.091 33.074 65.647 32.136 67.203 31.15 68.862 30.118 70.627 29.109 72.392 28.078 74.063 27.022 75.642 25.99 77.244 24.946 78.555 23.89 79.577 20.888 82.549 17.686 84.023 14.285 84 10.884 83.977 7.658 82.444 4.609 79.403 1.56 76.385 0.023 73.193 0 69.826ZM56.257 54.603L54.309 52.669 68.012 38.552C68.669 37.902 68.997 37.182 68.997 36.393 68.997 35.604 68.633 34.849 67.906 34.129L41.764 8.289C41.412 7.941 41.048 7.754 40.673 7.731 40.321 7.708 39.993 7.825 39.688 8.08 39.407 8.312 39.196 8.695 39.055 9.229 38.211 12.294 37.495 14.917 36.909 17.099 36.323 19.281 35.712 21.244 35.079 22.985 34.446 24.726 33.636 26.444 32.651 28.139 31.689 29.811 31.369 29.906 31.369 29.906L28.992 27.547 26.531 25.828C27.258 24.69 28.147 22.962 28.64 21.871 29.133 20.757 29.578 19.514 29.977 18.144 30.399 16.751 30.845 15.079 31.314 13.129 31.783 11.156 32.358 8.718 33.038 5.816 33.39 4.307 34.023 3.088 34.938 2.159 35.853 1.207 36.909 0.569 38.105 0.244 39.325-0.081 40.556-0.081 41.799 0.244 43.042 0.546 44.168 1.184 45.177 2.159L72.832 29.567C74.92 31.657 75.975 33.85 75.998 36.149 76.045 38.447 75.049 40.607 73.008 42.627L58.083 56.603 56.257 54.603Z"/>
|
||||||
|
<path class="zen-boosts-gradient" fill="url(#zen-boosts-grad)" style="mix-blend-mode: overlay; opacity: 0.1;" d="M0 69.826C-0.023 66.459 1.467 63.29 4.469 60.318 5.501 59.296 6.814 58.264 8.409 57.219 10.027 56.174 11.717 55.176 13.476 54.154 15.235 53.132 16.877 52.158 18.472 51.229L22.377 48.617 15.024 41.373C13.546 39.91 12.795 38.354 12.772 36.706 12.772 35.034 13.5 33.479 14.954 32.04L19.563 27.478C21.017 26.039 22.577 25.33 24.242 25.353 26.219 25.381 26.531 25.828 28.992 27.547L56.964 55.303C58.465 56.766 59.215 58.322 59.215 59.97 59.238 61.595 58.535 63.139 57.104 64.602L52.46 69.199C51.029 70.615 49.47 71.311 47.781 71.288 46.092 71.288 44.52 70.557 43.066 69.094L35.748 61.816C34.904 62.814 34.012 64.091 33.074 65.647 32.136 67.203 31.15 68.862 30.118 70.627 29.109 72.392 28.078 74.063 27.022 75.642 25.99 77.244 24.946 78.555 23.89 79.577 20.888 82.549 17.686 84.023 14.285 84 10.884 83.977 7.658 82.444 4.609 79.403 1.56 76.385 0.023 73.193 0 69.826ZM56.257 54.603L54.309 52.669 68.012 38.552C68.669 37.902 68.997 37.182 68.997 36.393 68.997 35.604 68.633 34.849 67.906 34.129L41.764 8.289C41.412 7.941 41.048 7.754 40.673 7.731 40.321 7.708 39.993 7.825 39.688 8.08 39.407 8.312 39.196 8.695 39.055 9.229 38.211 12.294 37.495 14.917 36.909 17.099 36.323 19.281 35.712 21.244 35.079 22.985 34.446 24.726 33.636 26.444 32.651 28.139 31.689 29.811 31.369 29.906 31.369 29.906L28.992 27.547 26.531 25.828C27.258 24.69 28.147 22.962 28.64 21.871 29.133 20.757 29.578 19.514 29.977 18.144 30.399 16.751 30.845 15.079 31.314 13.129 31.783 11.156 32.358 8.718 33.038 5.816 33.39 4.307 34.023 3.088 34.938 2.159 35.853 1.207 36.909 0.569 38.105 0.244 39.325-0.081 40.556-0.081 41.799 0.244 43.042 0.546 44.168 1.184 45.177 2.159L72.832 29.567C74.92 31.657 75.975 33.85 75.998 36.149 76.045 38.447 75.049 40.607 73.008 42.627L58.083 56.603 56.257 54.603Z"/>
|
||||||
|
</g>
|
||||||
|
<path class="zen-boosts-border" fill-rule="evenodd" fill="context-stroke" d="M0 69.826C-0.023 66.459 1.467 63.29 4.469 60.318 5.501 59.296 6.814 58.264 8.409 57.219 10.027 56.174 11.717 55.176 13.476 54.154 15.235 53.132 16.877 52.158 18.472 51.229L22.377 48.617 15.024 41.373C13.546 39.91 12.795 38.354 12.772 36.706 12.772 35.034 13.5 33.479 14.954 32.04L19.563 27.478C21.017 26.039 22.577 25.33 24.242 25.353 26.219 25.381 26.531 25.828 28.992 27.547L56.964 55.303C58.465 56.766 59.215 58.322 59.215 59.97 59.238 61.595 58.535 63.139 57.104 64.602L52.46 69.199C51.029 70.615 49.47 71.311 47.781 71.288 46.092 71.288 44.52 70.557 43.066 69.094L35.748 61.816C34.904 62.814 34.012 64.091 33.074 65.647 32.136 67.203 31.15 68.862 30.118 70.627 29.109 72.392 28.078 74.063 27.022 75.642 25.99 77.244 24.946 78.555 23.89 79.577 20.888 82.549 17.686 84.023 14.285 84 10.884 83.977 7.658 82.444 4.609 79.403 1.56 76.385 0.023 73.193 0 69.826ZM20.618 38.308L29.133 46.701C29.86 47.398 30.188 48.187 30.118 49.069 30.048 49.951 29.625 50.799 28.851 51.612 28.171 52.309 27.034 53.11 25.439 54.015 23.844 54.92 22.037 55.931 20.02 57.045 18.026 58.159 16.044 59.355 14.074 60.632 12.104 61.909 10.427 63.232 9.043 64.602 7.425 66.181 6.615 67.887 6.615 69.721 6.638 71.555 7.471 73.297 9.113 74.945 10.778 76.57 12.525 77.383 14.355 77.383 16.208 77.406 17.945 76.617 19.563 75.015 20.97 73.645 22.307 71.985 23.574 70.035 24.864 68.085 26.072 66.122 27.198 64.149 28.324 62.152 29.344 60.377 30.259 58.821 31.197 57.242 32.007 56.116 32.687 55.443 33.508 54.654 34.364 54.235 35.255 54.189 36.146 54.119 36.956 54.444 37.683 55.164L46.127 63.557C46.971 64.416 47.804 64.404 48.625 63.522L51.299 60.875C52.12 60.039 52.132 59.216 51.334 58.403L25.79 33.154C25.415 32.759 25.016 32.574 24.594 32.597 24.172 32.597 23.762 32.794 23.363 33.189L20.618 35.836C19.774 36.649 19.774 37.472 20.618 38.308ZM11.294 72.855C10.473 72.042 10.063 71.068 10.063 69.93 10.063 68.792 10.473 67.818 11.294 67.005 12.115 66.192 13.101 65.786 14.25 65.786 15.399 65.786 16.384 66.192 17.205 67.005 18.026 67.818 18.437 68.792 18.437 69.93 18.437 71.068 18.026 72.042 17.205 72.855 16.384 73.668 15.399 74.074 14.25 74.074 13.101 74.074 12.115 73.668 11.294 72.855ZM56.257 54.603L54.309 52.669 68.012 38.552C68.669 37.902 68.997 37.182 68.997 36.393 68.997 35.604 68.633 34.849 67.906 34.129L41.764 8.289C41.412 7.941 41.048 7.754 40.673 7.731 40.321 7.708 39.993 7.825 39.688 8.08 39.407 8.312 39.196 8.695 39.055 9.229 38.211 12.294 37.495 14.917 36.909 17.099 36.323 19.281 35.712 21.244 35.079 22.985 34.446 24.726 33.636 26.444 32.651 28.139 31.689 29.811 31.369 29.906 31.369 29.906L28.992 27.547 26.531 25.828C27.258 24.69 28.147 22.962 28.64 21.871 29.133 20.757 29.578 19.514 29.977 18.144 30.399 16.751 30.845 15.079 31.314 13.129 31.783 11.156 32.358 8.718 33.038 5.816 33.39 4.307 34.023 3.088 34.938 2.159 35.853 1.207 36.909 0.569 38.105 0.244 39.325-0.081 40.556-0.081 41.799 0.244 43.042 0.546 44.168 1.184 45.177 2.159L72.832 29.567C74.92 31.657 75.975 33.85 75.998 36.149 76.045 38.447 75.049 40.607 73.008 42.627L58.083 56.603 56.257 54.603ZM50.455 37.786C52.425 35.836 54.138 33.7 55.592 31.378 57.07 29.056 57.973 26.352 58.301 23.264L66.041 30.89C65.15 32.004 63.93 33.142 62.382 34.303 60.834 35.441 59.216 36.463 57.527 37.368 55.862 38.25 54.36 38.878 53.023 39.249 51.709 39.62 50.818 39.573 50.349 39.109 49.927 38.714 49.962 38.274 50.455 37.786Z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="zen-boosts-star-small" style="transform-origin: 0 0;" transform="translate(68.002 37.075) rotate(2.014)">
|
||||||
|
<g class="zen-boosts-star-small-anchor" transform="translate(-8 -8)">
|
||||||
|
<path class="zen-boosts-border" d="M8 0C8 4.418 4.418 8 0 8 4.418 8 8 11.582 8 16 8 11.582 11.582 8 16 8 11.582 8 8 4.418 8 0Z" fill="context-stroke" stroke="context-stroke" stroke-width="3" stroke-linejoin="round"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="zen-boosts-star-large" style="transform-origin: 0 0;" transform="translate(85.002 50.174) rotate(2.014)">
|
||||||
|
<g class="zen-boosts-star-large-anchor" transform="translate(-12 -12)">
|
||||||
|
<path class="zen-boosts-border" d="M12 0C12 6.627 6.627 12 0 12 6.627 12 12 17.373 12 24 12 17.373 17.373 12 24 12 17.373 12 12 6.627 12 0Z" fill="context-stroke" stroke="context-stroke" stroke-width="3" stroke-linejoin="round"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 400 KiB |
@@ -0,0 +1,32 @@
|
|||||||
|
#filter dumbComments emptyLines substitution
|
||||||
|
# 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/.
|
||||||
|
<svg class="zen-boosts-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<defs>
|
||||||
|
<mask id="zen-boosts-mask" maskContentUnits="userSpaceOnUse">
|
||||||
|
<rect x="-100" y="-100" width="300" height="300" fill="#fff"/>
|
||||||
|
<path fill="#000" stroke="#000" stroke-width="8" stroke-linejoin="round" d="M-3.79 54.121C-5.31 51.635-6.984 48.884-7.082 42.132L-7.073 42.091-7.063 42.051C-6.2 38.573-3.904 36.054-1.1 34.382L4.474 31.059C6.968 29.572 9.896 28.739 13.003 29.233 13.558 28.514 14.137 27.648 14.736 26.617L14.752 26.589 14.769 26.561C15.438 25.438 16.22 24.032 17.105 22.317 18.032 20.521 19.176 18.3 20.531 15.65 21.63 13.5 23.221 11.59 25.405 10.221 27.368 8.99 29.589 8.271 31.984 8.218L32.013 8.218C34.325 8.178 36.528 8.749 38.557 9.821 40.713 10.96 42.401 12.627 43.642 14.615L43.662 14.646 63.922 47.997C66.006 51.466 67.049 55.422 66.104 59.547 65.148 63.723 62.394 66.785 58.898 68.869L44.274 77.586C44.222 77.953 44.148 78.323 44.06 78.696 43.24 82.158 40.963 84.66 38.246 86.34L38.205 86.365 32.548 89.738C29.738 91.413 26.42 92.18 22.922 91.299 18.565 90.201 14.485 87.919 10.34 86.196 10.34 86.196 8.779 87.737 7.305 89.123 5.699 90.632 4.021 91.927 2.291 92.956-2.345 95.712-7.442 96.912-12.65 95.581-17.868 94.248-21.776 90.71-24.597 86.068-27.411 81.439-28.702 76.368-27.456 71.195-26.206 66.005-22.739 62.101-18.096 59.333-16.417 58.332-14.507 57.488-12.438 56.763L-12.4 56.75C-10.473 56.089-8.488 55.472-6.445 54.899-5.537 54.635-4.652 54.375-3.79 54.121Z"/>
|
||||||
|
</mask>
|
||||||
|
</defs>
|
||||||
|
<g transform="translate(61.889 63.143) scale(1.1) rotate(-15)">
|
||||||
|
<g transform="translate(-44 -44)">
|
||||||
|
<rect width="88" height="88" rx="16" mask="url(#zen-boosts-mask)" fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g transform="translate(18.247 109.504) scale(1.1)">
|
||||||
|
<g transform="translate(-15 -70)">
|
||||||
|
<path fill-rule="evenodd" fill="context-stroke" d="M0 69.826C-0.023 66.459 1.467 63.29 4.469 60.318 5.501 59.296 6.814 58.264 8.409 57.219 10.027 56.174 11.717 55.176 13.476 54.154 15.235 53.132 16.877 52.158 18.472 51.229L22.377 48.617 15.024 41.373C13.546 39.91 12.795 38.354 12.772 36.706 12.772 35.034 13.5 33.479 14.954 32.04L19.563 27.478C21.017 26.039 22.577 25.33 24.242 25.353 26.219 25.381 26.531 25.828 28.992 27.547L56.964 55.303C58.465 56.766 59.215 58.322 59.215 59.97 59.238 61.595 58.535 63.139 57.104 64.602L52.46 69.199C51.029 70.615 49.47 71.311 47.781 71.288 46.092 71.288 44.52 70.557 43.066 69.094L35.748 61.816C34.904 62.814 34.012 64.091 33.074 65.647 32.136 67.203 31.15 68.862 30.118 70.627 29.109 72.392 28.078 74.063 27.022 75.642 25.99 77.244 24.946 78.555 23.89 79.577 20.888 82.549 17.686 84.023 14.285 84 10.884 83.977 7.658 82.444 4.609 79.403 1.56 76.385 0.023 73.193 0 69.826ZM20.618 38.308L29.133 46.701C29.86 47.398 30.188 48.187 30.118 49.069 30.048 49.951 29.625 50.799 28.851 51.612 28.171 52.309 27.034 53.11 25.439 54.015 23.844 54.92 22.037 55.931 20.02 57.045 18.026 58.159 16.044 59.355 14.074 60.632 12.104 61.909 10.427 63.232 9.043 64.602 7.425 66.181 6.615 67.887 6.615 69.721 6.638 71.555 7.471 73.297 9.113 74.945 10.778 76.57 12.525 77.383 14.355 77.383 16.208 77.406 17.945 76.617 19.563 75.015 20.97 73.645 22.307 71.985 23.574 70.035 24.864 68.085 26.072 66.122 27.198 64.149 28.324 62.152 29.344 60.377 30.259 58.821 31.197 57.242 32.007 56.116 32.687 55.443 33.508 54.654 34.364 54.235 35.255 54.189 36.146 54.119 36.956 54.444 37.683 55.164L46.127 63.557C46.971 64.416 47.804 64.404 48.625 63.522L51.299 60.875C52.12 60.039 52.132 59.216 51.334 58.403L25.79 33.154C25.415 32.759 25.016 32.574 24.594 32.597 24.172 32.597 23.762 32.794 23.363 33.189L20.618 35.836C19.774 36.649 19.774 37.472 20.618 38.308ZM11.294 72.855C10.473 72.042 10.063 71.068 10.063 69.93 10.063 68.792 10.473 67.818 11.294 67.005 12.115 66.192 13.101 65.786 14.25 65.786 15.399 65.786 16.384 66.192 17.205 67.005 18.026 67.818 18.437 68.792 18.437 69.93 18.437 71.068 18.026 72.042 17.205 72.855 16.384 73.668 15.399 74.074 14.25 74.074 13.101 74.074 12.115 73.668 11.294 72.855ZM56.257 54.603L54.309 52.669 68.012 38.552C68.669 37.902 68.997 37.182 68.997 36.393 68.997 35.604 68.633 34.849 67.906 34.129L41.764 8.289C41.412 7.941 41.048 7.754 40.673 7.731 40.321 7.708 39.993 7.825 39.688 8.08 39.407 8.312 39.196 8.695 39.055 9.229 38.211 12.294 37.495 14.917 36.909 17.099 36.323 19.281 35.712 21.244 35.079 22.985 34.446 24.726 33.636 26.444 32.651 28.139 31.689 29.811 31.369 29.906 31.369 29.906L28.992 27.547 26.531 25.828C27.258 24.69 28.147 22.962 28.64 21.871 29.133 20.757 29.578 19.514 29.977 18.144 30.399 16.751 30.845 15.079 31.314 13.129 31.783 11.156 32.358 8.718 33.038 5.816 33.39 4.307 34.023 3.088 34.938 2.159 35.853 1.207 36.909 0.569 38.105 0.244 39.325-0.081 40.556-0.081 41.799 0.244 43.042 0.546 44.168 1.184 45.177 2.159L72.832 29.567C74.92 31.657 75.975 33.85 75.998 36.149 76.045 38.447 75.049 40.607 73.008 42.627L58.083 56.603 56.257 54.603ZM50.455 37.786C52.425 35.836 54.138 33.7 55.592 31.378 57.07 29.056 57.973 26.352 58.301 23.264L66.041 30.89C65.15 32.004 63.93 33.142 62.382 34.303 60.834 35.441 59.216 36.463 57.527 37.368 55.862 38.25 54.36 38.878 53.023 39.249 51.709 39.62 50.818 39.573 50.349 39.109 49.927 38.714 49.962 38.274 50.455 37.786Z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g transform="translate(68.002 37.075) rotate(2.014)">
|
||||||
|
<g transform="translate(-8 -8)">
|
||||||
|
<path d="M8 0C8 4.418 4.418 8 0 8 4.418 8 8 11.582 8 16 8 11.582 11.582 8 16 8 11.582 8 8 4.418 8 0Z" fill="context-stroke" stroke="context-stroke" stroke-width="3" stroke-linejoin="round"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g transform="translate(85.002 50.174) rotate(2.014)">
|
||||||
|
<g transform="translate(-12 -12)">
|
||||||
|
<path d="M12 0C12 6.627 6.627 12 0 12 6.627 12 12 17.373 12 24 12 17.373 17.373 12 24 12 17.373 12 12 6.627 12 0Z" fill="context-stroke" stroke="context-stroke" stroke-width="3" stroke-linejoin="round"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
#filter dumbComments emptyLines substitution
|
||||||
|
# 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/.
|
||||||
|
<svg class="zen-downloads-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<style>
|
||||||
|
@keyframes zenDownloadsArrowBounce {
|
||||||
|
0% { transform: translateY(0px); d: path('M 64 45 L 64 83 M 50 69 L 64 83 L 78 69'); animation-timing-function: cubic-bezier(0.33, 0, 0.7, 1.28); }
|
||||||
|
31.43% { transform: translateY(10px); d: path('M 64 57 L 64 83 M 50 69 L 64 83 L 78 69'); animation-timing-function: cubic-bezier(0.44, 0.2, 0.44, 0.98); }
|
||||||
|
54.29% { transform: translateY(-10.83px); d: path('M 64 45 L 64 83 M 50 69 L 64 83 L 78 69'); animation-timing-function: cubic-bezier(0.45, -0.03, 0.83, 0.9); }
|
||||||
|
85.71% { transform: translateY(0.66px); d: path('M 64 45 L 64 83 M 50 69 L 64 83 L 78 69'); animation-timing-function: cubic-bezier(0.17, -0.98, 0.83, 0.83); }
|
||||||
|
100% { transform: translateY(0px); d: path('M 64 45 L 64 83 M 50 69 L 64 83 L 78 69'); }
|
||||||
|
}
|
||||||
|
@keyframes zenDownloadsCircleBounce {
|
||||||
|
0% { transform: translateY(0px); animation-timing-function: cubic-bezier(0.33, 0, 0.71, 2.31); }
|
||||||
|
31.43% { transform: translateY(2.5px); animation-timing-function: cubic-bezier(0.23, 0.15, 0.36, 0.97); }
|
||||||
|
54.29% { transform: translateY(-11.46px); animation-timing-function: cubic-bezier(0.48, -0.04, 0.83, 0.89); }
|
||||||
|
85.71% { transform: translateY(0.85px); animation-timing-function: cubic-bezier(0.17, -0.70, 0.83, 0.83); }
|
||||||
|
100% { transform: translateY(0px); }
|
||||||
|
}
|
||||||
|
.zen-downloads-circle-translate { animation: zenDownloadsCircleBounce 0.583s forwards; }
|
||||||
|
.zen-downloads-arrow { animation: zenDownloadsArrowBounce 0.583s forwards; }
|
||||||
|
</style>
|
||||||
|
<defs>
|
||||||
|
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front">
|
||||||
|
<stop offset="0" stop-color="context-fill"/>
|
||||||
|
<stop offset="1" stop-color="context-stroke"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g class="zen-downloads-circle-translate" style="transform-origin: 64px 64px;">
|
||||||
|
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
|
||||||
|
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
|
||||||
|
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
</g>
|
||||||
|
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 39 KiB |
@@ -0,0 +1,8 @@
|
|||||||
|
#filter dumbComments emptyLines substitution
|
||||||
|
# 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/.
|
||||||
|
<svg class="zen-downloads-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<circle cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
<path d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
#filter dumbComments emptyLines substitution
|
||||||
|
# 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/.
|
||||||
|
<svg class="zen-history-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<style>
|
||||||
|
@keyframes zenHistoryBodyTranslate {
|
||||||
|
0%, 31.43% { transform: translate(63.977px, 79.047px); animation-timing-function: cubic-bezier(0.16, 0.41, 0.34, 1); }
|
||||||
|
60% { transform: translate(63.977px, 63.253px); animation-timing-function: cubic-bezier(0.33, 0, 0.62, 0.55); }
|
||||||
|
77.14%, 100% { transform: translate(63.977px, 79.047px); }
|
||||||
|
}
|
||||||
|
@keyframes zenHistoryLid {
|
||||||
|
0% { transform: translate(63.977px, 37.148px) rotate(0deg) translate(-46.852px, -12.82px); animation-timing-function: cubic-bezier(0.21, 0, 0.56, 1); }
|
||||||
|
31.43% { transform: translate(63.977px, 51.609px) rotate(0deg) translate(-46.852px, -12.82px); animation-timing-function: cubic-bezier(0.38, 0, 0.55, 1); }
|
||||||
|
62.86% { transform: translate(63.977px, 17.08px) rotate(-6.93deg) translate(-46.852px, -12.82px); animation-timing-function: cubic-bezier(0.43, 0.14, 0.38, 1); }
|
||||||
|
82.86% { transform: translate(63.977px, 23.397px) rotate(4.2deg) translate(-46.852px, -12.82px); animation-timing-function: cubic-bezier(0.41, 0, 0.49, 1); }
|
||||||
|
100% { transform: translate(63.977px, 37.148px) rotate(0deg) translate(-46.852px, -12.82px); }
|
||||||
|
}
|
||||||
|
@keyframes zenHistoryDashTranslate {
|
||||||
|
0% { transform: translate(64px, 65px) scale(0.9, 1); animation-timing-function: cubic-bezier(0.33, 0, 0.7, 1.28); }
|
||||||
|
31.43% { transform: translate(64px, 79.461px) scale(0.8, 1); animation-timing-function: cubic-bezier(0.44, 0.2, 0.44, 0.98); }
|
||||||
|
54.29% { transform: translate(64px, 61.033px) scale(0.86, 1); animation-timing-function: cubic-bezier(0.45, -0.03, 0.83, 0.9); }
|
||||||
|
85.71% { transform: translate(64px, 65.66px) scale(0.9, 1); animation-timing-function: cubic-bezier(0.22, -0.9, 0.25, 1.25); }
|
||||||
|
100% { transform: translate(64px, 65px) scale(0.9, 1); }
|
||||||
|
}
|
||||||
|
.zen-history-body-translate { animation: zenHistoryBodyTranslate 0.583s forwards; }
|
||||||
|
.zen-history-lid { animation: zenHistoryLid 0.583s forwards; }
|
||||||
|
.zen-history-dash-translate { animation: zenHistoryDashTranslate 0.583s forwards; }
|
||||||
|
</style>
|
||||||
|
<defs>
|
||||||
|
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="0" x2="64" y2="128" id="zen-history-grad-front">
|
||||||
|
<stop offset="0" stop-color="context-fill"/>
|
||||||
|
<stop offset="1" stop-color="context-stroke"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g class="zen-history-body-translate" style="transform-origin: 0 0; transform: translate(63.977px, 79.047px);">
|
||||||
|
<g transform="translate(-39.867, -30.328)">
|
||||||
|
<path class="zen-history-bg"
|
||||||
|
d="M 3.55 0 L 76.184 0 L 76.184 46.856 A 10.25 10.25 0 0 1 65.934 57.106 L 13.8 57.106 A 10.25 10.25 0 0 1 3.55 46.856 Z"
|
||||||
|
fill="context-fill" fill-opacity="1"/>
|
||||||
|
<path class="zen-history-gradient"
|
||||||
|
d="M 3.55 0 L 76.184 0 L 76.184 46.856 A 10.25 10.25 0 0 1 65.934 57.106 L 13.8 57.106 A 10.25 10.25 0 0 1 3.55 46.856 Z"
|
||||||
|
fill="url(#zen-history-grad-front)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
|
||||||
|
<path class="zen-history-border"
|
||||||
|
d="M 3.55 0 L 76.184 0 L 76.184 46.856 A 10.25 10.25 0 0 1 65.934 57.106 L 13.8 57.106 A 10.25 10.25 0 0 1 3.55 46.856 Z"
|
||||||
|
fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="zen-history-lid" style="transform-origin: 0 0; transform: translate(63.977px, 37.148px) rotate(0deg) translate(-46.852px, -12.82px);">
|
||||||
|
<rect class="zen-history-bg" x="3.55" y="3.55" width="86.603" height="18.541" rx="6.05"
|
||||||
|
fill="context-fill" fill-opacity="1"/>
|
||||||
|
<rect class="zen-history-gradient" x="3.55" y="3.55" width="86.603" height="18.541" rx="6.05"
|
||||||
|
fill="url(#zen-history-grad-front)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
|
||||||
|
<rect class="zen-history-border" x="3.55" y="3.55" width="86.603" height="18.541" rx="6.05"
|
||||||
|
fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
</g>
|
||||||
|
<g class="zen-history-dash-translate" style="transform-origin: 0 0; transform: translate(64px, 65px) scale(0.9, 1);">
|
||||||
|
<path class="zen-history-dash-path" fill="none"
|
||||||
|
d="M -16 0 L 16 0"
|
||||||
|
stroke="context-stroke" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 79 KiB |
@@ -0,0 +1,14 @@
|
|||||||
|
#filter dumbComments emptyLines substitution
|
||||||
|
# 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/.
|
||||||
|
<svg class="zen-history-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g transform="translate(63.977, 79.047)">
|
||||||
|
<path d="M -36.317 -30.328 L 36.317 -30.328 L 36.317 16.528 A 10.25 10.25 0 0 1 26.067 26.778 L -26.067 26.778 A 10.25 10.25 0 0 1 -36.317 16.528 Z"
|
||||||
|
fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
</g>
|
||||||
|
<g transform="translate(17.125, 24.328)">
|
||||||
|
<rect x="3.55" y="3.55" width="86.603" height="18.541" rx="6.05" fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
</g>
|
||||||
|
<path d="M 49.6 65 L 78.4 65" fill="none" stroke="context-stroke" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
#filter dumbComments emptyLines substitution
|
||||||
|
# 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/.
|
||||||
|
<svg class="zen-media-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<style>
|
||||||
|
@keyframes zenMediaBackBounce {
|
||||||
|
0% { transform: translate(54.799px, 57.743px) rotate(-7deg) translate(-46.27px, -36.445px); animation-timing-function: cubic-bezier(0.33, 0, 0.67, 1); }
|
||||||
|
24.41% { transform: translate(57.299px, 65.243px) rotate(3deg) translate(-46.27px, -36.445px); animation-timing-function: cubic-bezier(0.3, 0, 0.8, 1); }
|
||||||
|
43.67% { transform: translate(56.16px, 47.803px) rotate(-18.58deg) translate(-46.27px, -36.445px); animation-timing-function: cubic-bezier(0.16, 0, 0.8, 1); }
|
||||||
|
78.21% { transform: translate(55.25px, 54.3px) rotate(-3.2deg) translate(-46.27px, -36.445px); animation-timing-function: cubic-bezier(0.65, 0, 0.35, 1); }
|
||||||
|
100% { transform: translate(54.799px, 57.743px) rotate(-7deg) translate(-46.27px, -36.445px); }
|
||||||
|
}
|
||||||
|
@keyframes zenMediaFrontBounce {
|
||||||
|
0% { transform: translate(78.827px, 77.737px) rotate(0deg) translate(-46.27px, -36.445px); animation-timing-function: cubic-bezier(0.33, 0, 0.67, 1); }
|
||||||
|
24.41% { transform: translate(78.827px, 80.737px) rotate(0deg) translate(-46.27px, -36.445px); animation-timing-function: cubic-bezier(0.4, 0, 0.64, 1); }
|
||||||
|
55.88% { transform: translate(75.827px, 62.61px) rotate(9.32deg) translate(-46.27px, -36.445px); animation-timing-function: cubic-bezier(0.25, 0, 0.75, 1); }
|
||||||
|
88.24% { transform: translate(78.827px, 77.737px) rotate(0deg) translate(-46.27px, -36.445px); animation-timing-function: linear; }
|
||||||
|
100% { transform: translate(78.827px, 77.737px) rotate(0deg) translate(-46.27px, -36.445px); }
|
||||||
|
}
|
||||||
|
@keyframes zenMediaSunBounce {
|
||||||
|
0% { transform: translate(64.76px, 67.886px) translate(-9.914px, -9.984px); animation-timing-function: cubic-bezier(0.32, 0, 0.67, 1); }
|
||||||
|
24.41% { transform: translate(64.76px, 73.606px) translate(-9.914px, -9.984px); animation-timing-function: linear; }
|
||||||
|
35.29% { transform: translate(64.76px, 73.606px) translate(-9.914px, -9.984px); animation-timing-function: cubic-bezier(0.35, 0, 0.76, 0.72); }
|
||||||
|
55.88% { transform: translate(61.737px, 51.974px) translate(-9.914px, -9.984px); animation-timing-function: cubic-bezier(0.21, -0.71, 0.45, 1); }
|
||||||
|
100% { transform: translate(64.76px, 67.886px) translate(-9.914px, -9.984px); }
|
||||||
|
}
|
||||||
|
.zen-media-back-card { animation: zenMediaBackBounce 0.583s forwards; }
|
||||||
|
.zen-media-front-card { animation: zenMediaFrontBounce 0.583s forwards; }
|
||||||
|
.zen-media-sun { animation: zenMediaSunBounce 0.583s forwards; }
|
||||||
|
</style>
|
||||||
|
<defs>
|
||||||
|
<mask id="zen-media-mask">
|
||||||
|
<rect x="-10" y="-10" width="148" height="148" fill="white"/>
|
||||||
|
<g class="zen-media-front-card-mask" transform="translate(78.827, 77.737) translate(-46.27, -36.445)">
|
||||||
|
<rect x="0" y="0" width="92.539" height="72.891" rx="12.812" fill="black"/>
|
||||||
|
</g>
|
||||||
|
</mask>
|
||||||
|
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="0" x2="64" y2="128" id="zen-media-grad-back">
|
||||||
|
<stop offset="0" stop-color="context-fill"/>
|
||||||
|
<stop offset="1" stop-color="context-stroke"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="0" x2="64" y2="128" id="zen-media-grad-front">
|
||||||
|
<stop offset="0" stop-color="context-fill"/>
|
||||||
|
<stop offset="1" stop-color="context-stroke"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g class="zen-media-back-wrapper" mask="url(#zen-media-mask)">
|
||||||
|
<g class="zen-media-back-card" transform="translate(54.799, 57.743) rotate(-7) translate(-46.27, -36.445)">
|
||||||
|
<rect class="zen-media-bg" x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262"
|
||||||
|
fill="context-fill" fill-opacity="1"/>
|
||||||
|
<rect class="zen-media-gradient" x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262"
|
||||||
|
fill="url(#zen-media-grad-back)" fill-opacity="1" style="mix-blend-mode: overlay; opacity: 0.1;"/>
|
||||||
|
<rect class="zen-media-border" x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262"
|
||||||
|
fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="zen-media-front-card" transform="translate(78.827, 77.737) translate(-46.27, -36.445)">
|
||||||
|
<rect class="zen-media-bg" x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262"
|
||||||
|
fill="context-fill" fill-opacity="1"/>
|
||||||
|
<rect class="zen-media-gradient" x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262"
|
||||||
|
fill="url(#zen-media-grad-front)" fill-opacity="1" style="mix-blend-mode: overlay; opacity: 0.1;"/>
|
||||||
|
<g class="zen-media-mountain" transform="translate(0.289, 32.609)">
|
||||||
|
<path class="zen-media-mountain-path" d="M7.432 21.147 L17.865 12.11 C19.665 10.596 21.373 9.862 23.173 9.862 C25.158 9.862 27.005 10.596 28.805 12.202 L36.191 18.853 L54.84 2.431 C56.779 0.734 58.81 0 61.072 0 C63.334 0 65.55 0.826 67.35 2.477 L84.568 18.67 L92 25.78 C92 35.23 87.153 40 77.551 40 L14.495 40 C4.801 40 0 35.275 0 25.78 Z"
|
||||||
|
fill="context-stroke"/>
|
||||||
|
</g>
|
||||||
|
<rect class="zen-media-border" x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262"
|
||||||
|
fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
</g>
|
||||||
|
<g class="zen-media-sun" transform="translate(64.76, 67.886) translate(-9.914, -9.984)">
|
||||||
|
<circle class="zen-media-sun-path" cx="9.914" cy="9.984" r="9.914"
|
||||||
|
fill="context-stroke"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 108 KiB |
@@ -0,0 +1,22 @@
|
|||||||
|
#filter dumbComments emptyLines substitution
|
||||||
|
# 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/.
|
||||||
|
<svg class="zen-media-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<defs>
|
||||||
|
<mask id="zen-media-mask-inactive">
|
||||||
|
<rect x="-10" y="-10" width="148" height="148" fill="white"/>
|
||||||
|
<g transform="translate(78.827, 77.737) translate(-46.27, -36.445)">
|
||||||
|
<rect x="0" y="0" width="92.539" height="72.891" rx="12.812" fill="black"/>
|
||||||
|
</g>
|
||||||
|
</mask>
|
||||||
|
</defs>
|
||||||
|
<g mask="url(#zen-media-mask-inactive)">
|
||||||
|
<g transform="translate(54.799, 57.743) rotate(-7) translate(-46.27, -36.445)">
|
||||||
|
<rect x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262" fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g transform="translate(78.827, 77.737) translate(-46.27, -36.445)">
|
||||||
|
<rect x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262" fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
#filter dumbComments emptyLines substitution
|
||||||
|
# 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/.
|
||||||
|
<svg class="zen-spaces-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<style>
|
||||||
|
@keyframes zenSpacesBackBounce {
|
||||||
|
0% { transform: translate(51.28px, 61.69px) rotate(-17.5deg) translate(-35.022px, -44.68px); animation-timing-function: cubic-bezier(0.21, 0, 0.56, 1); }
|
||||||
|
34.28% { transform: translate(56.28px, 72.19px) rotate(6deg) translate(-35.022px, -44.68px); animation-timing-function: cubic-bezier(0.38, 0, 0.55, 1); }
|
||||||
|
62.86% { transform: translate(51.28px, 55.52px) rotate(-27.83deg) translate(-35.022px, -44.68px); animation-timing-function: cubic-bezier(0.73, 0, 0.63, 1); }
|
||||||
|
100% { transform: translate(51.28px, 61.69px) rotate(-17.5deg) translate(-35.022px, -44.68px); }
|
||||||
|
}
|
||||||
|
@keyframes zenSpacesFrontBounce {
|
||||||
|
0% { transform: translate(77.02px, 75.93px) rotate(0deg) translate(-35.022px, -44.68px); animation-timing-function: cubic-bezier(0.21, 0, 0.56, 1); }
|
||||||
|
31.43% { transform: translate(77.02px, 78.18px) rotate(-5deg) translate(-35.022px, -44.68px); animation-timing-function: cubic-bezier(0.38, 0, 0.55, 1); }
|
||||||
|
54.28% { transform: translate(77.02px, 55.71px) rotate(28.96deg) translate(-35.022px, -44.68px); animation-timing-function: cubic-bezier(0.73, 0, 0.63, 1); }
|
||||||
|
100% { transform: translate(77.02px, 75.93px) rotate(0deg) translate(-35.022px, -44.68px); }
|
||||||
|
}
|
||||||
|
.zen-spaces-back-card { animation: zenSpacesBackBounce 0.583s forwards; }
|
||||||
|
.zen-spaces-front-card { animation: zenSpacesFrontBounce 0.583s forwards; }
|
||||||
|
</style>
|
||||||
|
<defs>
|
||||||
|
<mask id="zen-spaces-mask">
|
||||||
|
<rect x="-10" y="-10" width="148" height="148" fill="white"/>
|
||||||
|
<g class="zen-spaces-front-card" style="transform-origin: 0 0; transform: translate(77.02px, 75.93px) rotate(0deg) translate(-35.022px, -44.68px);">
|
||||||
|
<rect x="0" y="0" width="70.04" height="89.36" rx="14" fill="black"/>
|
||||||
|
</g>
|
||||||
|
</mask>
|
||||||
|
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-spaces-grad-back">
|
||||||
|
<stop offset="0" stop-color="context-fill"/>
|
||||||
|
<stop offset="1" stop-color="context-stroke"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-spaces-grad-front">
|
||||||
|
<stop offset="0" stop-color="context-fill"/>
|
||||||
|
<stop offset="1" stop-color="context-stroke"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g class="zen-spaces-back-wrapper" mask="url(#zen-spaces-mask)">
|
||||||
|
<g class="zen-spaces-back-card" style="transform-origin: 0 0; transform: translate(51.28px, 61.69px) rotate(-17.5deg) translate(-35.022px, -44.68px);">
|
||||||
|
<rect class="zen-spaces-bg" x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45"
|
||||||
|
fill="context-fill" fill-opacity="1"/>
|
||||||
|
<rect class="zen-spaces-gradient" x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45"
|
||||||
|
fill="url(#zen-spaces-grad-back)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
|
||||||
|
<rect class="zen-spaces-border" x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45"
|
||||||
|
fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="zen-spaces-front-card" style="transform-origin: 0 0; transform: translate(77.02px, 75.93px) rotate(0deg) translate(-35.022px, -44.68px);">
|
||||||
|
<rect class="zen-spaces-bg" x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45"
|
||||||
|
fill="context-fill" fill-opacity="1"/>
|
||||||
|
<rect class="zen-spaces-gradient" x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45"
|
||||||
|
fill="url(#zen-spaces-grad-front)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
|
||||||
|
<rect class="zen-spaces-border" x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45"
|
||||||
|
fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 83 KiB |
@@ -0,0 +1,22 @@
|
|||||||
|
#filter dumbComments emptyLines substitution
|
||||||
|
# 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/.
|
||||||
|
<svg class="zen-spaces-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<defs>
|
||||||
|
<mask id="zen-spaces-mask-inactive">
|
||||||
|
<rect x="-10" y="-10" width="148" height="148" fill="white"/>
|
||||||
|
<g style="transform-origin: 0 0; transform: translate(77.02px, 75.93px) translate(-35.022px, -44.68px);">
|
||||||
|
<rect x="0" y="0" width="70.04" height="89.36" rx="14" fill="black"/>
|
||||||
|
</g>
|
||||||
|
</mask>
|
||||||
|
</defs>
|
||||||
|
<g mask="url(#zen-spaces-mask-inactive)">
|
||||||
|
<g style="transform-origin: 0 0; transform: translate(51.28px, 61.69px) rotate(-17.5deg) translate(-35.022px, -44.68px);">
|
||||||
|
<rect x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45" fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g style="transform-origin: 0 0; transform: translate(77.02px, 75.93px) translate(-35.022px, -44.68px);">
|
||||||
|
<rect x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45" fill="none" stroke="context-stroke" stroke-width="7.1"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
@@ -2,8 +2,10 @@
|
|||||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
# 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
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="context-fill" fill-opacity="context-fill-opacity" class="zen-library-icon" viewBox="4 4 18 18"><style>@property --zen-triangle-anim { syntax: '<number>'; initial-value: 1; inherits: false; }
|
<svg class="zen-library-icon" width="18" height="18" viewBox="4 4 18 18" fill="context-fill" fill-opacity="context-fill-opacity" xmlns="http://www.w3.org/2000/svg">
|
||||||
@property --zen-circle-anim { syntax: '<number>'; initial-value: 1; inherits: false; }
|
<style>
|
||||||
|
@property --zen-triangle-anim { syntax: '<number>'; initial-value: 1; inherits: false; }
|
||||||
|
@property --zen-circle-anim { syntax: '<number>'; initial-value: 1; inherits: false; }
|
||||||
@keyframes StarBackward {
|
@keyframes StarBackward {
|
||||||
0% { transform: rotate(120deg); }
|
0% { transform: rotate(120deg); }
|
||||||
100% { transform: rotate(0deg); }
|
100% { transform: rotate(0deg); }
|
||||||
@@ -34,4 +36,33 @@
|
|||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
.zen-library-glow-bg, .zen-library-glow-element { fill: white !important; }
|
.zen-library-glow-bg, .zen-library-glow-element { fill: white !important; }
|
||||||
.zen-library-glow-rays { stroke: white !important; }
|
.zen-library-glow-rays { stroke: white !important; }
|
||||||
}</style><defs><mask id="zen-library-box-mask"><rect width="40" height="40" x="-10" y="-10" fill="#fff"/><rect width="40" height="40" x="-10" y="11.635" fill="#000"/></mask></defs><g fill-rule="evenodd"><g mask="url(#zen-library-box-mask)"><path d="M7.773 11.635c.363.228.467.44.445.659l-.182 1.788a.579.579 0 0 0 .946.503l1.38-1.153a.58.58 0 0 1 .604-.085l1.644.725a.578.578 0 0 0 .77-.745l-.679-1.692a.58.58 0 0 1 .115-.577l1.198-1.34a.578.578 0 0 0-.47-.962l-1.794.121a.58.58 0 0 1-.539-.286l-.904-1.553a.578.578 0 0 0-1.06.15l-.439 1.743a.58.58 0 0 1-.438.424l-1.757.38a.578.578 0 0 0-.186 1.055z" class="zen-library-star zen-library-glow-element"/><path d="M7.773 11.635c.363.228.467.44.445.659l-.182 1.788a.579.579 0 0 0 .946.503l1.38-1.153a.58.58 0 0 1 .604-.085l1.644.725a.578.578 0 0 0 .77-.745l-.679-1.692a.58.58 0 0 1 .115-.577l1.198-1.34a.578.578 0 0 0-.47-.962l-1.794.121a.58.58 0 0 1-.539-.286l-.904-1.553a.578.578 0 0 0-1.06.15l-.439 1.743a.58.58 0 0 1-.438.424l-1.757.38a.578.578 0 0 0-.186 1.055z" class="zen-library-star"/></g><g transform="translate(14, 6.2)"><circle r="1.4" class="zen-library-circle zen-library-glow-element"/><circle r="1" class="zen-library-circle"/></g><g class="zen-library-triangle-group"><g transform="translate(17, 9.2)"><path d="M-1.1 1.8c-.3.2-.6 0-.6-.3v-3c0-.3.3-.5.6-.3L1.4-.4c.3.2.3.6 0 .8Z" class="zen-library-triangle zen-library-glow-element"/><path d="M-1.1 1.8c-.3.2-.6 0-.6-.3v-3c0-.3.3-.5.6-.3L1.4-.4c.3.2.3.6 0 .8Z" class="zen-library-triangle"/></g></g><g class="zen-library-glow"><path d="m6.6 6.6 1.44 6.1h9.92l1.44-6.1Z" class="zen-library-glow-bg"/><path d="m6.1 6.6 1.94 6.1h9.92l1.94-6.1" class="zen-library-glow-rays"/></g><path d="M7.218 13.287c0-.456.37-.826.826-.826h9.913c.457 0 .826.37.826.826v4.131a3.304 3.304 0 0 1-3.304 3.304h-4.956a3.305 3.305 0 0 1-3.305-3.304zm3.391 1.239c0-.456.37-.826.826-.826h3.304a.826.826 0 1 1 0 1.652h-3.304a.826.826 0 0 1-.826-.826" class="zen-library-box"/></g></svg>
|
}
|
||||||
|
</style>
|
||||||
|
<defs>
|
||||||
|
<mask id="zen-library-box-mask">
|
||||||
|
<rect x="-10" y="-10" width="40" height="40" fill="white"/>
|
||||||
|
<rect x="-10" y="11.635" width="40" height="40" fill="black"/>
|
||||||
|
</mask>
|
||||||
|
</defs>
|
||||||
|
<g fill-rule="evenodd">
|
||||||
|
<g mask="url(#zen-library-box-mask)">
|
||||||
|
<path class="zen-library-star zen-library-glow-element" d="M 7.773 11.635 C 8.136 11.863 8.24 12.075 8.218 12.294 L 8.036 14.082 C 7.984 14.598 8.584 14.917 8.982 14.585 L 10.362 13.432 C 10.53 13.291 10.764 13.258 10.966 13.347 L 12.61 14.072 C 13.085 14.281 13.574 13.808 13.38 13.327 L 12.701 11.635 C 12.632 11.437 12.675 11.216 12.816 11.058 L 14.014 9.718 C 14.36 9.331 14.061 8.72 13.544 8.756 L 11.75 8.877 C 11.531 8.892 11.322 8.781 11.211 8.591 L 10.307 7.038 C 10.046 6.59 9.373 6.685 9.247 7.188 L 8.808 8.931 C 8.754 9.144 8.585 9.309 8.37 9.355 L 6.613 9.735 C 6.106 9.845 5.988 10.514 6.427 10.79 L 7.773 11.635 Z"/>
|
||||||
|
<path class="zen-library-star" d="M 7.773 11.635 C 8.136 11.863 8.24 12.075 8.218 12.294 L 8.036 14.082 C 7.984 14.598 8.584 14.917 8.982 14.585 L 10.362 13.432 C 10.53 13.291 10.764 13.258 10.966 13.347 L 12.61 14.072 C 13.085 14.281 13.574 13.808 13.38 13.327 L 12.701 11.635 C 12.632 11.437 12.675 11.216 12.816 11.058 L 14.014 9.718 C 14.36 9.331 14.061 8.72 13.544 8.756 L 11.75 8.877 C 11.531 8.892 11.322 8.781 11.211 8.591 L 10.307 7.038 C 10.046 6.59 9.373 6.685 9.247 7.188 L 8.808 8.931 C 8.754 9.144 8.585 9.309 8.37 9.355 L 6.613 9.735 C 6.106 9.845 5.988 10.514 6.427 10.79 L 7.773 11.635 Z"/>
|
||||||
|
</g>
|
||||||
|
<g transform="translate(14, 6.2)">
|
||||||
|
<circle class="zen-library-circle zen-library-glow-element" cx="0" cy="0" r="1.4"/>
|
||||||
|
<circle class="zen-library-circle" cx="0" cy="0" r="1"/>
|
||||||
|
</g>
|
||||||
|
<g class="zen-library-triangle-group">
|
||||||
|
<g transform="translate(17, 9.2)">
|
||||||
|
<path class="zen-library-triangle zen-library-glow-element" d="M -1.1 1.8 C -1.4 2.0, -1.7 1.8, -1.7 1.5 L -1.7 -1.5 C -1.7 -1.8, -1.4 -2.0, -1.1 -1.8 L 1.4 -0.4 C 1.7 -0.2, 1.7 0.2, 1.4 0.4 Z"/>
|
||||||
|
<path class="zen-library-triangle" d="M -1.1 1.8 C -1.4 2.0, -1.7 1.8, -1.7 1.5 L -1.7 -1.5 C -1.7 -1.8, -1.4 -2.0, -1.1 -1.8 L 1.4 -0.4 C 1.7 -0.2, 1.7 0.2, 1.4 0.4 Z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="zen-library-glow">
|
||||||
|
<path class="zen-library-glow-bg" d="M 6.6 6.6 L 8.04 12.7 L 17.96 12.7 L 19.4 6.6 Z"/>
|
||||||
|
<path class="zen-library-glow-rays" d="M 6.1 6.6 L 8.04 12.7 L 17.96 12.7 L 19.9 6.6"/>
|
||||||
|
</g>
|
||||||
|
<path class="zen-library-box" d="M 7.218 13.287 C 7.218 12.831 7.588 12.461 8.044 12.461 H 17.957 C 18.414 12.461 18.783 12.831 18.783 13.287 V 17.418 C 18.783 19.243 17.304 20.722 15.479 20.722 H 10.523 C 8.698 20.722 7.218 19.243 7.218 17.418 V 13.287 Z M 10.609 14.526 C 10.609 14.07 10.979 13.7 11.435 13.7 H 14.739 C 15.196 13.7 15.565 14.07 15.565 14.526 C 15.565 14.982 15.196 15.352 14.739 15.352 H 11.435 C 10.979 15.352 10.609 14.982 10.609 14.526 Z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
@@ -309,7 +309,8 @@
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#library-button {
|
#library-button,
|
||||||
|
#zen-library-button {
|
||||||
list-style-image: url("library.svg") !important;
|
list-style-image: url("library.svg") !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -456,6 +456,11 @@
|
|||||||
* skin/classic/browser/zen-icons/zoom-out.svg (../shared/zen-icons/nucleo/zoom-out.svg)
|
* skin/classic/browser/zen-icons/zoom-out.svg (../shared/zen-icons/nucleo/zoom-out.svg)
|
||||||
#endif
|
#endif
|
||||||
* skin/classic/browser/zen-icons/urlbar-arrow.svg (../shared/zen-icons/common/urlbar-arrow.svg)
|
* skin/classic/browser/zen-icons/urlbar-arrow.svg (../shared/zen-icons/common/urlbar-arrow.svg)
|
||||||
|
skin/classic/browser/zen-icons/library/library-boosts-sprite.svg (../shared/zen-icons/common/library/library-boosts-sprite.svg)
|
||||||
|
skin/classic/browser/zen-icons/library/library-downloads-sprite.svg (../shared/zen-icons/common/library/library-downloads-sprite.svg)
|
||||||
|
skin/classic/browser/zen-icons/library/library-history-sprite.svg (../shared/zen-icons/common/library/library-history-sprite.svg)
|
||||||
|
skin/classic/browser/zen-icons/library/library-media-sprite.svg (../shared/zen-icons/common/library/library-media-sprite.svg)
|
||||||
|
skin/classic/browser/zen-icons/library/library-spaces-sprite.svg (../shared/zen-icons/common/library/library-spaces-sprite.svg)
|
||||||
* skin/classic/browser/zen-icons/selectable/airplane.svg (../shared/zen-icons/common/selectable/airplane.svg)
|
* skin/classic/browser/zen-icons/selectable/airplane.svg (../shared/zen-icons/common/selectable/airplane.svg)
|
||||||
* skin/classic/browser/zen-icons/selectable/american-football.svg (../shared/zen-icons/common/selectable/american-football.svg)
|
* skin/classic/browser/zen-icons/selectable/american-football.svg (../shared/zen-icons/common/selectable/american-football.svg)
|
||||||
* skin/classic/browser/zen-icons/selectable/baseball.svg (../shared/zen-icons/common/selectable/baseball.svg)
|
* skin/classic/browser/zen-icons/selectable/baseball.svg (../shared/zen-icons/common/selectable/baseball.svg)
|
||||||
@@ -543,11 +548,4 @@
|
|||||||
* skin/classic/browser/zen-icons/selectable/warning.svg (../shared/zen-icons/common/selectable/warning.svg)
|
* skin/classic/browser/zen-icons/selectable/warning.svg (../shared/zen-icons/common/selectable/warning.svg)
|
||||||
* skin/classic/browser/zen-icons/selectable/water.svg (../shared/zen-icons/common/selectable/water.svg)
|
* skin/classic/browser/zen-icons/selectable/water.svg (../shared/zen-icons/common/selectable/water.svg)
|
||||||
* skin/classic/browser/zen-icons/selectable/weight.svg (../shared/zen-icons/common/selectable/weight.svg)
|
* skin/classic/browser/zen-icons/selectable/weight.svg (../shared/zen-icons/common/selectable/weight.svg)
|
||||||
* skin/classic/browser/zen-icons/library/library-boosts-sprite.svg (../shared/zen-icons/common/library/library-boosts-sprite.svg)
|
|
||||||
* skin/classic/browser/zen-icons/library/library-downloads-sprite.svg (../shared/zen-icons/common/library/library-downloads-sprite.svg)
|
|
||||||
* skin/classic/browser/zen-icons/library/library-history-sprite.svg (../shared/zen-icons/common/library/library-history-sprite.svg)
|
|
||||||
* skin/classic/browser/zen-icons/library/library-media-sprite.svg (../shared/zen-icons/common/library/library-media-sprite.svg)
|
|
||||||
* skin/classic/browser/zen-icons/library/library-spaces-sprite.svg (../shared/zen-icons/common/library/library-spaces-sprite.svg)
|
|
||||||
* skin/classic/browser/zen-icons/library/library-sprite.svg (../shared/zen-icons/common/library/library-sprite.svg)
|
|
||||||
* skin/classic/browser/zen-icons/library/library.svg (../shared/zen-icons/common/library/library.svg)
|
|
||||||
skin/classic/browser/zen-icons/icons.css (../shared/zen-icons/icons.css)
|
skin/classic/browser/zen-icons/icons.css (../shared/zen-icons/icons.css)
|
||||||
|
|||||||
@@ -53,19 +53,15 @@ do_common_icons() {
|
|||||||
echo "Working on $filename"
|
echo "Working on $filename"
|
||||||
echo "* skin/classic/browser/zen-icons/$filename (../shared/zen-icons/common/$filename) " >> jar.inc.mn
|
echo "* skin/classic/browser/zen-icons/$filename (../shared/zen-icons/common/$filename) " >> jar.inc.mn
|
||||||
done
|
done
|
||||||
for filename in common/selectable/*.svg; do
|
# go through all subdirectories of common and do the same
|
||||||
# remove the os/ prefix
|
for dir in common/*/; do
|
||||||
add_header_to_file $filename
|
display_dir=$(basename $dir)
|
||||||
filename=$(basename $filename)
|
for filename in $dir/*.svg; do
|
||||||
echo "Working on $filename"
|
add_header_to_file $filename
|
||||||
echo "* skin/classic/browser/zen-icons/selectable/$filename (../shared/zen-icons/common/selectable/$filename) " >> jar.inc.mn
|
filename=$(basename $filename)
|
||||||
done
|
echo "Working on $filename"
|
||||||
for filename in common/library/*.svg; do
|
echo "* skin/classic/browser/zen-icons/$display_dir/$filename (../shared/zen-icons/common/$display_dir/$filename) " >> jar.inc.mn
|
||||||
# remove the os/ prefix
|
done
|
||||||
add_header_to_file $filename
|
|
||||||
filename=$(basename $filename)
|
|
||||||
echo "Working on $filename"
|
|
||||||
echo "* skin/classic/browser/zen-icons/library/$filename (../shared/zen-icons/common/library/$filename) " >> jar.inc.mn
|
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/build/moz.configure/lto-pgo.configure b/build/moz.configure/lto-pgo.configure
|
diff --git a/build/moz.configure/lto-pgo.configure b/build/moz.configure/lto-pgo.configure
|
||||||
index c72af5ed5f88fc80c810ef626e57a8b991dee514..53a3b55de7650799e3730372e72ad7b4bb2eea03 100644
|
index df2b0bf0081edfdc2c7bccaefc780d2b0c6555ff..53a3b55de7650799e3730372e72ad7b4bb2eea03 100644
|
||||||
--- a/build/moz.configure/lto-pgo.configure
|
--- a/build/moz.configure/lto-pgo.configure
|
||||||
+++ b/build/moz.configure/lto-pgo.configure
|
+++ b/build/moz.configure/lto-pgo.configure
|
||||||
@@ -234,6 +234,7 @@ def moz_pgo_rust(pgo, profile_use, profile_generate, c_compiler):
|
@@ -234,6 +234,7 @@ def moz_pgo_rust(pgo, profile_use, profile_generate, c_compiler):
|
||||||
@@ -14,7 +14,7 @@ index c72af5ed5f88fc80c810ef626e57a8b991dee514..53a3b55de7650799e3730372e72ad7b4
|
|||||||
help="Indicate that ld64 is free of symbol aliasing bugs",
|
help="Indicate that ld64 is free of symbol aliasing bugs",
|
||||||
)
|
)
|
||||||
|
|
||||||
-imply_option("MOZ_LD64_KNOWN_GOOD", True, when=moz_automation)
|
-imply_option("MOZ_LD64_KNOWN_GOOD", moz_automation)
|
||||||
|
|
||||||
use_fat_lto = cxx_compiler.try_link(
|
use_fat_lto = cxx_compiler.try_link(
|
||||||
ldflags=depends(stlport_libs)(
|
ldflags=depends(stlport_libs)(
|
||||||
|
|||||||
168
src/external-patches/firefox/bug_2011236.patch
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
diff --git a/browser/components/sessionstore/test/browser.toml b/browser/components/sessionstore/test/browser.toml
|
||||||
|
--- a/browser/components/sessionstore/test/browser.toml
|
||||||
|
+++ b/browser/components/sessionstore/test/browser.toml
|
||||||
|
@@ -14,10 +14,12 @@
|
||||||
|
"browser_frame_history_c.html",
|
||||||
|
"browser_frame_history_c1.html",
|
||||||
|
"browser_frame_history_c2.html",
|
||||||
|
"browser_formdata_format_sample.html",
|
||||||
|
"browser_sessionHistory_slow.sjs",
|
||||||
|
+ "browser_policy_container_sample.html",
|
||||||
|
+ "browser_policy_container_sample_frame.html",
|
||||||
|
"browser_scrollPositions_sample.html",
|
||||||
|
"browser_scrollPositions_sample2.html",
|
||||||
|
"browser_scrollPositions_sample_frameset.html",
|
||||||
|
"browser_scrollPositions_readerModeArticle.html",
|
||||||
|
"browser_sessionStorage.html",
|
||||||
|
@@ -226,10 +228,12 @@
|
||||||
|
["browser_pinned_tabs.js"]
|
||||||
|
skip-if = [
|
||||||
|
"ccov", # Bug 1625525
|
||||||
|
]
|
||||||
|
|
||||||
|
+["browser_policy_container_not_stored.js"]
|
||||||
|
+
|
||||||
|
["browser_privatetabs.js"]
|
||||||
|
|
||||||
|
["browser_purge_domaindata.js"]
|
||||||
|
|
||||||
|
["browser_purge_shistory.js"]
|
||||||
|
diff --git a/browser/components/sessionstore/test/browser_policy_container_not_stored.js b/browser/components/sessionstore/test/browser_policy_container_not_stored.js
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/browser/components/sessionstore/test/browser_policy_container_not_stored.js
|
||||||
|
@@ -0,0 +1,51 @@
|
||||||
|
+/* 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/. */
|
||||||
|
+
|
||||||
|
+"use strict";
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * A session history entry only needs to retain the policy container for loads
|
||||||
|
+ * that inherit their policies (about:blank, about:srcdoc, blob:, data:, ...).
|
||||||
|
+ * Anything fetched over the network gets its policies from the response again,
|
||||||
|
+ * so storing them would only bloat the session store (bug 2011236).
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+const TEST_ROOT = getRootDirectory(gTestPath).replace(
|
||||||
|
+ "chrome://mochitests/content",
|
||||||
|
+ "https://example.com"
|
||||||
|
+);
|
||||||
|
+const PARENT_URL = TEST_ROOT + "browser_policy_container_sample.html";
|
||||||
|
+const FRAME_URL = TEST_ROOT + "browser_policy_container_sample_frame.html";
|
||||||
|
+
|
||||||
|
+add_task(async function test_policy_container_only_for_inheriting_loads() {
|
||||||
|
+ const tab = BrowserTestUtils.addTab(gBrowser, PARENT_URL);
|
||||||
|
+ gBrowser.selectedTab = tab;
|
||||||
|
+ await promiseBrowserLoaded(tab.linkedBrowser, true, PARENT_URL);
|
||||||
|
+ await TabStateFlusher.flush(tab.linkedBrowser);
|
||||||
|
+
|
||||||
|
+ const state = JSON.parse(ss.getTabState(tab));
|
||||||
|
+ const topEntry = state.entries.at(-1);
|
||||||
|
+ is(topEntry.url, PARENT_URL, "collected the parent entry");
|
||||||
|
+
|
||||||
|
+ const children = topEntry.children ?? [];
|
||||||
|
+ const networkFrame = children.find(child => child.url === FRAME_URL);
|
||||||
|
+ const blankFrame = children.find(child => child.url === "about:blank");
|
||||||
|
+
|
||||||
|
+ ok(networkFrame, "collected the network-scheme subframe entry");
|
||||||
|
+ ok(blankFrame, "collected the about:blank subframe entry");
|
||||||
|
+
|
||||||
|
+ // The parent has a CSP, so both subframes inherit a policy container onto
|
||||||
|
+ // their load state. Only the one that cannot recover it from a response
|
||||||
|
+ // should keep it in session history.
|
||||||
|
+ ok(
|
||||||
|
+ !("policyContainer" in networkFrame),
|
||||||
|
+ "https subframe entry does not store a policyContainer"
|
||||||
|
+ );
|
||||||
|
+ ok(
|
||||||
|
+ "policyContainer" in blankFrame,
|
||||||
|
+ "about:blank subframe entry still stores its inherited policyContainer"
|
||||||
|
+ );
|
||||||
|
+
|
||||||
|
+ await BrowserTestUtils.removeTab(tab);
|
||||||
|
+});
|
||||||
|
diff --git a/browser/components/sessionstore/test/browser_policy_container_sample.html b/browser/components/sessionstore/test/browser_policy_container_sample.html
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/browser/components/sessionstore/test/browser_policy_container_sample.html
|
||||||
|
@@ -0,0 +1,12 @@
|
||||||
|
+<!DOCTYPE html>
|
||||||
|
+<html>
|
||||||
|
+<head>
|
||||||
|
+ <meta charset="utf-8">
|
||||||
|
+ <meta http-equiv="Content-Security-Policy" content="default-src * data: blob: 'unsafe-inline'">
|
||||||
|
+ <title>policyContainer session store sample</title>
|
||||||
|
+</head>
|
||||||
|
+<body>
|
||||||
|
+ <iframe id="network" src="browser_policy_container_sample_frame.html"></iframe>
|
||||||
|
+ <iframe id="blank" src="about:blank"></iframe>
|
||||||
|
+</body>
|
||||||
|
+</html>
|
||||||
|
diff --git a/browser/components/sessionstore/test/browser_policy_container_sample_frame.html b/browser/components/sessionstore/test/browser_policy_container_sample_frame.html
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/browser/components/sessionstore/test/browser_policy_container_sample_frame.html
|
||||||
|
@@ -0,0 +1,10 @@
|
||||||
|
+<!DOCTYPE html>
|
||||||
|
+<html>
|
||||||
|
+<head>
|
||||||
|
+ <meta charset="utf-8">
|
||||||
|
+ <title>policyContainer session store sample frame</title>
|
||||||
|
+</head>
|
||||||
|
+<body>
|
||||||
|
+ frame
|
||||||
|
+</body>
|
||||||
|
+</html>
|
||||||
|
diff --git a/docshell/shistory/SessionHistoryEntry.cpp b/docshell/shistory/SessionHistoryEntry.cpp
|
||||||
|
--- a/docshell/shistory/SessionHistoryEntry.cpp
|
||||||
|
+++ b/docshell/shistory/SessionHistoryEntry.cpp
|
||||||
|
@@ -41,10 +41,18 @@
|
||||||
|
extern mozilla::LazyLogModule gSHLog;
|
||||||
|
|
||||||
|
namespace mozilla {
|
||||||
|
namespace dom {
|
||||||
|
|
||||||
|
+// Only store policy container for loads that can't carry it themselves
|
||||||
|
+// (about:blank, about:srcdoc, blob:, data:, ...)
|
||||||
|
+// bug 1867137, bug 2011236
|
||||||
|
+static nsIPolicyContainer* PolicyContainerToStore(
|
||||||
|
+ nsIURI* aURI, nsIPolicyContainer* aPolicyContainer) {
|
||||||
|
+ return CSP_ShouldURIInheritCSP(aURI) ? aPolicyContainer : nullptr;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
SessionHistoryInfo::SessionHistoryInfo(nsDocShellLoadState* aLoadState,
|
||||||
|
nsIChannel* aChannel)
|
||||||
|
: mURI(aLoadState->URI()),
|
||||||
|
mOriginalURI(aLoadState->OriginalURI()),
|
||||||
|
mResultPrincipalURI(aLoadState->ResultPrincipalURI()),
|
||||||
|
@@ -59,11 +67,12 @@
|
||||||
|
mLoadReplace(aLoadState->LoadReplace()),
|
||||||
|
mHasUserActivation(aLoadState->HasValidUserGestureActivation()),
|
||||||
|
mSharedState(SharedState::Create(
|
||||||
|
aLoadState->TriggeringPrincipal(), aLoadState->PrincipalToInherit(),
|
||||||
|
aLoadState->PartitionedPrincipalToInherit(),
|
||||||
|
- aLoadState->PolicyContainer(),
|
||||||
|
+ PolicyContainerToStore(aLoadState->URI(),
|
||||||
|
+ aLoadState->PolicyContainer()),
|
||||||
|
/* FIXME Is this correct? */
|
||||||
|
aLoadState->TypeHint())) {
|
||||||
|
MOZ_DIAGNOSTIC_ASSERT(!mURI->SchemeIs("javascript"));
|
||||||
|
|
||||||
|
// Pull the upload stream off of the channel instead of the load state, as
|
||||||
|
@@ -124,11 +133,12 @@
|
||||||
|
loadInfo->GetPrincipalToInherit(
|
||||||
|
getter_AddRefs(mSharedState.Get()->mPrincipalToInherit));
|
||||||
|
|
||||||
|
mSharedState.Get()->mPartitionedPrincipalToInherit =
|
||||||
|
aPartitionedPrincipalToInherit;
|
||||||
|
- mSharedState.Get()->mPolicyContainer = aPolicyContainer;
|
||||||
|
+ mSharedState.Get()->mPolicyContainer =
|
||||||
|
+ PolicyContainerToStore(mURI, aPolicyContainer);
|
||||||
|
aChannel->GetContentType(mSharedState.Get()->mContentType);
|
||||||
|
aChannel->GetOriginalURI(getter_AddRefs(mOriginalURI));
|
||||||
|
|
||||||
|
uint32_t loadFlags;
|
||||||
|
aChannel->GetLoadFlags(&loadFlags);
|
||||||
|
|
||||||
2121
src/external-patches/firefox/css_corner_shape_rendering.patch
Normal file
@@ -1,131 +0,0 @@
|
|||||||
diff --git a/toolkit/modules/subprocess/subprocess_shared_unix.js b/toolkit/modules/subprocess/subprocess_shared_unix.js
|
|
||||||
--- a/toolkit/modules/subprocess/subprocess_shared_unix.js
|
|
||||||
+++ b/toolkit/modules/subprocess/subprocess_shared_unix.js
|
|
||||||
@@ -57,11 +57,11 @@
|
|
||||||
fcntl: [
|
|
||||||
ctypes.default_abi,
|
|
||||||
ctypes.int,
|
|
||||||
ctypes.int /* fildes */,
|
|
||||||
ctypes.int /* cmd */,
|
|
||||||
- ctypes.int /* ... */,
|
|
||||||
+ "...",
|
|
||||||
],
|
|
||||||
|
|
||||||
getcwd: [
|
|
||||||
ctypes.default_abi,
|
|
||||||
ctypes.char.ptr,
|
|
||||||
diff --git a/toolkit/modules/subprocess/subprocess_unix.sys.mjs b/toolkit/modules/subprocess/subprocess_unix.sys.mjs
|
|
||||||
--- a/toolkit/modules/subprocess/subprocess_unix.sys.mjs
|
|
||||||
+++ b/toolkit/modules/subprocess/subprocess_unix.sys.mjs
|
|
||||||
@@ -34,13 +34,13 @@
|
|
||||||
throw new Error("Unable to create pipe");
|
|
||||||
}
|
|
||||||
|
|
||||||
this.signalFd = fds[1];
|
|
||||||
|
|
||||||
- libc.fcntl(fds[0], LIBC.F_SETFL, LIBC.O_NONBLOCK);
|
|
||||||
- libc.fcntl(fds[0], LIBC.F_SETFD, LIBC.FD_CLOEXEC);
|
|
||||||
- libc.fcntl(fds[1], LIBC.F_SETFD, LIBC.FD_CLOEXEC);
|
|
||||||
+ libc.fcntl(fds[0], LIBC.F_SETFL, ctypes.int(LIBC.O_NONBLOCK));
|
|
||||||
+ libc.fcntl(fds[0], LIBC.F_SETFD, ctypes.int(LIBC.FD_CLOEXEC));
|
|
||||||
+ libc.fcntl(fds[1], LIBC.F_SETFD, ctypes.int(LIBC.FD_CLOEXEC));
|
|
||||||
|
|
||||||
this.call("init", [{ signalFd: fds[0] }]);
|
|
||||||
}
|
|
||||||
|
|
||||||
closePipe() {
|
|
||||||
diff --git a/toolkit/modules/subprocess/subprocess_unix.worker.js b/toolkit/modules/subprocess/subprocess_unix.worker.js
|
|
||||||
--- a/toolkit/modules/subprocess/subprocess_unix.worker.js
|
|
||||||
+++ b/toolkit/modules/subprocess/subprocess_unix.worker.js
|
|
||||||
@@ -349,13 +349,13 @@
|
|
||||||
our_pipes.push(new InputPipe(this, fds[1]));
|
|
||||||
} else {
|
|
||||||
our_pipes.push(new OutputPipe(this, fds[1]));
|
|
||||||
}
|
|
||||||
|
|
||||||
- libc.fcntl(fds[0], LIBC.F_SETFD, LIBC.FD_CLOEXEC);
|
|
||||||
- libc.fcntl(fds[1], LIBC.F_SETFD, LIBC.FD_CLOEXEC);
|
|
||||||
- libc.fcntl(fds[1], LIBC.F_SETFL, LIBC.O_NONBLOCK);
|
|
||||||
+ libc.fcntl(fds[0], LIBC.F_SETFD, ctypes.int(LIBC.FD_CLOEXEC));
|
|
||||||
+ libc.fcntl(fds[1], LIBC.F_SETFD, ctypes.int(LIBC.FD_CLOEXEC));
|
|
||||||
+ libc.fcntl(fds[1], LIBC.F_SETFL, ctypes.int(LIBC.O_NONBLOCK));
|
|
||||||
|
|
||||||
return fds[0];
|
|
||||||
};
|
|
||||||
|
|
||||||
their_pipes.set(0, pipe(false));
|
|
||||||
diff --git a/toolkit/modules/subprocess/test/xpcshell/test_subprocess_pipe_flags.js b/toolkit/modules/subprocess/test/xpcshell/test_subprocess_pipe_flags.js
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/toolkit/modules/subprocess/test/xpcshell/test_subprocess_pipe_flags.js
|
|
||||||
@@ -0,0 +1,56 @@
|
|
||||||
+/* 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/. */
|
|
||||||
+
|
|
||||||
+"use strict";
|
|
||||||
+
|
|
||||||
+// fcntl commands for reading the flags set by the subprocess modules. The
|
|
||||||
+// values are the same on Linux and macOS but are not exposed by
|
|
||||||
+// ChromeUtils.getLibcConstants().
|
|
||||||
+const F_GETFD = 1;
|
|
||||||
+const F_GETFL = 3;
|
|
||||||
+
|
|
||||||
+add_task(async function test_subprocess_pipe_flags() {
|
|
||||||
+ const { getSubprocessImplForTest } = ChromeUtils.importESModule(
|
|
||||||
+ "resource://gre/modules/Subprocess.sys.mjs"
|
|
||||||
+ );
|
|
||||||
+ const { libc } = ChromeUtils.importESModule(
|
|
||||||
+ "resource://gre/modules/subprocess/subprocess_unix.sys.mjs"
|
|
||||||
+ );
|
|
||||||
+ const { FD_CLOEXEC, O_NONBLOCK } = ChromeUtils.getLibcConstants();
|
|
||||||
+
|
|
||||||
+ const worker = getSubprocessImplForTest().Process.getWorker();
|
|
||||||
+ equal(
|
|
||||||
+ libc.fcntl(worker.signalFd, F_GETFD),
|
|
||||||
+ FD_CLOEXEC,
|
|
||||||
+ "The main-thread signal pipe has exactly FD_CLOEXEC set"
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
+ const proc = await Subprocess.call({
|
|
||||||
+ command: await Subprocess.pathSearch("cat"),
|
|
||||||
+ stderr: "pipe",
|
|
||||||
+ });
|
|
||||||
+ const fds = await worker.call("getFds", [proc.id]);
|
|
||||||
+ ok(
|
|
||||||
+ fds.every(Number.isInteger),
|
|
||||||
+ "The worker owns the stdin, stdout and stderr pipes"
|
|
||||||
+ );
|
|
||||||
+ for (const fd of fds) {
|
|
||||||
+ equal(
|
|
||||||
+ libc.fcntl(fd, F_GETFD),
|
|
||||||
+ FD_CLOEXEC,
|
|
||||||
+ "Worker pipes have exactly FD_CLOEXEC set"
|
|
||||||
+ );
|
|
||||||
+ equal(
|
|
||||||
+ libc.fcntl(fd, F_GETFL) & O_NONBLOCK,
|
|
||||||
+ O_NONBLOCK,
|
|
||||||
+ "Worker pipes are nonblocking"
|
|
||||||
+ );
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ const output = proc.stdout.readString(5);
|
|
||||||
+ await proc.stdin.write("hello");
|
|
||||||
+ equal(await output, "hello", "The subprocess pipes transfer data");
|
|
||||||
+ await proc.stdin.close();
|
|
||||||
+ equal((await proc.wait()).exitCode, 0, "The subprocess exits cleanly");
|
|
||||||
+});
|
|
||||||
diff --git a/toolkit/modules/subprocess/test/xpcshell/xpcshell.toml b/toolkit/modules/subprocess/test/xpcshell/xpcshell.toml
|
|
||||||
--- a/toolkit/modules/subprocess/test/xpcshell/xpcshell.toml
|
|
||||||
+++ b/toolkit/modules/subprocess/test/xpcshell/xpcshell.toml
|
|
||||||
@@ -25,6 +25,9 @@
|
|
||||||
["test_subprocess_pathSearch.js"]
|
|
||||||
|
|
||||||
["test_subprocess_perf.js"]
|
|
||||||
requesttimeoutfactor = 2 # Slow on Windows
|
|
||||||
|
|
||||||
+["test_subprocess_pipe_flags.js"]
|
|
||||||
+skip-if = ["os == 'win'"]
|
|
||||||
+
|
|
||||||
["test_subprocess_polling.js"]
|
|
||||||
|
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
diff --git a/toolkit/themes/shared/global-shared.css b/toolkit/themes/shared/global-shared.css
|
diff --git a/toolkit/themes/shared/global-shared.css b/toolkit/themes/shared/global-shared.css
|
||||||
--- a/toolkit/themes/shared/global-shared.css
|
--- a/toolkit/themes/shared/global-shared.css
|
||||||
+++ b/toolkit/themes/shared/global-shared.css
|
+++ b/toolkit/themes/shared/global-shared.css
|
||||||
@@ -80,10 +80,9 @@
|
@@ -80,11 +80,10 @@
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
--panel-background: transparent;
|
||||||
--panel-box-shadow: none;
|
--panel-box-shadow: none;
|
||||||
--panel-border-color: transparent;
|
--panel-border-color: transparent;
|
||||||
--panel-box-shadow-margin: 0px;
|
--panel-box-shadow-margin: 0px;
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
diff --git a/toolkit/mozapps/update/common/registrycertificates.cpp b/toolkit/mozapps/update/common/registrycertificates.cpp
|
|
||||||
index f7f5acdfa08879a0ff3095e15eebf7b436cf5092..5915141b3f4a6d3536841cc1040e70afe033e058 100644
|
|
||||||
--- a/toolkit/mozapps/update/common/registrycertificates.cpp
|
|
||||||
+++ b/toolkit/mozapps/update/common/registrycertificates.cpp
|
|
||||||
@@ -33,9 +33,21 @@
|
|
||||||
*
|
|
||||||
* @return TRUE if the binary matches any of the allowed certificates.
|
|
||||||
*/
|
|
||||||
+// TEMPORARY: accept any binary without consulting the allowed-certificate
|
|
||||||
+// values. Those values are only ever written by an installer run, so after a
|
|
||||||
+// signing certificate change every existing install still names the previous
|
|
||||||
+// certificate, the maintenance service refuses the newly signed binaries, and
|
|
||||||
+// updates fall back to prompting for elevation every time. Remove this define
|
|
||||||
+// and the block below once installs have been migrated.
|
|
||||||
+#define ZEN_SKIP_ALLOWED_CERTIFICATE_CHECK 1
|
|
||||||
+
|
|
||||||
BOOL DoesBinaryMatchAllowedCertificates(LPCWSTR basePathForUpdate,
|
|
||||||
LPCWSTR filePath,
|
|
||||||
BOOL allowFallbackKeySkip) {
|
|
||||||
+#ifdef ZEN_SKIP_ALLOWED_CERTIFICATE_CHECK
|
|
||||||
+ LOG(("Skipping the allowed certificate check for \"%ls\"", filePath));
|
|
||||||
+ return TRUE;
|
|
||||||
+#else
|
|
||||||
#ifdef DISABLE_UPDATER_AUTHENTICODE_CHECK
|
|
||||||
if (allowFallbackKeySkip) {
|
|
||||||
LOG_WARN(("Skipping authenticode check"));
|
|
||||||
@@ -163,4 +175,5 @@ BOOL DoesBinaryMatchAllowedCertificates(LPCWSTR basePathForUpdate,
|
|
||||||
RegCloseKey(baseKey);
|
|
||||||
// No certificates match, :'(
|
|
||||||
return FALSE;
|
|
||||||
+#endif // ZEN_SKIP_ALLOWED_CERTIFICATE_CHECK
|
|
||||||
}
|
|
||||||
@@ -7,11 +7,6 @@
|
|||||||
"id": "D299584",
|
"id": "D299584",
|
||||||
"name": "Native MacOS popovers fix"
|
"name": "Native MacOS popovers fix"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "phabricator",
|
|
||||||
"id": "D323933",
|
|
||||||
"name": "Issue 15123"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "local",
|
"type": "local",
|
||||||
// TODO: Convert into https://phabricator.services.mozilla.com/D298079
|
// TODO: Convert into https://phabricator.services.mozilla.com/D298079
|
||||||
@@ -46,6 +41,11 @@
|
|||||||
" jsonLengthHint,": " lengthHint: jsonLengthHint,"
|
" jsonLengthHint,": " lengthHint: jsonLengthHint,"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "phabricator",
|
||||||
|
"id": "D320897",
|
||||||
|
"name": "Bug 2011236"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "phabricator",
|
"type": "phabricator",
|
||||||
"id": "D321446",
|
"id": "D321446",
|
||||||
@@ -53,6 +53,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "local",
|
"type": "local",
|
||||||
"path": "firefox/override_cert_checks_temp.patch"
|
"path": "firefox/css_corner_shape_rendering.patch"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/layout/painting/nsImageRenderer.cpp b/layout/painting/nsImageRenderer.cpp
|
diff --git a/layout/painting/nsImageRenderer.cpp b/layout/painting/nsImageRenderer.cpp
|
||||||
index 7ddc4f7e259272e7b905f44aff7316c1ba540c22..277a92e5d10e6a04b12373854ffe6791d562215e 100644
|
index 6e464b48c90174b8954aad8a79bae30a7a30cbc9..9ea9a4963ceae679f092e014ac24a0d24fb106ce 100644
|
||||||
--- a/layout/painting/nsImageRenderer.cpp
|
--- a/layout/painting/nsImageRenderer.cpp
|
||||||
+++ b/layout/painting/nsImageRenderer.cpp
|
+++ b/layout/painting/nsImageRenderer.cpp
|
||||||
@@ -95,7 +95,7 @@ static already_AddRefed<imgIContainer> GetSymbolicIconImage(nsAtom* aName,
|
@@ -90,7 +90,7 @@ static already_AddRefed<imgIContainer> GetSymbolicIconImage(nsAtom* aName,
|
||||||
if (NS_WARN_IF(!XRE_IsParentProcess())) {
|
if (NS_WARN_IF(!XRE_IsParentProcess())) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
@@ -11,7 +11,7 @@ index 7ddc4f7e259272e7b905f44aff7316c1ba540c22..277a92e5d10e6a04b12373854ffe6791
|
|||||||
auto key = std::make_tuple(aName, aScale, fg);
|
auto key = std::make_tuple(aName, aScale, fg);
|
||||||
auto* cache = aFrame->GetOrCreateDeletableProperty(SymbolicImageCacheProp());
|
auto* cache = aFrame->GetOrCreateDeletableProperty(SymbolicImageCacheProp());
|
||||||
auto lookup = cache->Lookup(key);
|
auto lookup = cache->Lookup(key);
|
||||||
@@ -580,7 +580,7 @@ ImgDrawResult nsImageRenderer::Draw(nsPresContext* aPresContext,
|
@@ -575,7 +575,7 @@ ImgDrawResult nsImageRenderer::Draw(nsPresContext* aPresContext,
|
||||||
}
|
}
|
||||||
case StyleImage::Tag::Gradient: {
|
case StyleImage::Tag::Gradient: {
|
||||||
nsCSSGradientRenderer renderer = nsCSSGradientRenderer::Create(
|
nsCSSGradientRenderer renderer = nsCSSGradientRenderer::Create(
|
||||||
@@ -20,7 +20,7 @@ index 7ddc4f7e259272e7b905f44aff7316c1ba540c22..277a92e5d10e6a04b12373854ffe6791
|
|||||||
|
|
||||||
renderer.Paint(*ctx, aDest, aFill, aRepeatSize, aSrc, aDirtyRect,
|
renderer.Paint(*ctx, aDest, aFill, aRepeatSize, aSrc, aDirtyRect,
|
||||||
aOpacity);
|
aOpacity);
|
||||||
@@ -657,7 +657,7 @@ ImgDrawResult nsImageRenderer::BuildWebRenderDisplayItems(
|
@@ -652,7 +652,7 @@ ImgDrawResult nsImageRenderer::BuildWebRenderDisplayItems(
|
||||||
switch (mType) {
|
switch (mType) {
|
||||||
case StyleImage::Tag::Gradient: {
|
case StyleImage::Tag::Gradient: {
|
||||||
nsCSSGradientRenderer renderer = nsCSSGradientRenderer::Create(
|
nsCSSGradientRenderer renderer = nsCSSGradientRenderer::Create(
|
||||||
@@ -29,16 +29,16 @@ index 7ddc4f7e259272e7b905f44aff7316c1ba540c22..277a92e5d10e6a04b12373854ffe6791
|
|||||||
|
|
||||||
renderer.BuildWebRenderDisplayItems(aBuilder, aSc, aDest, aFill,
|
renderer.BuildWebRenderDisplayItems(aBuilder, aSc, aDest, aFill,
|
||||||
aRepeatSize, aSrc,
|
aRepeatSize, aSrc,
|
||||||
@@ -679,6 +679,8 @@ ImgDrawResult nsImageRenderer::BuildWebRenderDisplayItems(
|
@@ -678,6 +678,8 @@ ImgDrawResult nsImageRenderer::BuildWebRenderDisplayItems(
|
||||||
}
|
nsPresContext::AppUnitsToIntCSSPixels(aDest.height)};
|
||||||
|
|
||||||
SVGImageContext svgContext(Some(CSSSize::FromAppUnits(aDest.Size())));
|
SVGImageContext svgContext(Some(destCSSSize));
|
||||||
+ SVGImageContext::MaybeStoreZenBoosts(svgContext,
|
+ SVGImageContext::MaybeStoreZenBoosts(svgContext,
|
||||||
+ *mForFrame->PresContext());
|
+ *mForFrame->PresContext());
|
||||||
Maybe<ImageIntRegion> region;
|
Maybe<ImageIntRegion> region;
|
||||||
|
|
||||||
const int32_t appUnitsPerDevPixel = aPresContext->AppUnitsPerDevPixel();
|
const int32_t appUnitsPerDevPixel = aPresContext->AppUnitsPerDevPixel();
|
||||||
@@ -1098,7 +1100,7 @@ ImgDrawResult nsImageRenderer::DrawShapeImage(nsPresContext* aPresContext,
|
@@ -1092,7 +1094,7 @@ ImgDrawResult nsImageRenderer::DrawShapeImage(nsPresContext* aPresContext,
|
||||||
|
|
||||||
if (mImage->IsGradient()) {
|
if (mImage->IsGradient()) {
|
||||||
nsCSSGradientRenderer renderer = nsCSSGradientRenderer::Create(
|
nsCSSGradientRenderer renderer = nsCSSGradientRenderer::Create(
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/layout/svg/SVGGradientFrame.cpp b/layout/svg/SVGGradientFrame.cpp
|
diff --git a/layout/svg/SVGGradientFrame.cpp b/layout/svg/SVGGradientFrame.cpp
|
||||||
index eebcced86ec1e9010b761d5df4a92684dde44009..4dc018a73a979f50ac7842e4a3f3fcf9d0071b56 100644
|
index b0d38b0fab01797328af0b1f1f48af8fb5eebe4d..953feffdc96143dc2d8f8e57f8bb4a6aeb33f0c5 100644
|
||||||
--- a/layout/svg/SVGGradientFrame.cpp
|
--- a/layout/svg/SVGGradientFrame.cpp
|
||||||
+++ b/layout/svg/SVGGradientFrame.cpp
|
+++ b/layout/svg/SVGGradientFrame.cpp
|
||||||
@@ -228,8 +228,9 @@ class MOZ_STACK_CLASS SVGColorStopInterpolator
|
@@ -229,8 +229,9 @@ class MOZ_STACK_CLASS SVGColorStopInterpolator
|
||||||
SVGColorStopInterpolator(
|
SVGColorStopInterpolator(
|
||||||
gfxPattern* aGradient, const nsTArray<ColorStop>& aStops,
|
gfxPattern* aGradient, const nsTArray<ColorStop>& aStops,
|
||||||
const StyleColorInterpolationMethod& aStyleColorInterpolationMethod,
|
const StyleColorInterpolationMethod& aStyleColorInterpolationMethod,
|
||||||
@@ -14,8 +14,8 @@ index eebcced86ec1e9010b761d5df4a92684dde44009..4dc018a73a979f50ac7842e4a3f3fcf9
|
|||||||
mGradient(aGradient) {}
|
mGradient(aGradient) {}
|
||||||
|
|
||||||
void CreateStop(float aPosition, DeviceColor aColor) {
|
void CreateStop(float aPosition, DeviceColor aColor) {
|
||||||
@@ -269,7 +270,8 @@ already_AddRefed<gfxPattern> SVGGradientFrame::GetPaintServerPattern(
|
@@ -270,7 +271,8 @@ already_AddRefed<gfxPattern> SVGGradientFrame::GetPaintServerPattern(
|
||||||
if (nStops == 1 || GradientVectorLengthIsZero(gradientUnits)) {
|
if (nStops == 1 || GradientVectorLengthIsZero()) {
|
||||||
// The gradient paints a single colour, using the stop-color of the last
|
// The gradient paints a single colour, using the stop-color of the last
|
||||||
// gradient step if there are more than one.
|
// gradient step if there are more than one.
|
||||||
- return MakeAndAddRef<gfxPattern>(ToDeviceColor(stops.LastElement().mColor));
|
- return MakeAndAddRef<gfxPattern>(ToDeviceColor(stops.LastElement().mColor));
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/layout/svg/SVGImageContext.h b/layout/svg/SVGImageContext.h
|
diff --git a/layout/svg/SVGImageContext.h b/layout/svg/SVGImageContext.h
|
||||||
index 63f3c4926cfdb8b12e9e4a38016fc66f50cf3129..5ba3f2c07f521905a086ee6eea87975d5a3441ec 100644
|
index ad833c7c2ee6a4c4984efdb0d59e3576c2d1bc19..36864a34badc0cbfe44d6295798622fd6178f9e3 100644
|
||||||
--- a/layout/svg/SVGImageContext.h
|
--- a/layout/svg/SVGImageContext.h
|
||||||
+++ b/layout/svg/SVGImageContext.h
|
+++ b/layout/svg/SVGImageContext.h
|
||||||
@@ -6,6 +6,7 @@
|
@@ -6,6 +6,7 @@
|
||||||
@@ -7,10 +7,10 @@ index 63f3c4926cfdb8b12e9e4a38016fc66f50cf3129..5ba3f2c07f521905a086ee6eea87975d
|
|||||||
|
|
||||||
#include "Units.h"
|
#include "Units.h"
|
||||||
+#include "nsColor.h"
|
+#include "nsColor.h"
|
||||||
#include "mozilla/Casting.h"
|
|
||||||
#include "mozilla/Maybe.h"
|
#include "mozilla/Maybe.h"
|
||||||
#include "mozilla/SVGContextPaint.h"
|
#include "mozilla/SVGContextPaint.h"
|
||||||
@@ -64,6 +65,11 @@ class SVGImageContext {
|
#include "mozilla/SVGPreserveAspectRatio.h"
|
||||||
|
@@ -63,6 +64,11 @@ class SVGImageContext {
|
||||||
nsISVGPaintContext* aPaintContext,
|
nsISVGPaintContext* aPaintContext,
|
||||||
imgIContainer* aImgContainer);
|
imgIContainer* aImgContainer);
|
||||||
|
|
||||||
@@ -19,10 +19,10 @@ index 63f3c4926cfdb8b12e9e4a38016fc66f50cf3129..5ba3f2c07f521905a086ee6eea87975d
|
|||||||
+ static void MaybeStoreZenBoosts(SVGImageContext& aContext,
|
+ static void MaybeStoreZenBoosts(SVGImageContext& aContext,
|
||||||
+ const nsPresContext& aPresContext);
|
+ const nsPresContext& aPresContext);
|
||||||
+
|
+
|
||||||
const Maybe<CSSSize>& GetViewportSize() const { return mViewportSize; }
|
const Maybe<CSSIntSize>& GetViewportSize() const { return mViewportSize; }
|
||||||
|
|
||||||
void SetViewportSize(const Maybe<CSSSize>& aSize) { mViewportSize = aSize; }
|
void SetViewportSize(const Maybe<CSSIntSize>& aSize) {
|
||||||
@@ -74,6 +80,21 @@ class SVGImageContext {
|
@@ -75,6 +81,21 @@ class SVGImageContext {
|
||||||
mColorScheme = aScheme;
|
mColorScheme = aScheme;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ index 63f3c4926cfdb8b12e9e4a38016fc66f50cf3129..5ba3f2c07f521905a086ee6eea87975d
|
|||||||
const Maybe<SVGPreserveAspectRatio>& GetPreserveAspectRatio() const {
|
const Maybe<SVGPreserveAspectRatio>& GetPreserveAspectRatio() const {
|
||||||
return mPreserveAspectRatio;
|
return mPreserveAspectRatio;
|
||||||
}
|
}
|
||||||
@@ -109,7 +130,11 @@ class SVGImageContext {
|
@@ -110,7 +131,11 @@ class SVGImageContext {
|
||||||
return contextPaintIsEqual && mViewportSize == aOther.mViewportSize &&
|
return contextPaintIsEqual && mViewportSize == aOther.mViewportSize &&
|
||||||
mPreserveAspectRatio == aOther.mPreserveAspectRatio &&
|
mPreserveAspectRatio == aOther.mPreserveAspectRatio &&
|
||||||
mColorScheme == aOther.mColorScheme &&
|
mColorScheme == aOther.mColorScheme &&
|
||||||
@@ -56,8 +56,8 @@ index 63f3c4926cfdb8b12e9e4a38016fc66f50cf3129..5ba3f2c07f521905a086ee6eea87975d
|
|||||||
+ mZenBoostsInverted == aOther.mZenBoostsInverted;
|
+ mZenBoostsInverted == aOther.mZenBoostsInverted;
|
||||||
}
|
}
|
||||||
|
|
||||||
PLDHashNumber Hash() const {
|
bool operator!=(const SVGImageContext&) const = default;
|
||||||
@@ -120,7 +145,8 @@ class SVGImageContext {
|
@@ -123,7 +148,8 @@ class SVGImageContext {
|
||||||
return AddToHash(hash, mViewportSize.map(HashSize).valueOr(0),
|
return AddToHash(hash, mViewportSize.map(HashSize).valueOr(0),
|
||||||
mPreserveAspectRatio.map(HashPAR).valueOr(0),
|
mPreserveAspectRatio.map(HashPAR).valueOr(0),
|
||||||
mColorScheme.map(HashColorScheme).valueOr(0),
|
mColorScheme.map(HashColorScheme).valueOr(0),
|
||||||
@@ -67,7 +67,7 @@ index 63f3c4926cfdb8b12e9e4a38016fc66f50cf3129..5ba3f2c07f521905a086ee6eea87975d
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -154,6 +180,9 @@ class SVGImageContext {
|
@@ -156,6 +182,9 @@ class SVGImageContext {
|
||||||
Maybe<SVGPreserveAspectRatio> mPreserveAspectRatio;
|
Maybe<SVGPreserveAspectRatio> mPreserveAspectRatio;
|
||||||
Maybe<ColorScheme> mColorScheme;
|
Maybe<ColorScheme> mColorScheme;
|
||||||
StyleLinkParameters mLinkParameters;
|
StyleLinkParameters mLinkParameters;
|
||||||
|
|||||||
29
src/toolkit/content/widgets/panel-list/panel-list-mjs.patch
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
diff --git a/toolkit/content/widgets/panel-list/panel-list.mjs b/toolkit/content/widgets/panel-list/panel-list.mjs
|
||||||
|
index 68ad2fafc8b31dfff541cf8381d9b9533e376d1c..fa62fec6bfb33338091fc06d3736fb76fd5c47c4 100644
|
||||||
|
--- a/toolkit/content/widgets/panel-list/panel-list.mjs
|
||||||
|
+++ b/toolkit/content/widgets/panel-list/panel-list.mjs
|
||||||
|
@@ -223,7 +223,12 @@ export class PanelList extends HTMLElement {
|
||||||
|
this.setAttribute("showing", "true");
|
||||||
|
// Tell the host element to hide any overflow in case the panel extends off
|
||||||
|
// the page before the alignment is set.
|
||||||
|
- hostElement.style.overflow = "hidden";
|
||||||
|
+ const hostHidesOverflow = !getComputedStyle(hostElement)
|
||||||
|
+ .overflow.split(" ")
|
||||||
|
+ .includes("visible");
|
||||||
|
+ if (!hostHidesOverflow) {
|
||||||
|
+ hostElement.style.overflow = "hidden";
|
||||||
|
+ }
|
||||||
|
|
||||||
|
// Wait for a layout flush, then find the bounds.
|
||||||
|
let {
|
||||||
|
@@ -344,7 +349,9 @@ export class PanelList extends HTMLElement {
|
||||||
|
// Set the alignments and show the panel.
|
||||||
|
this.setAttribute("align", align);
|
||||||
|
this.setAttribute("valign", valign);
|
||||||
|
- hostElement.style.overflow = "";
|
||||||
|
+ if (!hostHidesOverflow) {
|
||||||
|
+ hostElement.style.overflow = "";
|
||||||
|
+ }
|
||||||
|
// Decide positioning based on where this panel will be rendered
|
||||||
|
const offsetParentIsBody =
|
||||||
|
this.supportsPopover() ||
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/toolkit/themes/shared/design-system/dist/tokens-shared.css b/toolkit/themes/shared/design-system/dist/tokens-shared.css
|
diff --git a/toolkit/themes/shared/design-system/dist/tokens-shared.css b/toolkit/themes/shared/design-system/dist/tokens-shared.css
|
||||||
index b0f8fa146de335c53e73d46853f45dda9b15cc73..1b7592c0e9ca12fd9d1f8a555633fd39c2efb537 100644
|
index 63c641f560d4c0ce06b40a652ca99d1c48cd6941..39c81e773a442870763396e68fb57bd336e3625a 100644
|
||||||
--- a/toolkit/themes/shared/design-system/dist/tokens-shared.css
|
--- a/toolkit/themes/shared/design-system/dist/tokens-shared.css
|
||||||
+++ b/toolkit/themes/shared/design-system/dist/tokens-shared.css
|
+++ b/toolkit/themes/shared/design-system/dist/tokens-shared.css
|
||||||
@@ -7,6 +7,8 @@
|
@@ -7,6 +7,8 @@
|
||||||
@@ -8,9 +8,9 @@ index b0f8fa146de335c53e73d46853f45dda9b15cc73..1b7592c0e9ca12fd9d1f8a555633fd39
|
|||||||
|
|
||||||
+@import url("chrome://browser/content/zen-styles/zen-theme.css");
|
+@import url("chrome://browser/content/zen-styles/zen-theme.css");
|
||||||
+
|
+
|
||||||
:root,
|
@layer tokens-foundation {
|
||||||
:host(.anonymous-content-host) {
|
:root,
|
||||||
@layer tokens-foundation {
|
:host(.anonymous-content-host) {
|
||||||
@@ -28,10 +30,10 @@
|
@@ -28,10 +30,10 @@
|
||||||
--border-color-selected: var(--color-accent-primary);
|
--border-color-selected: var(--color-accent-primary);
|
||||||
--border-color-transparent: transparent;
|
--border-color-transparent: transparent;
|
||||||
|
|||||||
@@ -1,17 +1,16 @@
|
|||||||
diff --git a/widget/cocoa/nsCocoaWindow.mm b/widget/cocoa/nsCocoaWindow.mm
|
diff --git a/widget/cocoa/nsCocoaWindow.mm b/widget/cocoa/nsCocoaWindow.mm
|
||||||
index 887e4c052d5dd2b73d4c2059463529fb4b09dcab..36da18e19018b1b216576c299f938e75093546d3 100644
|
index 2efd02e4a92433fd29bbfdb707aa81cfec45031e..3b763c3927f07e529c826f8e4f62bc80a324b247 100644
|
||||||
--- a/widget/cocoa/nsCocoaWindow.mm
|
--- a/widget/cocoa/nsCocoaWindow.mm
|
||||||
+++ b/widget/cocoa/nsCocoaWindow.mm
|
+++ b/widget/cocoa/nsCocoaWindow.mm
|
||||||
@@ -86,6 +86,8 @@
|
@@ -86,6 +86,7 @@
|
||||||
#include "mozilla/StaticPrefs_gfx.h"
|
#include "mozilla/StaticPrefs_gfx.h"
|
||||||
#include "mozilla/StaticPrefs_ui.h"
|
#include "mozilla/StaticPrefs_ui.h"
|
||||||
#include "mozilla/StaticPrefs_widget.h"
|
#include "mozilla/StaticPrefs_widget.h"
|
||||||
+#include "mozilla/StaticPrefs_zen.h"
|
+#include "mozilla/StaticPrefs_zen.h"
|
||||||
+#include "mozilla/nsZenDragAndDrop.h"
|
|
||||||
#include "mozilla/WritingModes.h"
|
#include "mozilla/WritingModes.h"
|
||||||
#include "mozilla/dom/Document.h"
|
#include "mozilla/dom/Document.h"
|
||||||
#include "mozilla/layers/CompositorBridgeChild.h"
|
#include "mozilla/layers/CompositorBridgeChild.h"
|
||||||
@@ -1332,6 +1334,110 @@ - (NSRect)_opaqueRectForWindowMoveWhenInTitlebar {
|
@@ -1332,6 +1333,110 @@ - (NSRect)_opaqueRectForWindowMoveWhenInTitlebar {
|
||||||
}
|
}
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@@ -122,28 +121,7 @@ index 887e4c052d5dd2b73d4c2059463529fb4b09dcab..36da18e19018b1b216576c299f938e75
|
|||||||
void nsCocoaWindow::UpdateWindowDraggingRegion(
|
void nsCocoaWindow::UpdateWindowDraggingRegion(
|
||||||
const LayoutDeviceIntRegion& aRegion) {
|
const LayoutDeviceIntRegion& aRegion) {
|
||||||
// mChildView returns YES from mouseDownCanMoveWindow, so we need to put
|
// mChildView returns YES from mouseDownCanMoveWindow, so we need to put
|
||||||
@@ -3858,7 +3964,9 @@ - (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)sender {
|
@@ -4919,6 +5024,10 @@ - (BOOL)wantsBestResolutionOpenGLSurface {
|
||||||
// NSDraggingDestination
|
|
||||||
- (NSDragOperation)draggingUpdated:(id<NSDraggingInfo>)sender {
|
|
||||||
MOZ_LOG(sCocoaLog, LogLevel::Info, ("ChildView draggingUpdated: entered\n"));
|
|
||||||
- return [self doDragAction:eDragOver sender:sender];
|
|
||||||
+ NSDragOperation operation = [self doDragAction:eDragOver sender:sender];
|
|
||||||
+ zen::PrepareDropLanding(sender);
|
|
||||||
+ return operation;
|
|
||||||
}
|
|
||||||
|
|
||||||
// NSDraggingDestination
|
|
||||||
@@ -3874,6 +3982,9 @@ - (void)draggingExited:(id<NSDraggingInfo>)sender {
|
|
||||||
- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
|
|
||||||
nsAutoRetainCocoaObject kungFuDeathGrip(self);
|
|
||||||
BOOL handled = [self doDragAction:eDrop sender:sender] != NSDragOperationNone;
|
|
||||||
+ if (handled) {
|
|
||||||
+ zen::LandDrop(sender);
|
|
||||||
+ }
|
|
||||||
NS_IF_RELEASE(mDragService);
|
|
||||||
return handled;
|
|
||||||
}
|
|
||||||
@@ -4919,6 +5030,10 @@ - (BOOL)wantsBestResolutionOpenGLSurface {
|
|
||||||
nsCocoaWindow::~nsCocoaWindow() {
|
nsCocoaWindow::~nsCocoaWindow() {
|
||||||
NS_OBJC_BEGIN_TRY_IGNORE_BLOCK;
|
NS_OBJC_BEGIN_TRY_IGNORE_BLOCK;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/widget/cocoa/nsDragService.mm b/widget/cocoa/nsDragService.mm
|
diff --git a/widget/cocoa/nsDragService.mm b/widget/cocoa/nsDragService.mm
|
||||||
index 340a9ad81c5cb23bb7e5f927d11d5cffdde7ce70..ba597ba4373ba3ace7455ce0859f2339349ffc06 100644
|
index 340a9ad81c5cb23bb7e5f927d11d5cffdde7ce70..32fc707ccfa56fa8c307860868d092c4a9050419 100644
|
||||||
--- a/widget/cocoa/nsDragService.mm
|
--- a/widget/cocoa/nsDragService.mm
|
||||||
+++ b/widget/cocoa/nsDragService.mm
|
+++ b/widget/cocoa/nsDragService.mm
|
||||||
@@ -10,6 +10,7 @@
|
@@ -10,6 +10,7 @@
|
||||||
@@ -45,112 +45,3 @@ index 340a9ad81c5cb23bb7e5f927d11d5cffdde7ce70..ba597ba4373ba3ace7455ce0859f2339
|
|||||||
#endif
|
#endif
|
||||||
src += 4;
|
src += 4;
|
||||||
dest += 4;
|
dest += 4;
|
||||||
@@ -249,12 +254,44 @@
|
|
||||||
[[[NSDraggingItem alloc] initWithPasteboardWriter:pbItem] autorelease];
|
|
||||||
[dragItem setDraggingFrame:localDragRect contents:image];
|
|
||||||
|
|
||||||
+ NSMutableArray* dragItems = [NSMutableArray arrayWithObject:dragItem];
|
|
||||||
+ auto zenDragAndDrop = zen::nsZenDragAndDrop::GetZenDragAndDropInstance();
|
|
||||||
+ const nsTArray<nsCOMPtr<nsINode>> noExtraImages;
|
|
||||||
+ @try {
|
|
||||||
+ for (const auto& extraImageNode :
|
|
||||||
+ zenDragAndDrop ? zenDragAndDrop->DragImages() : noExtraImages) {
|
|
||||||
+ nsCOMPtr<nsINode> mainImage = std::move(mImage);
|
|
||||||
+ mImage = extraImageNode;
|
|
||||||
+ NSPoint extraPoint;
|
|
||||||
+ NSImage* extraImage = ConstructDragImage(mSourceNode, aRegion, &extraPoint);
|
|
||||||
+ mImage = std::move(mainImage);
|
|
||||||
+ if (!extraImage) {
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+ NSRect extraRect = extraImage.alignmentRect;
|
|
||||||
+ extraRect.origin.x = extraPoint.x;
|
|
||||||
+ extraRect.origin.y = extraPoint.y - extraRect.size.height;
|
|
||||||
+ NSPasteboardItem* extraPbItem = [[NSPasteboardItem new] autorelease];
|
|
||||||
+ [extraPbItem setData:[NSData data]
|
|
||||||
+ forType:[UTIHelper stringFromPboardType:kMozWildcardPboardType]];
|
|
||||||
+ NSDraggingItem* extraItem = [[[NSDraggingItem alloc]
|
|
||||||
+ initWithPasteboardWriter:extraPbItem] autorelease];
|
|
||||||
+ [extraItem setDraggingFrame:extraRect contents:extraImage];
|
|
||||||
+ [dragItems addObject:extraItem];
|
|
||||||
+ }
|
|
||||||
+ } @catch (NSException* e) {
|
|
||||||
+ dragItems = [NSMutableArray arrayWithObject:dragItem];
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
OpenDragPopup();
|
|
||||||
|
|
||||||
mNSDraggingSession = [mNativeDragView
|
|
||||||
- beginDraggingSessionWithItems:[NSArray arrayWithObject:dragItem]
|
|
||||||
+ beginDraggingSessionWithItems:dragItems
|
|
||||||
event:mNativeDragEvent
|
|
||||||
source:mNativeDragView];
|
|
||||||
+ if (dragItems.count > 1) {
|
|
||||||
+ mNSDraggingSession.draggingFormation = NSDraggingFormationStack;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
mNSDraggingSession.animatesToStartingPositionsOnCancelOrFail =
|
|
||||||
!mDataTransfer || mDataTransfer->MozShowFailAnimation();
|
|
||||||
@@ -455,29 +492,44 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pc) {
|
|
||||||
+ nsPoint pt = LayoutDevicePixel::ToAppUnits(
|
|
||||||
+ devPoint, pc->DeviceContext()->AppUnitsPerDevPixel());
|
|
||||||
+ CSSIntPoint screenPoint =
|
|
||||||
+ CSSIntPoint(nsPresContext::AppUnitsToIntCSSPixels(pt.x),
|
|
||||||
+ nsPresContext::AppUnitsToIntCSSPixels(pt.y));
|
|
||||||
+
|
|
||||||
+ NSMutableArray* images = [NSMutableArray array];
|
|
||||||
+ NSMutableArray* rects = [NSMutableArray array];
|
|
||||||
+ auto render = [&]() {
|
|
||||||
+ LayoutDeviceIntRect newRect;
|
|
||||||
+ NSImage* image =
|
|
||||||
+ ConstructDragImage(mSourceNode, Nothing(), screenPoint, &newRect);
|
|
||||||
+ [images addObject:image ? (id)image : (id)[NSNull null]];
|
|
||||||
+ [rects addObject:[NSValue valueWithRect:
|
|
||||||
+ image ? nsCocoaUtils::GeckoRectToCocoaRectDevPix(
|
|
||||||
+ newRect, scaleFactor)
|
|
||||||
+ : NSZeroRect]];
|
|
||||||
+ };
|
|
||||||
+ render();
|
|
||||||
+ if (auto zenDragAndDrop = zen::nsZenDragAndDrop::GetZenDragAndDropInstance()) {
|
|
||||||
+ for (const auto& extraImageNode : zenDragAndDrop->DragImages()) {
|
|
||||||
+ nsCOMPtr<nsINode> mainImage = std::move(mImage);
|
|
||||||
+ mImage = extraImageNode;
|
|
||||||
+ render();
|
|
||||||
+ mImage = std::move(mainImage);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
void (^changeImageBlock)(NSDraggingItem*, NSInteger, BOOL*) = ^(
|
|
||||||
NSDraggingItem* draggingItem, NSInteger idx, BOOL* stop) {
|
|
||||||
- // We never add more than one item right now, but check just in case.
|
|
||||||
- if (idx > 0) {
|
|
||||||
+ if ((NSUInteger)idx >= images.count || images[idx] == [NSNull null]) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- nsPoint pt = LayoutDevicePixel::ToAppUnits(
|
|
||||||
- devPoint, pc->DeviceContext()->AppUnitsPerDevPixel());
|
|
||||||
- CSSIntPoint screenPoint =
|
|
||||||
- CSSIntPoint(nsPresContext::AppUnitsToIntCSSPixels(pt.x),
|
|
||||||
- nsPresContext::AppUnitsToIntCSSPixels(pt.y));
|
|
||||||
-
|
|
||||||
- // Create a new image; if one isn't returned don't change the current
|
|
||||||
- // one.
|
|
||||||
- LayoutDeviceIntRect newRect;
|
|
||||||
- NSImage* image =
|
|
||||||
- ConstructDragImage(mSourceNode, Nothing(), screenPoint, &newRect);
|
|
||||||
- if (image) {
|
|
||||||
- NSRect draggingRect =
|
|
||||||
- nsCocoaUtils::GeckoRectToCocoaRectDevPix(newRect, scaleFactor);
|
|
||||||
- [draggingItem setDraggingFrame:draggingRect contents:image];
|
|
||||||
+ NSRect frame = [rects[idx] rectValue];
|
|
||||||
+ if (idx > 0) {
|
|
||||||
+ frame.origin = draggingItem.draggingFrame.origin;
|
|
||||||
}
|
|
||||||
+ [draggingItem setDraggingFrame:frame contents:images[idx]];
|
|
||||||
};
|
|
||||||
|
|
||||||
[mNSDraggingSession
|
|
||||||
|
|||||||
@@ -69,9 +69,7 @@ export class nsZenBoostEditor {
|
|||||||
* @returns {ZenBoostsParent} Boost JSActor parent
|
* @returns {ZenBoostsParent} Boost JSActor parent
|
||||||
*/
|
*/
|
||||||
get zenBoostsParent() {
|
get zenBoostsParent() {
|
||||||
const linkedBrowser =
|
const linkedBrowser = this.openerWindow.gBrowser.selectedTab.linkedBrowser;
|
||||||
this.editorWindow.browser ??
|
|
||||||
this.openerWindow.gBrowser.selectedTab.linkedBrowser;
|
|
||||||
const actor =
|
const actor =
|
||||||
linkedBrowser.browsingContext.currentWindowGlobal.getActor("ZenBoosts");
|
linkedBrowser.browsingContext.currentWindowGlobal.getActor("ZenBoosts");
|
||||||
return actor;
|
return actor;
|
||||||
@@ -1523,7 +1521,7 @@ ${cssSelector} {
|
|||||||
shuffleBoost() {
|
shuffleBoost() {
|
||||||
const availFonts = this.fetchFontList();
|
const availFonts = this.fetchFontList();
|
||||||
const commonFonts = this.commonFonts;
|
const commonFonts = this.commonFonts;
|
||||||
let font = commonFonts[Math.floor(Math.random() * commonFonts.length)];
|
let font = commonFonts[Math.round(Math.random() * commonFonts.length)];
|
||||||
if (availFonts.includes(font)) {
|
if (availFonts.includes(font)) {
|
||||||
this.currentBoostData.fontFamily = font;
|
this.currentBoostData.fontFamily = font;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -606,12 +606,9 @@ class nsZenBoostsManager {
|
|||||||
* @param {Window} parentWindow - The parent browser window
|
* @param {Window} parentWindow - The parent browser window
|
||||||
* @param {Boost} boost - The boost which will be edited
|
* @param {Boost} boost - The boost which will be edited
|
||||||
* @param {nsIURI} domainUri - The boost which will be edited
|
* @param {nsIURI} domainUri - The boost which will be edited
|
||||||
* @param {object} [options]
|
|
||||||
* @param {Element} [options.browser] - Browser showing the site when it is
|
|
||||||
* not the selected tab, e.g. a detached glance
|
|
||||||
* @returns {Window|null} The instanced editor window
|
* @returns {Window|null} The instanced editor window
|
||||||
*/
|
*/
|
||||||
openBoostWindow(parentWindow, boost, domainUri, { browser = null } = {}) {
|
openBoostWindow(parentWindow, boost, domainUri) {
|
||||||
if (!this.canBoostSite(domainUri)) {
|
if (!this.canBoostSite(domainUri)) {
|
||||||
console.error(
|
console.error(
|
||||||
"[ZenBoostsManager] Cannot open editor for boost with invalid domain."
|
"[ZenBoostsManager] Cannot open editor for boost with invalid domain."
|
||||||
@@ -651,48 +648,26 @@ class nsZenBoostsManager {
|
|||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Close the editor if the tab is switched
|
||||||
|
parentWindow.gBrowser.tabContainer.addEventListener(
|
||||||
|
"TabSelect",
|
||||||
|
editor.close.bind(editor),
|
||||||
|
{
|
||||||
|
once: true,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
const progressListener = {
|
const progressListener = {
|
||||||
QueryInterface: ChromeUtils.generateQI(["nsIWebProgressListener"]),
|
|
||||||
onLocationChange: webProgress => {
|
onLocationChange: webProgress => {
|
||||||
if (webProgress.isTopLevel) {
|
if (webProgress.isTopLevel) {
|
||||||
editor.close();
|
editor.close();
|
||||||
|
parentWindow.gBrowser.removeTabsProgressListener(progressListener);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const onTabSelect = editor.close.bind(editor);
|
|
||||||
if (browser) {
|
|
||||||
browser.addProgressListener(progressListener);
|
|
||||||
editor.addEventListener(
|
|
||||||
"unload",
|
|
||||||
() => {
|
|
||||||
browser.removeProgressListener(progressListener);
|
|
||||||
editor.browser = null;
|
|
||||||
},
|
|
||||||
{ once: true }
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
// Close the editor if the tab is switched or navigates.
|
|
||||||
parentWindow.gBrowser.tabContainer.addEventListener(
|
|
||||||
"TabSelect",
|
|
||||||
onTabSelect,
|
|
||||||
{ once: true }
|
|
||||||
);
|
|
||||||
parentWindow.gBrowser.addProgressListener(progressListener);
|
|
||||||
editor.addEventListener(
|
|
||||||
"unload",
|
|
||||||
() => {
|
|
||||||
parentWindow.gBrowser.tabContainer.removeEventListener(
|
|
||||||
"TabSelect",
|
|
||||||
onTabSelect
|
|
||||||
);
|
|
||||||
parentWindow.gBrowser.removeProgressListener(progressListener);
|
|
||||||
editor.browser = null;
|
|
||||||
},
|
|
||||||
{ once: true }
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
editor.browser = browser;
|
parentWindow.gBrowser.addProgressListener(progressListener);
|
||||||
|
|
||||||
// Give the domain
|
// Give the domain
|
||||||
editor.domain = domain;
|
editor.domain = domain;
|
||||||
editor.openerWindow = parentWindow;
|
editor.openerWindow = parentWindow;
|
||||||
|
|||||||
@@ -70,10 +70,8 @@ export class ZenBoostsChild extends JSWindowActorChild {
|
|||||||
|
|
||||||
static PREVENTABLE_SET = new Set(ZenBoostsChild.PREVENTABLE_EVENTS);
|
static PREVENTABLE_SET = new Set(ZenBoostsChild.PREVENTABLE_EVENTS);
|
||||||
|
|
||||||
handleEvent(event) {
|
actorCreated() {
|
||||||
if (event.type === "DOMDocElementInserted") {
|
this.#applyBoostForPageIfAvailable();
|
||||||
this.#applyBoostForPageIfAvailable();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
didDestroy() {
|
didDestroy() {
|
||||||
@@ -332,22 +330,6 @@ export class ZenBoostsChild extends JSWindowActorChild {
|
|||||||
return this.sendQuery("ZenBoost:GetBoostForDomain", domain);
|
return this.sendQuery("ZenBoost:GetBoostForDomain", domain);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets a synced BrowsingContext field only when its value changes. Every
|
|
||||||
* setter commits a transaction that is broadcast to the whole browsing
|
|
||||||
* context group, even when the value is unchanged, so this avoids three
|
|
||||||
* such broadcasts on every page load that has no boost.
|
|
||||||
*
|
|
||||||
* @param {BrowsingContext} browsingContext
|
|
||||||
* @param {string} field - The synced field name.
|
|
||||||
* @param {number | boolean} value
|
|
||||||
*/
|
|
||||||
#setSyncedField(browsingContext, field, value) {
|
|
||||||
if (browsingContext[field] !== value) {
|
|
||||||
browsingContext[field] = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Applies the boost settings for the current page if available.
|
* Applies the boost settings for the current page if available.
|
||||||
*
|
*
|
||||||
@@ -378,11 +360,7 @@ export class ZenBoostsChild extends JSWindowActorChild {
|
|||||||
sizeOverride: boostData.sizeOverride,
|
sizeOverride: boostData.sizeOverride,
|
||||||
});
|
});
|
||||||
|
|
||||||
this.#setSyncedField(
|
browsingContext.isZenBoostsInverted = boostData.smartInvert;
|
||||||
browsingContext,
|
|
||||||
"isZenBoostsInverted",
|
|
||||||
!!boostData.smartInvert
|
|
||||||
);
|
|
||||||
if (boostData.enableColorBoost) {
|
if (boostData.enableColorBoost) {
|
||||||
let primaryColor;
|
let primaryColor;
|
||||||
if (boostData.autoTheme) {
|
if (boostData.autoTheme) {
|
||||||
@@ -418,21 +396,18 @@ export class ZenBoostsChild extends JSWindowActorChild {
|
|||||||
boostData
|
boostData
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
this.#setSyncedField(browsingContext, "zenBoostsData", primaryColor);
|
browsingContext.zenBoostsData = primaryColor;
|
||||||
// The complementary accent is derived in the backend by rotating the
|
// The complementary accent is derived in the backend by rotating the
|
||||||
// primary accent's hue by this delta (in degrees).
|
// primary accent's hue by this delta (in degrees).
|
||||||
this.#setSyncedField(
|
browsingContext.zenBoostsComplementaryRotation =
|
||||||
browsingContext,
|
boostData.secondaryDotAngleDegDelta ?? 0;
|
||||||
"zenBoostsComplementaryRotation",
|
|
||||||
boostData.secondaryDotAngleDegDelta ?? 0
|
|
||||||
);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.#setSyncedField(browsingContext, "isZenBoostsInverted", false);
|
browsingContext.isZenBoostsInverted = false;
|
||||||
}
|
}
|
||||||
this.#setSyncedField(browsingContext, "zenBoostsData", 0);
|
browsingContext.zenBoostsData = 0;
|
||||||
this.#setSyncedField(browsingContext, "zenBoostsComplementaryRotation", 0);
|
browsingContext.zenBoostsComplementaryRotation = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
"chrome://browser/content/zen-components/ZenEmojiPicker.mjs",
|
"chrome://browser/content/zen-components/ZenEmojiPicker.mjs",
|
||||||
"chrome://browser/content/zen-components/ZenLiveFoldersUI.mjs",
|
"chrome://browser/content/zen-components/ZenLiveFoldersUI.mjs",
|
||||||
"chrome://browser/content/zen-components/ZenDownloadAnimation.mjs",
|
"chrome://browser/content/zen-components/ZenDownloadAnimation.mjs",
|
||||||
"resource:///modules/zen/share/ZenShareManager.mjs",
|
"moz-src:///zen/library/ZenLibraryButton.mjs",
|
||||||
];
|
];
|
||||||
|
|
||||||
for (let script of scripts) {
|
for (let script of scripts) {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
content/browser/zen-styles/zen-browser-ui.css (../../zen/common/styles/zen-browser-ui.css)
|
content/browser/zen-styles/zen-browser-ui.css (../../zen/common/styles/zen-browser-ui.css)
|
||||||
content/browser/zen-styles/zen-animations.css (../../zen/common/styles/zen-animations.css)
|
content/browser/zen-styles/zen-animations.css (../../zen/common/styles/zen-animations.css)
|
||||||
content/browser/zen-styles/zen-panel-ui.css (../../zen/common/styles/zen-panel-ui.css)
|
content/browser/zen-styles/zen-panel-ui.css (../../zen/common/styles/zen-panel-ui.css)
|
||||||
* content/browser/zen-styles/zen-single-components.css (../../zen/common/styles/zen-single-components.css)
|
content/browser/zen-styles/zen-single-components.css (../../zen/common/styles/zen-single-components.css)
|
||||||
content/browser/zen-styles/zen-sidebar.css (../../zen/common/styles/zen-sidebar.css)
|
content/browser/zen-styles/zen-sidebar.css (../../zen/common/styles/zen-sidebar.css)
|
||||||
* content/browser/zen-styles/zen-toolbar.css (../../zen/common/styles/zen-toolbar.css)
|
* content/browser/zen-styles/zen-toolbar.css (../../zen/common/styles/zen-toolbar.css)
|
||||||
content/browser/zen-styles/zen-browser-container.css (../../zen/common/styles/zen-browser-container.css)
|
content/browser/zen-styles/zen-browser-container.css (../../zen/common/styles/zen-browser-container.css)
|
||||||
|
|||||||
@@ -146,20 +146,6 @@ window.gZenUIManager = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* Shakes an element from side to side to catch the user's eye.
|
|
||||||
*
|
|
||||||
* @param {Element} element
|
|
||||||
* @param {number} delay Milliseconds to wait before shaking.
|
|
||||||
*/
|
|
||||||
shakeElement(element, delay = 0) {
|
|
||||||
return this.elementAnimate(
|
|
||||||
element,
|
|
||||||
{ x: [0, -12, 8, -4, 2, 0] },
|
|
||||||
{ duration: 600, delay, easing: "ease-out" }
|
|
||||||
);
|
|
||||||
},
|
|
||||||
|
|
||||||
_addNewCustomizableButtonsIfNeeded() {
|
_addNewCustomizableButtonsIfNeeded() {
|
||||||
const kPref = "zen.ui.migration.compact-mode-button-added";
|
const kPref = "zen.ui.migration.compact-mode-button-added";
|
||||||
let navbarPlacements = CustomizableUI.getWidgetIdsInArea(
|
let navbarPlacements = CustomizableUI.getWidgetIdsInArea(
|
||||||
@@ -271,7 +257,7 @@ window.gZenUIManager = {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
updateTabsToolbar(fromResizeEvent = false) {
|
updateTabsToolbar() {
|
||||||
const kUrlbarHeight = 333;
|
const kUrlbarHeight = 333;
|
||||||
gURLBar.style.setProperty(
|
gURLBar.style.setProperty(
|
||||||
"--zen-urlbar-top",
|
"--zen-urlbar-top",
|
||||||
@@ -284,8 +270,8 @@ window.gZenUIManager = {
|
|||||||
gZenVerticalTabsManager.actualWindowButtons.removeAttribute(
|
gZenVerticalTabsManager.actualWindowButtons.removeAttribute(
|
||||||
"zen-has-hover"
|
"zen-has-hover"
|
||||||
);
|
);
|
||||||
gZenVerticalTabsManager.recalculateURLBarHeight(!fromResizeEvent);
|
gZenVerticalTabsManager.recalculateURLBarHeight(true);
|
||||||
if (!this._preventToolbarRebuild && !fromResizeEvent) {
|
if (!this._preventToolbarRebuild) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
gZenWorkspaces.updateTabsContainers();
|
gZenWorkspaces.updateTabsContainers();
|
||||||
}, 0);
|
}, 0);
|
||||||
@@ -1004,7 +990,14 @@ window.gZenVerticalTabsManager = {
|
|||||||
});
|
});
|
||||||
|
|
||||||
ChromeUtils.defineLazyGetter(this, "hidesTabsToolbar", () => {
|
ChromeUtils.defineLazyGetter(this, "hidesTabsToolbar", () => {
|
||||||
return document.documentElement.hasAttribute("popup-window");
|
return (
|
||||||
|
document.documentElement
|
||||||
|
.getAttribute("chromehidden")
|
||||||
|
?.includes("toolbar") ||
|
||||||
|
document.documentElement
|
||||||
|
.getAttribute("chromehidden")
|
||||||
|
?.includes("menubar")
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
XPCOMUtils.defineLazyPreferenceGetter(
|
XPCOMUtils.defineLazyPreferenceGetter(
|
||||||
@@ -1285,16 +1278,8 @@ window.gZenVerticalTabsManager = {
|
|||||||
if (gZenWorkspaces._processingResize) {
|
if (gZenWorkspaces._processingResize) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this._pendingUrlbarFormatUpdate ||= updateFormat;
|
|
||||||
if (this._urlbarHeightRecalcScheduled) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this._urlbarHeightRecalcScheduled = true;
|
|
||||||
requestAnimationFrame(() => {
|
requestAnimationFrame(() => {
|
||||||
requestAnimationFrame(() => {
|
requestAnimationFrame(() => {
|
||||||
delete this._urlbarHeightRecalcScheduled;
|
|
||||||
const shouldUpdateFormat = this._pendingUrlbarFormatUpdate;
|
|
||||||
delete this._pendingUrlbarFormatUpdate;
|
|
||||||
gURLBar.removeAttribute("--urlbar-height");
|
gURLBar.removeAttribute("--urlbar-height");
|
||||||
let height;
|
let height;
|
||||||
if (!this._hasSetSingleToolbar) {
|
if (!this._hasSetSingleToolbar) {
|
||||||
@@ -1305,7 +1290,7 @@ window.gZenVerticalTabsManager = {
|
|||||||
if (typeof height !== "undefined") {
|
if (typeof height !== "undefined") {
|
||||||
gURLBar.style.setProperty("--urlbar-height", `${height}px`);
|
gURLBar.style.setProperty("--urlbar-height", `${height}px`);
|
||||||
}
|
}
|
||||||
if (shouldUpdateFormat) {
|
if (updateFormat) {
|
||||||
gURLBar.zenFormatURLValue();
|
gURLBar.zenFormatURLValue();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -1418,37 +1403,18 @@ window.gZenVerticalTabsManager = {
|
|||||||
|
|
||||||
if (isSingleToolbar) {
|
if (isSingleToolbar) {
|
||||||
this._navbarParent = navBar.parentElement;
|
this._navbarParent = navBar.parentElement;
|
||||||
let elements = Array.from(
|
let elements = document.querySelectorAll(
|
||||||
document.querySelectorAll(
|
'#nav-bar-customization-target > :is([cui-areatype="toolbar"], .chromeclass-toolbar-additional):not(#urlbar-container):not(toolbarspring)'
|
||||||
'#nav-bar-customization-target > :is([cui-areatype="toolbar"], .chromeclass-toolbar-additional):not(#urlbar-container):not(toolbarspring)'
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
let normalButtons = [];
|
elements = Array.from(elements).reverse();
|
||||||
let extensionButtons = [];
|
|
||||||
for (const element of elements) {
|
|
||||||
if (
|
|
||||||
element.hasAttribute("data-extensionid") &&
|
|
||||||
Services.prefs.getBoolPref("zen.view.overflow-webext-toolbar", true)
|
|
||||||
) {
|
|
||||||
extensionButtons.push(element);
|
|
||||||
} else {
|
|
||||||
normalButtons.push(element);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Add separator if it doesn't exist
|
// Add separator if it doesn't exist
|
||||||
if (!this._hasSetSingleToolbar) {
|
if (!this._hasSetSingleToolbar) {
|
||||||
buttonsTarget.append(this._topButtonsSeparatorElement);
|
buttonsTarget.append(this._topButtonsSeparatorElement);
|
||||||
}
|
}
|
||||||
this._hasSetSingleToolbar = true;
|
this._hasSetSingleToolbar = true;
|
||||||
for (const button of normalButtons.reverse()) {
|
for (const button of elements) {
|
||||||
this.appendCustomizableItem(this._topButtonsSeparatorElement, button);
|
this.appendCustomizableItem(this._topButtonsSeparatorElement, button);
|
||||||
}
|
}
|
||||||
for (const extension of extensionButtons) {
|
|
||||||
this.appendCustomizableItem(
|
|
||||||
this._topButtonsSeparatorElement,
|
|
||||||
extension
|
|
||||||
);
|
|
||||||
}
|
|
||||||
buttonsTarget.prepend(
|
buttonsTarget.prepend(
|
||||||
document.getElementById("unified-extensions-button")
|
document.getElementById("unified-extensions-button")
|
||||||
);
|
);
|
||||||
@@ -1609,7 +1575,13 @@ window.gZenVerticalTabsManager = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
rebuildURLBarMenus() {
|
rebuildURLBarMenus() {
|
||||||
gURLBar.updatePlaceholder();
|
if (document.getElementById("paste-and-go")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
gURLBar._initCopyCutController();
|
||||||
|
gURLBar._initPasteAndGo();
|
||||||
|
gURLBar._initStripOnShare();
|
||||||
|
gURLBar._updatePlaceholderFromDefaultEngine();
|
||||||
},
|
},
|
||||||
|
|
||||||
rebuildAreas() {
|
rebuildAreas() {
|
||||||
|
|||||||
@@ -1,37 +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/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Upstream elements that take their radius from --border-radius-circle (9999px).
|
|
||||||
They are meant to read as circles or pills, so a superellipse only makes them
|
|
||||||
look lumpy. */
|
|
||||||
.tab-icon-overlay:not([crashed]):is([soundplaying], [muted], [activemedia-blocked]),
|
|
||||||
.tab-note-icon-overlay,
|
|
||||||
.tab-group-overflow-count,
|
|
||||||
.tab-group-editor-swatch,
|
|
||||||
.tab-preview-container-indicator,
|
|
||||||
.tab-preview-thumbnail-container > canvas,
|
|
||||||
#tabbrowser-tabs[orient='vertical']:not([expanded]) .tab-close-button,
|
|
||||||
.all-tabs-item > toolbarbutton.all-tabs-container-indicator::before,
|
|
||||||
.urlbarView-button,
|
|
||||||
.downloadButton,
|
|
||||||
.titlebar-button,
|
|
||||||
.titlebar-button .toolbarbutton-icon,
|
|
||||||
#downloads-indicator-progress-inner,
|
|
||||||
#smartwindow-ask-button-inner,
|
|
||||||
#PanelUI-fxa-menu-manage-account-button,
|
|
||||||
.fxa-menu-manage-account-avatar,
|
|
||||||
[fxastatus='signedin'] #fxa-avatar-image,
|
|
||||||
#profile-icon-image,
|
|
||||||
.appMenu-update-banner-pulse-ring,
|
|
||||||
.urlbarView-favicon,
|
|
||||||
:is(#appMenu-zoomReduce-button2, #appMenu-zoomEnlarge-button2) > .toolbarbutton-icon,
|
|
||||||
.color-swatches .userContext-icon,
|
|
||||||
.reusable-relay-masks > button,
|
|
||||||
.radio-check,
|
|
||||||
#zen-loading-progress-bar,
|
|
||||||
#statuspanel-label {
|
|
||||||
corner-shape: round;
|
|
||||||
}
|
|
||||||
@@ -4,38 +4,6 @@
|
|||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@keyframes library-badge-download {
|
|
||||||
0% {
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
20% {
|
|
||||||
transform: translateY(12px);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes zen-library-sprite-hover {
|
|
||||||
from {
|
|
||||||
background-position-x: 0%;
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
background-position-x: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes zen-library-sprite-unhover {
|
|
||||||
from {
|
|
||||||
background-position-x: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
background-position-x: 0%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes zen-back-and-forth-text {
|
@keyframes zen-back-and-forth-text {
|
||||||
0%,
|
0%,
|
||||||
10% {
|
10% {
|
||||||
|
|||||||
@@ -3,19 +3,13 @@
|
|||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
:root:not([inDOMFullscreen="true"]):not([popup-window]) {
|
:root:not([inDOMFullscreen="true"]):not([chromehidden~="location"]):not([chromehidden~="toolbar"]) {
|
||||||
& #tabbrowser-tabbox #tabbrowser-tabpanels .browserSidebarContainer {
|
& #tabbrowser-tabbox #tabbrowser-tabpanels .browserSidebarContainer {
|
||||||
--zen-transparent-browser-background: light-dark(rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.1));
|
|
||||||
overflow: clip;
|
overflow: clip;
|
||||||
|
|
||||||
:root:not([zen-no-padding="true"]) &:not(.zen-glance-overlay) {
|
:root:not([zen-no-padding="true"]) &:not(.zen-glance-overlay) {
|
||||||
border-radius: var(--zen-native-inner-radius);
|
border-radius: var(--zen-native-inner-radius);
|
||||||
box-shadow: var(--zen-big-shadow);
|
box-shadow: var(--zen-big-shadow);
|
||||||
@media not (-moz-pref("zen.theme.squircle-browser-view")) {
|
|
||||||
/* stylelint-disable-next-line property-no-unknown */
|
|
||||||
corner-shape: round;
|
|
||||||
border-radius: calc(var(--zen-native-inner-radius) / var(--zen-squircle-value));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
& browser[type="content"] {
|
& browser[type="content"] {
|
||||||
@@ -24,7 +18,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&[transparent="true"] {
|
&[transparent="true"] {
|
||||||
background: var(--zen-transparent-browser-background);
|
background: light-dark(rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ body,
|
|||||||
position: inherit;
|
position: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
:root:is([inDOMFullscreen="true"], [popup-window]) {
|
:root:is([inDOMFullscreen="true"], [chromehidden~="location"], [chromehidden~="toolbar"]) {
|
||||||
#navigator-toolbox,
|
#navigator-toolbox,
|
||||||
#zen-sidebar-splitter {
|
#zen-sidebar-splitter {
|
||||||
visibility: collapse;
|
visibility: collapse;
|
||||||
@@ -61,7 +61,7 @@ body,
|
|||||||
background: var(--zen-main-browser-background);
|
background: var(--zen-main-browser-background);
|
||||||
opacity: var(--zen-background-opacity);
|
opacity: var(--zen-background-opacity);
|
||||||
transition: 0s;
|
transition: 0s;
|
||||||
background-blend-mode: lighten;
|
background-blend-mode: screen;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:is(.zen-toolbar-background) {
|
&:is(.zen-toolbar-background) {
|
||||||
@@ -74,7 +74,7 @@ body,
|
|||||||
background: var(--zen-main-browser-background-old);
|
background: var(--zen-main-browser-background-old);
|
||||||
opacity: calc(1 - var(--zen-background-opacity));
|
opacity: calc(1 - var(--zen-background-opacity));
|
||||||
transition: 0s;
|
transition: 0s;
|
||||||
background-blend-mode: lighten;
|
background-blend-mode: screen;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:is(.zen-toolbar-background) {
|
&:is(.zen-toolbar-background) {
|
||||||
@@ -152,7 +152,7 @@ body,
|
|||||||
}
|
}
|
||||||
|
|
||||||
& > * {
|
& > * {
|
||||||
z-index: var(--zen-main-app-child-z-index, 1);
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* stylelint-disable-next-line media-query-no-invalid */
|
/* stylelint-disable-next-line media-query-no-invalid */
|
||||||
@@ -170,7 +170,7 @@ body,
|
|||||||
min-width: 1px;
|
min-width: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:root:not([inDOMFullscreen="true"]):not([popup-window]) {
|
:root:not([inDOMFullscreen="true"]):not([chromehidden~="location"]):not([chromehidden~="toolbar"]) {
|
||||||
& #zen-tabbox-wrapper {
|
& #zen-tabbox-wrapper {
|
||||||
margin: var(--zen-element-separation);
|
margin: var(--zen-element-separation);
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
|
|||||||
@@ -78,52 +78,3 @@ dialog::part(dialog-button) {
|
|||||||
scale: 0.98;
|
scale: 0.98;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:root {
|
|
||||||
--zen-accent-button-color: light-dark(
|
|
||||||
oklch(from var(--zen-primary-color) clamp(0.35, l, 0.6) c h),
|
|
||||||
oklch(from var(--zen-primary-color) clamp(0.7, l, 0.85) c h)
|
|
||||||
);
|
|
||||||
--zen-accent-button-background: light-dark(
|
|
||||||
oklch(from var(--zen-primary-color) clamp(0.35, l, 0.6) c h),
|
|
||||||
oklch(from var(--zen-primary-color) clamp(0.55, l, 0.7) c h)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
.zen-big-accent-button {
|
|
||||||
appearance: none;
|
|
||||||
border: none;
|
|
||||||
border-radius: 12px;
|
|
||||||
padding: 1.2rem 1rem;
|
|
||||||
background: transparent;
|
|
||||||
color: var(--zen-accent-button-color);
|
|
||||||
font: inherit;
|
|
||||||
font-size: 1.2rem;
|
|
||||||
font-weight: 600;
|
|
||||||
cursor: pointer;
|
|
||||||
will-change: transform;
|
|
||||||
transition: scale 0.15s ease-out;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
scale: 1.03;
|
|
||||||
filter: brightness(1.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
&:active:hover {
|
|
||||||
scale: 1;
|
|
||||||
color: color-mix(in srgb, var(--zen-accent-button-color) 80%, transparent);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.primary {
|
|
||||||
background: var(--zen-accent-button-background);
|
|
||||||
color: white;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
filter: brightness(1.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
&:active:hover {
|
|
||||||
color: rgba(255, 255, 255, 0.8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,305 +0,0 @@
|
|||||||
|
|
||||||
@property --zen-library-progress {
|
|
||||||
syntax: "<number>";
|
|
||||||
inherits: true;
|
|
||||||
initial-value: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#zen-sidebar-foot-buttons,
|
|
||||||
#tabbrowser-tabs {
|
|
||||||
--zen-library-open-duration: 0.3s;
|
|
||||||
--zen-library-open-easing: cubic-bezier(0.22, 1, 0.36, 1);
|
|
||||||
--zen-library-entry-easing: linear(0, 0.34 12%, 0.7 24%, 0.93 38%, 1.03 55%, 1);
|
|
||||||
transition: --zen-library-progress var(--zen-library-open-duration) var(--zen-library-open-easing);
|
|
||||||
|
|
||||||
&[zen-library-stack-open] {
|
|
||||||
--zen-library-progress: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#zen-library-button {
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
--zen-library-sprite-size: 18px;
|
|
||||||
&::before {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
width: var(--zen-library-sprite-size);
|
|
||||||
height: var(--zen-library-sprite-size);
|
|
||||||
background-image: url("chrome://browser/skin/zen-icons/library/library-sprite.svg");
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-reduced-motion: no-preference) {
|
|
||||||
&::before {
|
|
||||||
animation: zen-library-sprite-unhover 0.3s steps(36, jump-none);
|
|
||||||
}
|
|
||||||
&:hover::before {
|
|
||||||
animation: zen-library-sprite-hover 0.35s steps(36, jump-none) forwards;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#zen-library-button > .toolbarbutton-badge-stack {
|
|
||||||
position: absolute;
|
|
||||||
inset: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: none !important;
|
|
||||||
pointer-events: none;
|
|
||||||
|
|
||||||
&[downloading] {
|
|
||||||
animation: 0.4s library-badge-download ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The badge flies from its spot on the button to the newest entry's badge
|
|
||||||
* along an arc, the target being set as the list opens. */
|
|
||||||
& #library-button-badge {
|
|
||||||
position: absolute;
|
|
||||||
margin: 0 !important;
|
|
||||||
transform-origin: left top;
|
|
||||||
|
|
||||||
--zen-library-badge-x: 14px;
|
|
||||||
--zen-library-badge-y: -8px;
|
|
||||||
--zen-library-badge-to-x: var(--zen-library-badge-x);
|
|
||||||
--zen-library-badge-to-y: var(--zen-library-badge-y);
|
|
||||||
--zen-library-badge-mid-x: calc(
|
|
||||||
(var(--zen-library-badge-x) + var(--zen-library-badge-to-x)) / 2 +
|
|
||||||
abs(var(--zen-library-badge-to-y) - var(--zen-library-badge-y)) / 2
|
|
||||||
);
|
|
||||||
--zen-library-badge-mid-y: calc(
|
|
||||||
(var(--zen-library-badge-y) + var(--zen-library-badge-to-y)) / 2 -
|
|
||||||
abs(var(--zen-library-badge-to-x) - var(--zen-library-badge-x)) / 2
|
|
||||||
);
|
|
||||||
--zen-library-left: calc(1 - var(--zen-library-progress));
|
|
||||||
left: calc(
|
|
||||||
var(--zen-library-left) * var(--zen-library-left) * var(--zen-library-badge-x) +
|
|
||||||
2 * var(--zen-library-left) * var(--zen-library-progress) * var(--zen-library-badge-mid-x) +
|
|
||||||
var(--zen-library-progress) * var(--zen-library-progress) * var(--zen-library-badge-to-x)
|
|
||||||
);
|
|
||||||
top: calc(
|
|
||||||
var(--zen-library-left) * var(--zen-library-left) * var(--zen-library-badge-y) +
|
|
||||||
2 * var(--zen-library-left) * var(--zen-library-progress) * var(--zen-library-badge-mid-y) +
|
|
||||||
var(--zen-library-progress) * var(--zen-library-progress) * var(--zen-library-badge-to-y)
|
|
||||||
);
|
|
||||||
|
|
||||||
&:not([downloading]) {
|
|
||||||
transform: scale(calc((var(--zen-library-progress) * 0.5 + 0.5) * 100%));
|
|
||||||
}
|
|
||||||
|
|
||||||
&[downloading] {
|
|
||||||
transform: scale(calc((var(--zen-library-progress) * 0.2 + 0.8) * 100%));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#library-button-badge,
|
|
||||||
#zen-sidebar-foot-buttons[zen-library-badge] #zen-library-download-list > :last-child .zen-library-download-badge {
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
#zen-sidebar-foot-buttons[zen-library-badge] {
|
|
||||||
& #library-button-badge {
|
|
||||||
visibility: visible;
|
|
||||||
}
|
|
||||||
|
|
||||||
&[zen-library-stack-open] {
|
|
||||||
& #library-button-badge {
|
|
||||||
visibility: hidden;
|
|
||||||
transition: visibility 0s var(--zen-library-open-duration);
|
|
||||||
}
|
|
||||||
|
|
||||||
& #zen-library-download-list > :last-child .zen-library-download-badge {
|
|
||||||
visibility: visible;
|
|
||||||
transition: visibility 0s var(--zen-library-open-duration);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.zen-library-download-badge {
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.zen-library-download-badge:not([downloading]) {
|
|
||||||
background-image: var(--download-image);
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
border-radius: 8px;
|
|
||||||
background-size: cover;
|
|
||||||
scale: 2;
|
|
||||||
|
|
||||||
& .zen-library-download-progress {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.zen-library-download-badge[downloading] {
|
|
||||||
will-change: transform;
|
|
||||||
align-self: start;
|
|
||||||
transform: translateX(-2px);
|
|
||||||
|
|
||||||
--border-color: color-mix(in srgb, var(--zen-primary-color), light-dark(rgba(0,0,0,.8), white) 70%);
|
|
||||||
|
|
||||||
background-color: color-mix(in srgb, var(--zen-primary-color), light-dark(white, rgba(0,0,0,.5)) 80%);
|
|
||||||
border: 3px solid var(--border-color);
|
|
||||||
box-shadow: 0 0 6px 2px rgba(0,0,0,.1);
|
|
||||||
color: var(--border-color);
|
|
||||||
width: 25px;
|
|
||||||
height: 25px;
|
|
||||||
border-radius: 100%;
|
|
||||||
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.zen-library-download-badge[downloading]::after {
|
|
||||||
background-image: url("chrome://browser/skin/zen-icons/forward.svg");
|
|
||||||
rotate: 90deg;
|
|
||||||
|
|
||||||
position: absolute;
|
|
||||||
content: '';
|
|
||||||
background-size: contain;
|
|
||||||
inset: 2px;
|
|
||||||
fill: currentColor;
|
|
||||||
-moz-context-properties: fill;
|
|
||||||
}
|
|
||||||
|
|
||||||
.zen-library-download-progress {
|
|
||||||
position: absolute;
|
|
||||||
inset: 1px;
|
|
||||||
border-radius: 50%;
|
|
||||||
|
|
||||||
--badge-size: 25px;
|
|
||||||
--border-width: 4px;
|
|
||||||
--size: calc(var(--badge-size) + 2 * var(--border-width));
|
|
||||||
margin: calc(-1 * var(--border-width));
|
|
||||||
|
|
||||||
--thickness: 3px;
|
|
||||||
--progress: var(--zen-accent-button-background);
|
|
||||||
|
|
||||||
background: conic-gradient(
|
|
||||||
from -0deg,
|
|
||||||
var(--progress) calc(var(--value) * 1%),
|
|
||||||
transparent 0
|
|
||||||
);
|
|
||||||
|
|
||||||
mask: radial-gradient(
|
|
||||||
circle closest-side,
|
|
||||||
transparent calc(100% - var(--thickness)),
|
|
||||||
black calc(100% - var(--thickness))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#zen-library-download-list {
|
|
||||||
width: 100%;
|
|
||||||
height: auto;
|
|
||||||
|
|
||||||
position: absolute;
|
|
||||||
bottom: 100%;
|
|
||||||
|
|
||||||
visibility: hidden;
|
|
||||||
transition: visibility 0s var(--zen-library-open-duration);
|
|
||||||
|
|
||||||
#zen-sidebar-foot-buttons[zen-library-stack-open] & {
|
|
||||||
visibility: visible;
|
|
||||||
transition: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
padding: 0;
|
|
||||||
padding-top: 10px;
|
|
||||||
gap: 4px;
|
|
||||||
|
|
||||||
.zen-library-download-list-download {
|
|
||||||
container-type: inline-size;
|
|
||||||
-moz-window-dragging: no-drag;
|
|
||||||
|
|
||||||
height: 52px;
|
|
||||||
border-radius: 16px;
|
|
||||||
display: flex;
|
|
||||||
position: relative;
|
|
||||||
padding: 0 4px;
|
|
||||||
|
|
||||||
--zen-library-progress: 0;
|
|
||||||
--zen-library-entry-index: 0;
|
|
||||||
--zen-library-entry-delay: calc(var(--zen-library-entry-index) * 12ms);
|
|
||||||
--zen-library-entry-settle: 0s;
|
|
||||||
transition:
|
|
||||||
--zen-library-progress 0.22s var(--zen-library-entry-easing) var(--zen-library-entry-delay),
|
|
||||||
pointer-events 0s var(--zen-library-entry-settle) allow-discrete;
|
|
||||||
|
|
||||||
pointer-events: none;
|
|
||||||
|
|
||||||
&:nth-last-child(2) {
|
|
||||||
--zen-library-entry-index: 1;
|
|
||||||
}
|
|
||||||
&:nth-last-child(3) {
|
|
||||||
--zen-library-entry-index: 2;
|
|
||||||
}
|
|
||||||
&:nth-last-child(4) {
|
|
||||||
--zen-library-entry-index: 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
#zen-sidebar-foot-buttons[zen-library-stack-open] & {
|
|
||||||
--zen-library-progress: 1;
|
|
||||||
--zen-library-entry-settle: calc(0.22s + var(--zen-library-entry-delay));
|
|
||||||
pointer-events: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
transform: translateY(calc((1 - var(--zen-library-progress)) * 25px));
|
|
||||||
opacity: var(--zen-library-progress);
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background: var(--zen-toolbar-element-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
& .zen-library-download-list-title-container {
|
|
||||||
@container (max-width: 50px) {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
margin: auto 0;
|
|
||||||
min-width: 0;
|
|
||||||
flex: 1;
|
|
||||||
|
|
||||||
& .zen-library-download-list-title {
|
|
||||||
font-size: 11pt;
|
|
||||||
opacity: 0.9;
|
|
||||||
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
display: block;
|
|
||||||
overflow: hidden;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
& .zen-library-download-list-subtitle {
|
|
||||||
font-size: 9pt;
|
|
||||||
opacity: 0.6;
|
|
||||||
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
display: block;
|
|
||||||
overflow: hidden;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
& .zen-library-download-badge {
|
|
||||||
margin: auto 20px auto 8px;
|
|
||||||
@container (max-width: 50px) {
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
& .zen-library-download-action {
|
|
||||||
display: none;
|
|
||||||
margin: auto 4px auto 0;
|
|
||||||
|
|
||||||
@container (max-width: 50px) {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&[downloading] .zen-library-download-action {
|
|
||||||
display: flex;
|
|
||||||
list-style-image: url("chrome://browser/skin/zen-icons/close.svg");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.urlbar {
|
.urlbar {
|
||||||
--urlbarview-separator-color: light-dark(hsl(0, 0%, 85%), hsl(0, 0%, 15%));
|
--urlbarview-separator-color: light-dark(hsl(0, 0%, 80%), hsl(0, 0%, 20%));
|
||||||
--urlbarview-background-color-hover: var(--toolbarbutton-background-color-hover);
|
--urlbarview-background-color-hover: var(--toolbarbutton-background-color-hover);
|
||||||
border-radius: calc(var(--toolbarbutton-border-radius) - 2px);
|
border-radius: calc(var(--toolbarbutton-border-radius) - 2px);
|
||||||
--urlbarView-results-padding: 10px !important;
|
--urlbarView-results-padding: 10px !important;
|
||||||
@@ -284,7 +284,7 @@
|
|||||||
background-color: var(--zen-urlbar-background-transparent, var(--zen-urlbar-background-base)) !important;
|
background-color: var(--zen-urlbar-background-transparent, var(--zen-urlbar-background-base)) !important;
|
||||||
box-shadow: 0 30px 140px -15px light-dark(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.6)) !important;
|
box-shadow: 0 30px 140px -15px light-dark(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.6)) !important;
|
||||||
backdrop-filter: none !important;
|
backdrop-filter: none !important;
|
||||||
outline: 0.5px solid light-dark(rgba(0, 0, 0, 0.2), rgba(255, 255, 255, 0.1)) !important;
|
outline: 0.5px solid light-dark(rgba(0, 0, 0, 0.2), rgba(255, 255, 255, 0.2)) !important;
|
||||||
outline-offset: var(--zen-urlbar-outline-offset) !important;
|
outline-offset: var(--zen-urlbar-outline-offset) !important;
|
||||||
|
|
||||||
/* stylelint-disable-next-line media-query-no-invalid */
|
/* stylelint-disable-next-line media-query-no-invalid */
|
||||||
@@ -295,7 +295,7 @@
|
|||||||
|
|
||||||
&,
|
&,
|
||||||
.urlbar-background {
|
.urlbar-background {
|
||||||
border-radius: 14px !important;
|
border-radius: 12px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
&[breakout-extend][animate-searchmode="true"]::before {
|
&[breakout-extend][animate-searchmode="true"]::before {
|
||||||
@@ -652,10 +652,11 @@
|
|||||||
--urlbarview-row-padding-block: 10px;
|
--urlbarview-row-padding-block: 10px;
|
||||||
color: light-dark(rgba(0, 0, 0, 0.7), rgba(255, 255, 255, 0.7)) !important;
|
color: light-dark(rgba(0, 0, 0, 0.7), rgba(255, 255, 255, 0.7)) !important;
|
||||||
|
|
||||||
&:hover,
|
&:hover {
|
||||||
&:hover .urlbarView-favicon,
|
&,
|
||||||
.urlbarView-action-favicon {
|
& .urlbarView-favicon {
|
||||||
background-color: color-mix(in srgb, var(--zen-branding-bg-reverse) 5%, transparent 95%) !important;
|
background-color: color-mix(in srgb, var(--zen-branding-bg-reverse) 5%, transparent 95%) !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&[selected] {
|
&[selected] {
|
||||||
|
|||||||
@@ -30,14 +30,6 @@ panel[type="arrow"]:not(#feature-callout) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (-moz-platform: linux) or ((-moz-platform: windows) and (not (-moz-windows-mica-popups))) {
|
|
||||||
&::part(content) {
|
|
||||||
/* stylelint-disable-next-line property-no-unknown */
|
|
||||||
corner-shape: round;
|
|
||||||
border-radius: calc(var(--panel-border-radius) / var(--zen-squircle-value));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (-moz-platform: macos) {
|
@media (-moz-platform: macos) {
|
||||||
&:is([nonnative], :not([type="arrow"])) {
|
&:is([nonnative], :not([type="arrow"])) {
|
||||||
appearance: auto !important;
|
appearance: auto !important;
|
||||||
|
|||||||
@@ -64,10 +64,6 @@ hbox.editBMPanel_folderRow {
|
|||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#editBMPanel_workspaceSummary .workspace-trigger {
|
|
||||||
margin-inline-end: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Bookmarks in toolbar */
|
/* Bookmarks in toolbar */
|
||||||
#PersonalToolbar {
|
#PersonalToolbar {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
|
|||||||
@@ -411,7 +411,3 @@ menuseparator {
|
|||||||
#window-modal-dialog {
|
#window-modal-dialog {
|
||||||
inset: 0;
|
inset: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-preview-thumbnail-container > canvas {
|
|
||||||
border-radius: calc(var(--border-radius-medium) / var(--zen-squircle-value));
|
|
||||||
}
|
|
||||||
|
|||||||