Compare commits

..

100 Commits

Author SHA1 Message Date
Andrey Bochkarev
9bc0a4ca92 refactor: Simplify new tab handling in collapsed live folders, p=#12552 2026-02-28 19:38:32 +01:00
Andrey Bochkarev
6aefade7f8 fix: Add position: relative to tab groups for positioning context, p=#12550 2026-02-28 18:51:07 +01:00
mr. m
0226c5879a feat: Don't use native popovers for the theme picker on the onboarding, b=no-bug, c=welcome 2026-02-28 15:04:40 +01:00
mr. m
ee3ec4c1ea feat: Stop using folder refs to prevent leakage, b=no-bug, c=folders 2026-02-28 11:22:55 +01:00
mr. m
881c411a26 feat: Use the correct loading principals for live folders, b=no-bug, c=folders 2026-02-27 18:48:13 +01:00
mr. m
96a52b7354 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-27 16:29:40 +01:00
mr. m
f52eeb0d60 fix: Prevent watermark to run when chrome is hidden, b=bug #12364, c=common, workspaces 2026-02-27 16:27:48 +01:00
dependabot[bot]
942a266184 chore(deps-dev): bump minimatch, p=#12539
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-27 13:13:25 +01:00
mr. m
1a1804d2be feat: Properly animate tab addition to collapsed live folders, b=no-bug, c=folders 2026-02-27 13:12:28 +01:00
mr. m
22fd6133f1 feat: Improved styling for native MacOS popovers and fixed anchor positions, b=no-bug, c=workflows, media, common, folders 2026-02-27 12:54:41 +01:00
Andrey Bochkarev
16b898f4e0 fix: Prevent unnecessary layout reset when new tabs are added, p=#12535 2026-02-26 19:36:59 +01:00
Andrey Bochkarev
d67b4457e8 feat: Allow unsplitting tab without selecting it via Shift-Click, p=#12534 2026-02-26 18:46:58 +01:00
Andrey Bochkarev
b54a7027fd fix: Allow split view creation when split view is selected, p=#12532
* fix: Allow split view creation when split view is selected

* fix: Added tabs are always on the right
2026-02-26 18:34:56 +01:00
Andrey Bochkarev
72a35a5ea5 fix: Prevent live folder tabs from mixing with other tabs, p=#12528 2026-02-26 17:16:44 +01:00
mr. m
c9cad08ae7 feat: Hide AI controls from settings as we never have them enabled, b=no-bug, c=no-component 2026-02-26 14:52:56 +01:00
mr. m
b563e06527 chore: Import external patches, p=#12525 2026-02-26 13:52:19 +01:00
mr. m
88a647a3bb fix: Make sure to not run any switching when quitting, b=no-bug, c=workspaces 2026-02-26 11:28:17 +01:00
mr. m
5a9a9ce51a feat: Change omnibox results to use :where selectors instead of :is selectors, b=no-bug, c=common, workspaces 2026-02-26 00:22:28 +01:00
mr. m
0a5a6d0604 feat: Remove some of the AI features introduced in FF 148, b=no-bug, c=no-component 2026-02-25 23:39:01 +01:00
Andrey Bochkarev
b92d697657 fix: Add guard to prevent invalid split drops, p=#12511 2026-02-25 20:37:53 +01:00
mr. m
5e27368a48 fix: Fixed race conditions when syncing views through windows desktops, b=bug #12390, c=no-component 2026-02-25 20:31:28 +01:00
mr. m
2c740b1abf feat: Start animating folder closes, b=no-bug, c=common 2026-02-25 20:19:32 +01:00
mr. m
bae234867e fix: Fixed active tabs showing when collapsing unrelated folders, b=closes #12509, p=#12517, c=folders 2026-02-25 18:22:39 +01:00
mr. m
9145e36457 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-25 18:22:33 +01:00
mr. m
e30f7e20a6 feat: Small tweaks to live folders popup, b=no-bug, c=folders, workspaces 2026-02-25 18:22:30 +01:00
mr. m
726f6e9132 chore: Sync external patches, p=#12514 2026-02-25 16:27:44 +01:00
mr. m
43384e54e7 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-25 16:23:20 +01:00
mr. m
4ee2e49b27 feat: Install nodejs dependencies when syncing external patches, b=no-bug, c=workflows 2026-02-25 16:22:27 +01:00
mr. m
a5a984922b feat: Install requirements from list for sync workflow, p=#12513, c=workflows 2026-02-25 16:19:58 +01:00
mr. m
34af405cbd fix: Fixed wrong filename being used for external patch import, b=no-bug, c=workflows 2026-02-25 16:15:37 +01:00
mr. m
648e0b1683 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-25 16:12:37 +01:00
mr. m
4ae9f81a68 feat: Add workflow to import expternal patches, b=no-bug, c=workflows, windows 2026-02-25 16:11:41 +01:00
Slowlife
94a55c73c6 fix: wait for tabs state to be restored before init UI, p=#12506, c=live-folder 2026-02-25 12:01:13 +01:00
mr. m
a7c87e6392 chore: Bump release version, b=no-bug, c=common 2026-02-25 02:22:17 +01:00
Andre Nijman
bdf8bc6b33 fix: Hide folder icon remove action when no icon is set, b=closes #12401, p=#12481, c=folders, common
Co-authored-by: andre <andre@localhost>
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-02-25 00:34:22 +01:00
mr. m
4e3413fea5 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-25 00:26:54 +01:00
mr. m
5714450b60 feat: Change feel for DnD tab splitting, b=no-bug, c=split-view 2026-02-25 00:26:49 +01:00
Harshit Tomar
2758c962b5 feat: Add 'open new blank window' action to zen.desktop, p=#12503 2026-02-24 23:38:31 +01:00
mr. m
7b9bdec209 chore: Sync upstream to Firefox 148.0, p=#12498 2026-02-24 23:37:08 +01:00
mr. m
443a778ea6 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-24 23:34:10 +01:00
mr. m
29165bb1e2 chore: Run lint after to fix deps issues, b=no-bug, c=workflows 2026-02-24 23:34:04 +01:00
Andrey Bochkarev
1554818aa8 feat: Add support for creating split view with dnd, p=#11928, c=tabs
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
Co-authored-by: mr. m <mr.m@tuta.com>
2026-02-24 23:29:44 +01:00
mr. m
353b65e25b feat: Dont switch permanent keys for window closes, b=closes #12152, c=workflows, flatpak 2026-02-24 23:19:46 +01:00
mr. m
a8ccd1ca3c feat: Make folder search popup ignore outside clicks, b=no-bug, c=folders, common 2026-02-24 12:47:20 +01:00
mr. m
c772f6d795 feat: Improve live folder enter animation, b=no-bug, c=folders 2026-02-24 10:54:13 +01:00
mr. m
e5622d2237 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-24 00:56:07 +01:00
mr. m
250d0c641c feat: Add feature callout for live folders, b=no-bug, c=folders, common 2026-02-24 00:56:01 +01:00
Slowlife
529d557a38 refactor: switch to use DeferredTask in scheduling logic, p=#12480, c=live-folders 2026-02-23 12:36:44 +01:00
mr. m
bbaf779e7a chore: Run lint before downloading firefox for PRs to have an early exit, b=no-bug, c=workflows 2026-02-23 12:36:18 +01:00
mr. m
e59ff43490 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-23 12:19:34 +01:00
mr. m
ca27b4d76b feat: Default back different search engines on private mode, b=closes #12484, c=no-component 2026-02-23 12:11:16 +01:00
mr. m
bd43b86de8 feat: Correctly animate new tabs for collapsed live folders, b=no-bug, c=folders 2026-02-23 12:05:05 +01:00
mr. m
d3d50d0f8c fix: Fixed urlbar closing when window loses focus, b=closes #7248, p=#12477, c=urlbar 2026-02-23 00:59:00 +01:00
Andre Nijman
dd92699ca1 fix: Screenshot actions hidden behind Glance, b=closes https://github.com/zen-browser/desktop/issues/12196, p=#12468, c=glance
Co-authored-by: andre <andre@localhost>
2026-02-22 23:05:10 +01:00
Andre Nijman
4f7a1efdfa fix: Keep app menu fullscreen button visible in localized labels, b=closes #9547, p=#12470, c=common
Co-authored-by: andre <andre@localhost>
2026-02-22 23:04:40 +01:00
Slowlife
08226c518c fix: remove extra slash in github url, p=#12471, c=live-folders, tests 2026-02-22 15:52:22 +01:00
mr. m
e919e723c7 feat: Add native popover UI for macos, p=#12456 2026-02-21 23:07:30 +01:00
mr. m
52d03f43ef feat: Add concurrency checks for lint and PR workflows, p=#12457, c=workflows 2026-02-21 21:30:15 +01:00
mr. m
5ed59fb902 chore: Updated to a better github logo for better live folder visibility, b=no-bug, c=common 2026-02-21 21:08:34 +01:00
mr. m
011fd67248 chore: Bump motion version, b=no-bug, c=common, folders, vendor, workspaces 2026-02-21 20:50:10 +01:00
mr. m
a6839cfbf7 fix: Fixed wrong attribute checking when updated to Firefox 148.0, b=no-bug, c=tabs 2026-02-21 12:05:31 +01:00
mr. m
6e71a23ed8 feat: Change twilight tag name, b=no-bug, c=workflows 2026-02-21 11:58:53 +01:00
mr. m
368cb06d77 Revert "chore: Change the twilight release tag name to canary, b=no-bug, c=workflows"
This reverts commit d28622e749.
2026-02-21 11:37:28 +01:00
mr. m
d28622e749 chore: Change the twilight release tag name to canary, b=no-bug, c=workflows 2026-02-21 10:30:28 +01:00
mr. m
84679f912d Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-21 10:10:21 +01:00
mr. m
b1ef36c670 feat: Only load about:blank for secondary views when needed, b=no-bug, c=no-component 2026-02-21 10:10:05 +01:00
Slowlife
c28d6520d6 feat: Live folders, p=#11921
Co-authored-by: Slowlife01 <slowlife1165@gmail.com>
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
Co-authored-by: reizumi <reizumichan@protonmail.com>
2026-02-21 00:17:05 +01:00
mr. m
97078b42ac feat: Make sure to search from other backups files when restoring, b=no-bug, c=no-component 2026-02-21 00:04:09 +01:00
mr. m
29eae92fcb feat: Fix spelling mistake on recovery data, b=no-bug, c=no-component 2026-02-20 22:23:00 +01:00
mr. m
124bcee596 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-20 21:52:03 +01:00
mr. m
92faf227b7 feat: Disable rounded corners for GTK windows, b=closes #6302, c=no-component 2026-02-20 21:38:05 +01:00
kae
7280e03c12 fix: reset the search mode after closing the urlbar, p=#12437
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-02-20 17:28:02 +01:00
mr. m
dbb1e28b2f chore: Sync upstream Firefox to version 148.0, p=#12440 2026-02-20 17:24:17 +01:00
mr. m
a8e245b28a feat: Listen for tabHide and tabShow events for window sync, b=bug #12408, c=no-component 2026-02-19 00:50:11 +01:00
mr. m
a30ddc98bd feat: Correctly calculate certain popup opening coordinates, b=no-bug, c=folders, workspaces 2026-02-19 00:38:21 +01:00
mr. m
6273313ce3 fix: Fixed startup freeze when a group was not found, b=closes #12420, c=no-component 2026-02-18 19:18:12 +01:00
mr. m
dd26ec1171 fix: Fixed tabs becoming empty tabs when switching between windows, b=bug #12421, c=no-component 2026-02-18 12:52:26 +01:00
mr. m
1d2a14f9e4 feat: Correctly calculate size of folder search popup, b=no-bug, c=flatpak, folders, workspaces 2026-02-17 22:40:00 +01:00
mr. m
5be2ffa418 fix: Fixed not being able to unload tabs that are in another workspace, b=closes #9683, c=no-component 2026-02-17 17:20:28 +01:00
mr. m
a30798a275 feat: Rework panel animations and updated Firefox 147.0.4, b=no-bug, c=split-view, folders, common, compact-mode, kbs, workspaces 2026-02-17 13:01:38 +01:00
mr. m
214fd4aff0 feat: Include X-AppImage-Version into the AppImage .desktop file, b=closes #12412, c=workflows 2026-02-17 12:13:41 +01:00
mr. m
ddd7f165bf feat: Lower the timing of panel animations, b=no-bug, c=common 2026-02-16 16:25:01 +01:00
Abdush salam
ae5f9060d4 fix: Remove duplicate fullscreen shortcuts from settings, b=closes #12237. p=#12395, c=kbs 2026-02-16 14:17:06 +01:00
mr. m
362764f497 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-16 14:03:27 +01:00
mr. m
083f388176 chore: Remove x-checker-data for flatpak releases, b=no-bug, c=flatpak 2026-02-16 14:03:23 +01:00
Ivaon
813fc16986 fix: properly collapse folder when unloading all tabs, p=#12399
* fix: properly collapse folder when unloading all tabs

* chore: fix implementation in wrong function
2026-02-16 11:29:57 +01:00
mr. m
86a9c17acd feat: Make sure to always clear dragging-out flag on each new drag event, b=no-bug, c=tabs 2026-02-16 00:11:36 +01:00
mr. m
3d0bdbc71b chore: Fixed linting and formatting, b=no-bug, c=common 2026-02-15 23:54:22 +01:00
mr. m
119bedce30 feat: Don't trim the URL if the omnibox has been opened, b=no-bug, c=common 2026-02-15 22:41:00 +01:00
mr. m
1493c6be21 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-15 22:32:19 +01:00
mr. m
4d4d6970e3 fix: Fixed DnD indicator not showing when there are no pinned tabs, b=no-bug, c=common, tabs 2026-02-15 22:31:59 +01:00
TogiFerretFerret
3914d33968 chore: fix issue where transparent browsers have a forced-white sync, p=#12392
* chore: fix issue where transparent browsers have a forced-white sync background without breaking non-transparent browsers

* chore: fix linting issue
2026-02-15 19:44:38 +01:00
mr. m
c4f98b0cd8 fix: Fixed back/frwd buttons switching tab's state instead of space, b=closes #9157, c=workspaces 2026-02-15 14:12:02 +01:00
mr. m
6e728d0e2f feat: Remove unnecesary browser flush calls, b=bug #12152, c=no-component 2026-02-15 13:59:08 +01:00
mr. m
3bd1101f7b fix: Fixed moving tabs to different spaces in separate windows, b=closes #12235, c=tabs 2026-02-15 13:50:51 +01:00
mr. m
c55126085b chore: Fix merge conflicts, b=no-bug, c=no-component 2026-02-15 13:38:00 +01:00
mr. m
9a6db5fb86 fix: Fixed migration data not working if there where any errors, b=no-bug, c=no-component 2026-02-15 13:36:37 +01:00
Ivaon
8274718d0d ft: add shortcut to toggle Firefox Sidebar, p=#12371 2026-02-13 23:42:48 +01:00
mr. m
5511defb1e feat: Dont restore sidebar if window-sync is disabled, b=no-bug, c=no-component 2026-02-13 21:18:13 +01:00
mr. m
894fbd6a4f fix: Fixed selected space not being highlighted, b=closes #12368, c=configs, common 2026-02-13 20:22:49 +01:00
200 changed files with 4889 additions and 1132 deletions

View File

@@ -248,8 +248,8 @@ jobs:
- name: Setup Git - name: Setup Git
run: | run: |
git config --global user.email "mauro-balades@users.noreply.github.com" git config --global user.name "github-actions[bot]"
git config --global user.name "mauro-balades" git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Install dependencies - name: Install dependencies
run: | run: |
@@ -368,7 +368,7 @@ jobs:
strategy: strategy:
matrix: matrix:
arch: [x86_64, aarch64] arch: [x86_64, aarch64]
needs: [linux] needs: [linux, build-data]
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -406,6 +406,8 @@ jobs:
sed -i -e 's/StartupWMClass=zen/StartupWMClass=zen-twilight/g' build/AppDir/zen.desktop sed -i -e 's/StartupWMClass=zen/StartupWMClass=zen-twilight/g' build/AppDir/zen.desktop
fi fi
sed -i -e 's/\$VERSION/${{ needs.build-data.outputs.version }}/g' build/AppDir/zen.desktop
APPDIR=build/AppDir APPDIR=build/AppDir
tar -xvf *.tar.* && rm -rf *.tar.* tar -xvf *.tar.* && rm -rf *.tar.*
mv zen/* $APPDIR/ mv zen/* $APPDIR/
@@ -565,7 +567,7 @@ jobs:
./zen.installer.exe/* ./zen.installer.exe/*
./zen.installer-arm64.exe/* ./zen.installer-arm64.exe/*
./zen.macos-universal.dmg/* ./zen.macos-universal.dmg/*
tag_name: "twilight" tag_name: "twilight-1"
name: "Twilight build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }} at ${{ needs.build-data.outputs.build_time }})" name: "Twilight build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }} at ${{ needs.build-data.outputs.build_time }})"
draft: false draft: false
generate_release_notes: false generate_release_notes: false

View File

@@ -9,6 +9,10 @@ on:
permissions: permissions:
contents: read contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs: jobs:
lint: lint:
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@@ -70,8 +70,8 @@ jobs:
- name: Setup Git - name: Setup Git
run: | run: |
git config --global user.email "mauro-balades@users.noreply.github.com" git config --global user.name "github-actions[bot]"
git config --global user.name "mauro-balades" git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Install system dependencies - name: Install system dependencies
run: | run: |

View File

@@ -68,8 +68,8 @@ jobs:
- name: Setup Git - name: Setup Git
run: | run: |
git config --global user.email "mauro-balades@users.noreply.github.com" git config --global user.name "github-actions[bot]"
git config --global user.name "mauro-balades" git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Install system dependencies - name: Install system dependencies
run: | run: |

View File

@@ -38,8 +38,8 @@ jobs:
- name: Setup Git - name: Setup Git
run: | run: |
git config --global user.email "mauro-balades@users.noreply.github.com" git config --global user.name "github-actions[bot]"
git config --global user.name "mauro-balades" git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Install system dependencies - name: Install system dependencies
run: | run: |

View File

@@ -7,6 +7,10 @@ on:
branches: branches:
- dev - dev
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs: jobs:
pr-test: pr-test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -29,8 +33,8 @@ jobs:
ZEN_DOWNLOAD_DONT_INIT_GIT: "1" ZEN_DOWNLOAD_DONT_INIT_GIT: "1"
run: npm run download run: npm run download
- name: Import patches
run: npm run import
- name: Run linting - name: Run linting
run: npm run lint run: npm run lint
- name: Import patches
run: npm run import

View File

@@ -0,0 +1,82 @@
name: Sync External Patches
on:
workflow_dispatch:
permissions:
contents: write
jobs:
check_candidates:
name: Sync External Patches
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v5
# note: This will use the version defined in '.python-version' by defaultç
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: Setup git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Install requirements
run: pip3 install -r requirements.txt
- name: Import external patches
run: python3 scripts/update_external_patches.py
- name: Check if any files changed
id: git-check
run: |
if [ -n "$(git status --porcelain)" ]; then
echo "files_changed=true" >> $GITHUB_OUTPUT
else
echo "files_changed=false" >> $GITHUB_OUTPUT
fi
- name: Install dependencies
if: steps.git-check.outputs.files_changed == 'true'
run: npm ci
- name: Download Firefox and dependencies
if: steps.git-check.outputs.files_changed == 'true'
run: npm run download
- name: Check if patches got applied
if: steps.git-check.outputs.files_changed == 'true'
id: check-patches
continue-on-error: true
run: |
echo "Checking if patches apply cleanly..."
npm run import
- name: Create pull request
uses: peter-evans/create-pull-request@v7
if: steps.git-check.outputs.files_changed == 'true'
env:
GIT_TRACE: 1
GIT_CURL_VERBOSE: 1
with:
token: ${{ secrets.DEPLOY_KEY }}
commit-message: "chore: Sync external patches"
branch: "chore/sync-external-patches-${{ github.run_id }}"
title: "Sync external patches"
body: |
This PR syncs the external patches automatically.
* ${{ steps.check-patches.outcome == 'failure' && '⚠️ Some patches did not apply cleanly. Please review them carefully.' || '✅ All patches applied cleanly.' }}
@${{ github.actor }} please review and merge this PR. Generated from workflow run [${{ github.run_id }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}), branch ${{ github.head_ref }}.
base: dev
git-token: ${{ secrets.DEPLOY_KEY }}
delete-branch: true

View File

@@ -50,8 +50,8 @@ jobs:
- name: Install dependencies - name: Install dependencies
if: steps.check-upstream-branch.outputs.branch_exists == 'false' if: steps.check-upstream-branch.outputs.branch_exists == 'false'
run: | run: |
git config --global user.email "mr-cheffy@users.noreply.github.com" git config --global user.name "github-actions[bot]"
git config --global user.name "mr-cheffy" git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Setup surfer CI - name: Setup surfer CI
if: steps.check-upstream-branch.outputs.branch_exists == 'false' if: steps.check-upstream-branch.outputs.branch_exists == 'false'
@@ -76,6 +76,9 @@ jobs:
- name: Install autopep8 - name: Install autopep8
run: sudo apt install python3-autopep8 run: sudo apt install python3-autopep8
- name: Install requirements
run: pip3 install -r requirements.txt
- name: Check if any files changed - name: Check if any files changed
id: git-check id: git-check
run: | run: |
@@ -111,7 +114,7 @@ jobs:
- name: Import external patches - name: Import external patches
if: steps.git-check.outputs.files_changed == 'true' if: steps.git-check.outputs.files_changed == 'true'
run: python3 scripts/import_external_patches.py || true run: python3 scripts/update_external_patches.py || true
- name: Run formatter - name: Run formatter
if: steps.check-upstream-branch.outputs.branch_exists == 'false' if: steps.check-upstream-branch.outputs.branch_exists == 'false'

View File

@@ -2,7 +2,7 @@ name: Zen Twilight Scheduled Releases
on: on:
schedule: schedule:
- cron: "0 23 * * *" - cron: "0 23 */2 * *"
workflow_dispatch: workflow_dispatch:
inputs: inputs:
create_release: create_release:

View File

@@ -41,8 +41,8 @@ jobs:
- name: Setup Git - name: Setup Git
run: | run: |
git config --global user.email "mauro-balades@users.noreply.github.com" git config --global user.name "github-actions[bot]"
git config --global user.name "mauro-balades" git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Install Surfer - name: Install Surfer
run: npm i -g @zen-browser/surfer run: npm i -g @zen-browser/surfer

View File

@@ -79,8 +79,8 @@ jobs:
- name: Setup Git - name: Setup Git
run: | run: |
git config --global user.email "mauro-balades@users.noreply.github.com" git config --global user.name "github-actions[bot]"
git config --global user.name "mauro-balades" git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Install dependencies - name: Install dependencies
run: | run: |

2
.nvmrc
View File

@@ -1 +1 @@
20 22

View File

@@ -34,8 +34,8 @@ Zen is a firefox-based browser with the aim of pushing your productivity to a ne
### Firefox Versions ### Firefox Versions
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `147.0.3`! 🚀 - [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `148.0`! 🚀
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 147.0.3`! - [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 148.0`!
### Contributing ### Contributing

View File

@@ -11,12 +11,17 @@ StartupNotify=true
Terminal=false Terminal=false
X-MultipleArgs=false X-MultipleArgs=false
Keywords=Internet;WWW;Browser;Web;Explorer; Keywords=Internet;WWW;Browser;Web;Explorer;
Actions=new-window;new-private-window;profilemanager; Actions=new-window;new-blank-window;new-private-window;profilemanager;
X-AppImage-Version=$VERSION
[Desktop Action new-window] [Desktop Action new-window]
Name=Open a New Window Name=Open a New Window
Exec=zen %u Exec=zen %u
[Desktop Action new-blank-window]
Name=Open a New Blank Window
Exec=zen --blank-window %u
[Desktop Action new-private-window] [Desktop Action new-private-window]
Name=Open a New Private Window Name=Open a New Private Window
Exec=zen --private-window %u Exec=zen --private-window %u

View File

@@ -1 +1 @@
b1e00b74d3791a5a7bbd6ba3d32b69b60471e73b 40d4c2395112d4188721e69d338ee75bded8858a

View File

@@ -62,12 +62,6 @@ modules:
strip-components: 0 strip-components: 0
only-arches: only-arches:
- x86_64 - x86_64
x-checker-data:
type: json
url: https://api.github.com/repos/zen-browser/desktop/releases/latest
version-query: .tag_name
url-query: .assets[] | select(.name=="zen.linux-x86_64.tar.xz") | .browser_download_url
is-main-source: true
- type: archive - type: archive
url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-aarch64.tar.xz url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-aarch64.tar.xz
@@ -75,12 +69,6 @@ modules:
strip-components: 0 strip-components: 0
only-arches: only-arches:
- aarch64 - aarch64
x-checker-data:
type: json
url: https://api.github.com/repos/zen-browser/desktop/releases/latest
version-query: .tag_name
url-query: .assets[] | select(.name=="zen.linux-aarch64.tar.xz") | .browser_download_url
is-main-source: true
- type: archive - type: archive
url: https://github.com/zen-browser/flatpak/releases/download/{version}/archive.tar url: https://github.com/zen-browser/flatpak/releases/download/{version}/archive.tar

View File

@@ -30,17 +30,11 @@ if test "$ZEN_RELEASE"; then
fi fi
# Disable DMD and ELF hacks, enable linker lld # Disable DMD and ELF hacks, enable linker lld
ac_add_options --disable-dmd
ac_add_options --enable-linker=lld ac_add_options --enable-linker=lld
ac_add_options --disable-elf-hack ac_add_options --disable-elf-hack
ac_add_options --disable-necko-wifi
# Stripping options for release builds # Stripping options for release builds
ac_add_options --enable-install-strip ac_add_options --enable-install-strip
ac_add_options --enable-strip ac_add_options --enable-strip
export STRIP_FLAGS="--strip-debug --strip-unneeded" export STRIP_FLAGS="--strip-debug --strip-unneeded"
fi fi
# Common options
ac_add_options --enable-alsa
ac_add_options --enable-pulseaudio

View File

@@ -0,0 +1,101 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
zen-live-folder-options =
.label = Live Folder Options
zen-live-folder-last-fetched =
.label = Last fetch: { $time }
zen-live-folder-refresh =
.label = Refresh
zen-live-folder-github-option-author-self =
.label = Created by Me
zen-live-folder-github-option-assigned-self =
.label = Assigned to Me
zen-live-folder-github-option-review-requested =
.label = Review Requests
zen-live-folder-type-rss =
.label = RSS Feed
zen-live-folder-option-fetch-interval =
.label = Fetch Interval
zen-live-folder-fetch-interval-mins =
.label = { $mins ->
[one] 1 minute
*[other] { $mins } minutes
}
zen-live-folder-fetch-interval-hours =
.label = { $hours ->
[one] 1 hour
*[other] { $hours } hours
}
zen-live-folder-rss-option-time-range =
.label = Time Range
zen-live-folder-time-range-hours =
.label = { $hours ->
[one] Last hour
*[other] Last { $hours } hours
}
zen-live-folder-time-range-all-time =
.label = All time
zen-live-folder-time-range-days =
.label = { $days ->
[one] Last day
*[other] Last { $days } days
}
zen-live-folder-rss-option-item-limit =
.label = Item Limit
zen-live-folder-rss-option-feed-url =
.label = Feed URL
zen-live-folder-rss-prompt-feed-url = Please enter the feed URL
zen-live-folder-rss-option-item-limit-num =
.label = { $limit } items
zen-live-folder-failed-fetch =
.label = Failed to update
.tooltiptext = Failed to update. Try again.
zen-live-folder-github-no-auth =
.label = Not signed in to GitHub
.tooltiptext = Sign back in to GitHub.
zen-live-folder-github-no-filter =
.label = Filter is not set
.tooltiptext = No filter set, nothing will be fetched.
zen-live-folder-rss-invalid-url-title = Failed to create the Live Folder
zen-live-folder-rss-invalid-url-description = The feed URL is invalid. Check the address and try again
zen-live-folder-github-option-repo-filter =
.label = Repositories
zen-live-folder-github-option-repo =
.label = { $repo }
zen-live-folder-github-pull-requests =
.label = Pull Requests
zen-live-folder-github-issues =
.label = Issues
zen-live-folder-github-option-repo-list-note =
.label = This list is generated based on your currently active pull requests.
zen-live-folders-promotion-title = Live Folder Created!
zen-live-folders-promotion-description = Latest content from your RSS feeds or GitHub pull requests will appear here automatically.

View File

@@ -16,7 +16,4 @@ zen-split-link =
zen-split-view-modifier-header = Split View zen-split-view-modifier-header = Split View
zen-split-view-modifier-activate-reallocation = zen-split-view-modifier-activate-reallocation =
.label = Activate reallocation .label = Activate reallocation
zen-split-view-modifier-enabled-toast = Split view rearrange is ON.
zen-split-view-modifier-enabled-toast-description = Drag and drop the view to rearrange. Press Esc to exit.
zen-split-view-modifier-disabled-toast = Split view rearrange is OFF.

View File

@@ -42,4 +42,9 @@ tabbrowser-reset-pin-button =
[one] Reset and pin tab [one] Reset and pin tab
*[other] Reset and pin { $tabCount } tabs *[other] Reset and pin { $tabCount } tabs
} }
tab-reset-pin-label = Back to pinned url
zen-tab-sublabel =
{ $tabSubtitle ->
[zen-default-pinned] Back to pinned url
*[other] { $tabSubtitle }
}

View File

@@ -13,6 +13,9 @@ zen-panel-ui-workspaces-create =
zen-panel-ui-folder-create = zen-panel-ui-folder-create =
.label = Create Folder .label = Create Folder
zen-panel-ui-live-folder-create =
.label = Live Folder
zen-panel-ui-new-empty-split = zen-panel-ui-new-empty-split =
.label = New Split .label = New Split

22
package-lock.json generated
View File

@@ -1464,13 +1464,13 @@
} }
}, },
"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
"version": "9.0.5", "version": "9.0.9",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"brace-expansion": "^2.0.1" "brace-expansion": "^2.0.2"
}, },
"engines": { "engines": {
"node": ">=16 || 14 >=14.17" "node": ">=16 || 14 >=14.17"
@@ -3622,13 +3622,13 @@
} }
}, },
"node_modules/eslint-plugin-n/node_modules/minimatch": { "node_modules/eslint-plugin-n/node_modules/minimatch": {
"version": "9.0.5", "version": "9.0.9",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"brace-expansion": "^2.0.1" "brace-expansion": "^2.0.2"
}, },
"engines": { "engines": {
"node": ">=16 || 14 >=14.17" "node": ">=16 || 14 >=14.17"
@@ -5818,9 +5818,9 @@
} }
}, },
"node_modules/minimatch": { "node_modules/minimatch": {
"version": "3.1.2", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {

View File

@@ -73,5 +73,9 @@
- name: browser.tabs.notes.enabled - name: browser.tabs.notes.enabled
value: false value: false
- name: browser.tabs.dragDrop.dragToPin.enabled
value: false
locked: true
- name: browser.tabs.dragDrop.moveOverThresholdPercent - name: browser.tabs.dragDrop.moveOverThresholdPercent
value: 50 # Percentage of tab height to trigger move over on drag-and-drop value: 50 # Percentage of tab height to trigger move over on drag-and-drop

View File

@@ -32,9 +32,6 @@
- name: browser.search.suggest.enabled.private - name: browser.search.suggest.enabled.private
value: false value: false
- name: browser.search.separatePrivateDefault.ui.enabled
value: true
- name: browser.urlbar.quicksuggest.enabled - name: browser.urlbar.quicksuggest.enabled
value: false value: false
locked: true locked: true
@@ -59,3 +56,8 @@
- name: browser.urlbar.suggest.topsites - name: browser.urlbar.suggest.topsites
value: true value: true
locked: true locked: true
# See https://github.com/zen-browser/desktop/issues/7248
# We've submitted a patch to Firefox at https://bugzilla.mozilla.org/show_bug.cgi?id=2018499
- name: browser.urlbar.closeOnWindowBlur
value: false

View File

@@ -63,6 +63,10 @@
value: false value: false
locked: true locked: true
- name: browser.search.serpEventTelemetryCategorization.enabled
value: false
locked: true
- name: browser.newtabpage.activity-stream.telemetry - name: browser.newtabpage.activity-stream.telemetry
value: false value: false
locked: true locked: true

View File

@@ -6,7 +6,7 @@
value: true value: true
- name: zen.folders.search.hover-delay - name: zen.folders.search.hover-delay
value: 700 # ms value: 500 # ms
- name: zen.folders.max-subfolders - name: zen.folders.max-subfolders
value: 5 value: 5

View File

@@ -4,7 +4,9 @@
# GTK-specific preferences # GTK-specific preferences
- name: widget.gtk.rounded-bottom-corners.enabled - name: widget.gtk.rounded-bottom-corners.enabled
value: true # Disabled for https://github.com/zen-browser/desktop/issues/6302,
# also see https://bugzilla.mozilla.org/show_bug.cgi?id=1979083
value: false
condition: "defined(MOZ_WIDGET_GTK)" condition: "defined(MOZ_WIDGET_GTK)"
- name: zen.widget.linux.transparency - name: zen.widget.linux.transparency

View File

@@ -20,3 +20,10 @@
cpptype: uint32_t cpptype: uint32_t
mirror: always mirror: always
type: static type: static
# Enable native popovers on macOS, we've sent this patch to upstream
# but we enable it by default anyways in case they decide to not use it,
# or to disable it by default.
- name: widget.macos.native-popovers
value: true
condition: "defined(XP_MACOSX)"

View File

@@ -4,7 +4,6 @@
- name: image.jxl.enabled - name: image.jxl.enabled
value: true value: true
locked: true
- name: svg.context-properties.content.enabled - name: svg.context-properties.content.enabled
value: true value: true

View File

@@ -10,3 +10,12 @@
- name: zen.splitView.rearrange-hover-size - name: zen.splitView.rearrange-hover-size
value: 24 value: 24
- name: zen.splitView.enable-drag-over-split
value: true
- name: zen.splitView.drag-over-split-delayMC
value: 1000
- name: zen.splitView.drag-over-split-threshold
value: 25

View File

@@ -59,6 +59,15 @@ def main():
output_file = os.path.join(OUTPUT_DIR, "firefox", f"{name}.patch") output_file = os.path.join(OUTPUT_DIR, "firefox", f"{name}.patch")
print(f"Processing Phabricator patch: {phab_id} -> {output_file}") print(f"Processing Phabricator patch: {phab_id} -> {output_file}")
download_phab_patch(phab_id, output_file) download_phab_patch(phab_id, output_file)
replaces = patch.get("replaces", {})
for replace in replaces.keys():
value = replaces[replace]
with open(output_file, 'r') as f:
content = f.read()
if replace not in content:
die(f"Replace string '{replace}' not found in {output_file}")
with open(output_file, 'w') as f:
f.write(content.replace(replace, value))
expected_files.add(output_file) expected_files.add(output_file)
elif patch.get("type") == "local": elif patch.get("type") == "local":
print(f"Local patch: {patch.get('path')}") print(f"Local patch: {patch.get('path')}")

View File

@@ -1,5 +1,5 @@
diff --git a/Cargo.lock b/Cargo.lock diff --git a/Cargo.lock b/Cargo.lock
index 723445447f491058784992e66245e0e0f8e61e19..02816c1df3e20d96ce68f16970b8a6e38080533e 100644 index abc04e6a8e1e68fa71c6de0375f8e953e6369d8b..7bdfb41e255fc12065de064162e9bf9e15d7ff12 100644
--- a/Cargo.lock --- a/Cargo.lock
+++ b/Cargo.lock +++ b/Cargo.lock
@@ -4214,8 +4214,6 @@ dependencies = [ @@ -4214,8 +4214,6 @@ dependencies = [

View File

@@ -1,13 +1,13 @@
diff --git a/Cargo.toml b/Cargo.toml diff --git a/Cargo.toml b/Cargo.toml
index 35e725043bce0b39fea550e8fb2b0ae1ff752e43..abac2042d537fcc1ce26e0e3acbf98fc2975b793 100644 index ab9eda43302a6281e59a2738170e77bb0f0b1b90..3389f1c744b56e3a6a4eb3f05b0601bed4538fa1 100644
--- a/Cargo.toml --- a/Cargo.toml
+++ b/Cargo.toml +++ b/Cargo.toml
@@ -237,6 +237,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" } @@ -240,6 +240,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" }
# Workaround for https://github.com/rust-lang/cargo/issues/11232 # Workaround for https://github.com/rust-lang/cargo/issues/11232
rure = { path = "third_party/rust/rure" } rure = { path = "third_party/rust/rure" }
+mime_guess = { path = "third_party/rust/mime_guess" } +mime_guess = { path = "third_party/rust/mime_guess" }
+ +
# Patch `unicode-width` 0.1.* to 0.2. # To-be-published changes.
unicode-width = { path = "build/rust/unicode-width" } unicode-bidi = { git = "https://github.com/servo/unicode-bidi", rev = "ca612daf1c08c53abe07327cb3e6ef6e0a760f0c" }
nss-gk-api = { git = "https://github.com/beurdouche/nss-gk-api", rev = "e48a946811ffd64abc78de3ee284957d8d1c0d63" }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
index 288a79e5fb4da24cffcb30fb4b8adc9604b15d26..bf9bd3e666dfb6298dbeec0546cae223a7bc68f0 100644 index 0186e3a6508fc8e40f93619d8b3e5a0c003cbd4a..1f4fa115e591cfbe3e23d4ce880be66277a50a26 100644
--- a/browser/base/content/browser-init.js --- a/browser/base/content/browser-init.js
+++ b/browser/base/content/browser-init.js +++ b/browser/base/content/browser-init.js
@@ -200,6 +200,7 @@ var gBrowserInit = { @@ -243,6 +243,7 @@ var gBrowserInit = {
}, },
onLoad() { onLoad() {
@@ -10,7 +10,7 @@ index 288a79e5fb4da24cffcb30fb4b8adc9604b15d26..bf9bd3e666dfb6298dbeec0546cae223
gBrowser.addEventListener("DOMUpdateBlockedPopups", e => gBrowser.addEventListener("DOMUpdateBlockedPopups", e =>
PopupAndRedirectBlockerObserver.handleEvent(e) PopupAndRedirectBlockerObserver.handleEvent(e)
); );
@@ -375,6 +376,7 @@ var gBrowserInit = { @@ -433,6 +434,7 @@ var gBrowserInit = {
this._handleURIToLoad(); this._handleURIToLoad();

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae031fe6119 100644 index e2e0526a0ddd617291f1f6c17bcfb807954b481f..c3d2afff6eaa788309d1c1a7fa40f9b8b4f0fffe 100644
--- a/browser/base/content/browser.js --- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js +++ b/browser/base/content/browser.js
@@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, { @@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, {
@@ -10,7 +10,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
DevToolsSocketStatus: DevToolsSocketStatus:
"resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs", "resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs",
DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs", DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs",
@@ -819,7 +820,12 @@ function UpdateBackForwardCommands(aWebNavigation) { @@ -814,7 +815,12 @@ function UpdateBackForwardCommands(aWebNavigation) {
var backDisabled = backCommand.hasAttribute("disabled"); var backDisabled = backCommand.hasAttribute("disabled");
var forwardDisabled = forwardCommand.hasAttribute("disabled"); var forwardDisabled = forwardCommand.hasAttribute("disabled");
@@ -24,7 +24,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
if (backDisabled) { if (backDisabled) {
backCommand.removeAttribute("disabled"); backCommand.removeAttribute("disabled");
} else { } else {
@@ -2305,6 +2311,8 @@ var XULBrowserWindow = { @@ -2301,6 +2307,8 @@ var XULBrowserWindow = {
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser); AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
TranslationsParent.onLocationChange(gBrowser.selectedBrowser); TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
@@ -33,7 +33,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser); PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
if (!gMultiProcessBrowser) { if (!gMultiProcessBrowser) {
@@ -3818,7 +3826,7 @@ function warnAboutClosingWindow() { @@ -3821,7 +3829,7 @@ function warnAboutClosingWindow() {
if (!isPBWindow && !toolbar.visible) { if (!isPBWindow && !toolbar.visible) {
return gBrowser.warnAboutClosingTabs( return gBrowser.warnAboutClosingTabs(
@@ -42,7 +42,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
gBrowser.closingTabsEnum.ALL gBrowser.closingTabsEnum.ALL
); );
} }
@@ -3858,7 +3866,7 @@ function warnAboutClosingWindow() { @@ -3861,7 +3869,7 @@ function warnAboutClosingWindow() {
return ( return (
isPBWindow || isPBWindow ||
gBrowser.warnAboutClosingTabs( gBrowser.warnAboutClosingTabs(
@@ -51,7 +51,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
gBrowser.closingTabsEnum.ALL gBrowser.closingTabsEnum.ALL
) )
); );
@@ -3883,7 +3891,7 @@ function warnAboutClosingWindow() { @@ -3886,7 +3894,7 @@ function warnAboutClosingWindow() {
AppConstants.platform != "macosx" || AppConstants.platform != "macosx" ||
isPBWindow || isPBWindow ||
gBrowser.warnAboutClosingTabs( gBrowser.warnAboutClosingTabs(
@@ -60,7 +60,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
gBrowser.closingTabsEnum.ALL gBrowser.closingTabsEnum.ALL
) )
); );
@@ -4806,6 +4814,9 @@ var ConfirmationHint = { @@ -4809,6 +4817,9 @@ var ConfirmationHint = {
MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl"); MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl");
MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl"); MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl");
document.l10n.setAttributes(this._message, messageId, options.l10nArgs); document.l10n.setAttributes(this._message, messageId, options.l10nArgs);

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc
index 139f7c2617f5e4843e0072435818c859def2f6bb..6ac1467b4117e2d76102d6977f13268827b4588f 100644 index df768aaa77a6986260da5052ed14c8403d48de6b..a30e3a2784a6215c959d23802b5c2c966f89ca10 100644
--- a/browser/base/content/browser-sets.inc --- a/browser/base/content/browser-sets.inc
+++ b/browser/base/content/browser-sets.inc +++ b/browser/base/content/browser-sets.inc
@@ -413,3 +413,4 @@ @@ -414,3 +414,4 @@
internal="true"/> internal="true"/>
#endif #endif
</keyset> </keyset>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-sets.js b/browser/base/content/browser-sets.js diff --git a/browser/base/content/browser-sets.js b/browser/base/content/browser-sets.js
index 94a05a510204c027e482fda33deaf3dc0d7471c9..79d37a7c7f29739d3ad2d9f6a3b3b8d638836b10 100644 index 50845ebd925955bf9646fc499b9828eccbf266ef..5482a24576ebcd4382409cae01a4c6bcbd88a96c 100644
--- a/browser/base/content/browser-sets.js --- a/browser/base/content/browser-sets.js
+++ b/browser/base/content/browser-sets.js +++ b/browser/base/content/browser-sets.js
@@ -266,7 +266,7 @@ document.addEventListener( @@ -270,7 +270,7 @@ document.addEventListener(
} }
}); });
@@ -11,3 +11,12 @@ index 94a05a510204c027e482fda33deaf3dc0d7471c9..79d37a7c7f29739d3ad2d9f6a3b3b8d6
const SIDEBAR_REVAMP_PREF = "sidebar.revamp"; const SIDEBAR_REVAMP_PREF = "sidebar.revamp";
const SIDEBAR_REVAMP_ENABLED = Services.prefs.getBoolPref( const SIDEBAR_REVAMP_ENABLED = Services.prefs.getBoolPref(
SIDEBAR_REVAMP_PREF, SIDEBAR_REVAMP_PREF,
@@ -308,6 +308,8 @@ document.addEventListener(
panel: SidebarController.currentID,
opened: SidebarController._state.launcherExpanded,
});
+ } else {
+ SidebarController.toggle();
}
break;
case "key_gotoHistory":

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js
index 8369e546866aa313e62f808acb8d51afa8da4f9b..7a4b20dd5922425cebfac542893a52cd68a26449 100644 index 6d2052e060896bb5e91ba84c15bf14c969340935..6ceef1806e2d88cd7e2ebc867d633e9148f3b298 100644
--- a/browser/base/content/browser-siteIdentity.js --- a/browser/base/content/browser-siteIdentity.js
+++ b/browser/base/content/browser-siteIdentity.js +++ b/browser/base/content/browser-siteIdentity.js
@@ -451,11 +451,6 @@ var gIdentityHandler = { @@ -464,11 +464,6 @@ var gIdentityHandler = {
// avoid a pretty ugly transition. Also hide it even // avoid a pretty ugly transition. Also hide it even
// if the update resulted in no site data, to keep the // if the update resulted in no site data, to keep the
// illusion that clicking the button had an effect. // illusion that clicking the button had an effect.
@@ -14,7 +14,7 @@ index 8369e546866aa313e62f808acb8d51afa8da4f9b..7a4b20dd5922425cebfac542893a52cd
let baseDomain = SiteDataManager.getBaseDomainFromHost(this._uri.host); let baseDomain = SiteDataManager.getBaseDomainFromHost(this._uri.host);
if (SiteDataManager.promptSiteDataRemoval(window, [baseDomain])) { if (SiteDataManager.promptSiteDataRemoval(window, [baseDomain])) {
@@ -832,7 +827,7 @@ var gIdentityHandler = { @@ -847,7 +842,7 @@ var gIdentityHandler = {
// This is a secure internal Firefox page. // This is a secure internal Firefox page.
this._identityBox.className = "chromeUI"; this._identityBox.className = "chromeUI";
let brandBundle = document.getElementById("bundle_brand"); let brandBundle = document.getElementById("bundle_brand");
@@ -23,7 +23,7 @@ index 8369e546866aa313e62f808acb8d51afa8da4f9b..7a4b20dd5922425cebfac542893a52cd
} else if (this._pageExtensionPolicy) { } else if (this._pageExtensionPolicy) {
// This is a WebExtension page. // This is a WebExtension page.
this._identityBox.className = "extensionPage"; this._identityBox.className = "extensionPage";
@@ -1161,6 +1156,12 @@ var gIdentityHandler = { @@ -1190,6 +1185,12 @@ var gIdentityHandler = {
} }
} }

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index ac82dcd286b5502d1ba38ed740813db08941eb7b..c26b3f0468ee6acd7716d4e8a24ad8cc84fce186 100644 index 832d98f911e0bd0e231421332a521bfefea72ef8..a9955256c81b252fe0527ae5857c9283e2518274 100644
--- a/browser/base/content/browser.xhtml --- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml +++ b/browser/base/content/browser.xhtml
@@ -19,6 +19,7 @@ @@ -19,6 +19,7 @@
@@ -10,7 +10,7 @@ index ac82dcd286b5502d1ba38ed740813db08941eb7b..c26b3f0468ee6acd7716d4e8a24ad8cc
persist="screenX screenY width height sizemode" persist="screenX screenY width height sizemode"
data-l10n-sync="true"> data-l10n-sync="true">
<head> <head>
@@ -99,8 +100,10 @@ @@ -100,8 +101,10 @@
<title data-l10n-id="browser-main-window-default-title"></title> <title data-l10n-id="browser-main-window-default-title"></title>
@@ -21,7 +21,7 @@ index ac82dcd286b5502d1ba38ed740813db08941eb7b..c26b3f0468ee6acd7716d4e8a24ad8cc
</head> </head>
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
# All sets except for popupsets (commands, keys, and stringbundles) # All sets except for popupsets (commands, keys, and stringbundles)
@@ -133,9 +136,11 @@ @@ -134,9 +137,11 @@
</vbox> </vbox>
</html:template> </html:template>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml
index 79b604c5965ba03762acbf085c9288c73001ec24..d75d5481e5de93c592850e39d4b0b4fd07e12678 100644 index 0d73eb17b340001312a885ea10f5d6ad871f14d2..475824a0f9a4bbc15dc9bc7f1d2a09a51e58bc65 100644
--- a/browser/base/content/main-popupset.inc.xhtml --- a/browser/base/content/main-popupset.inc.xhtml
+++ b/browser/base/content/main-popupset.inc.xhtml +++ b/browser/base/content/main-popupset.inc.xhtml
@@ -226,6 +226,10 @@ @@ -234,6 +234,10 @@
hidden="true" hidden="true"
tabspecific="true" tabspecific="true"
aria-labelledby="editBookmarkPanelTitle"> aria-labelledby="editBookmarkPanelTitle">
@@ -13,7 +13,7 @@ index 79b604c5965ba03762acbf085c9288c73001ec24..d75d5481e5de93c592850e39d4b0b4fd
<box class="panel-header"> <box class="panel-header">
<html:h1> <html:h1>
<html:span id="editBookmarkPanelTitle"/> <html:span id="editBookmarkPanelTitle"/>
@@ -251,6 +255,7 @@ @@ -259,6 +263,7 @@
class="footer-button"/> class="footer-button"/>
</html:moz-button-group> </html:moz-button-group>
</vbox> </vbox>
@@ -21,7 +21,7 @@ index 79b604c5965ba03762acbf085c9288c73001ec24..d75d5481e5de93c592850e39d4b0b4fd
</panel> </panel>
</html:template> </html:template>
@@ -656,6 +661,8 @@ @@ -678,6 +683,8 @@
#include popup-notifications.inc.xhtml #include popup-notifications.inc.xhtml

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
index 68c24f730d56f548cf1e286198a04f8363529378..eb9aa5e77cf549062d8d3770f8057ceafe67c317 100644 index 4d4223c508560136aba220adb18528aac913a188..7e7432f7adb761a598d3e3e5ca4c6385a3bfe223 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 @@
@@ -11,18 +11,18 @@ index 68c24f730d56f548cf1e286198a04f8363529378..eb9aa5e77cf549062d8d3770f8057cea
<script src="chrome://browser/content/navigator-toolbox.js" /> <script src="chrome://browser/content/navigator-toolbox.js" />
<!-- Menu --> <!-- Menu -->
@@ -18,9 +18,8 @@ @@ -18,9 +18,9 @@
#include browser-menubar.inc #include browser-menubar.inc
</toolbaritem> </toolbaritem>
<spacer flex="1" skipintoolbarset="true" style="order: 1000;"/> <spacer flex="1" skipintoolbarset="true" style="order: 1000;"/>
-#include titlebar-items.inc.xhtml -#include titlebar-items.inc.xhtml
</toolbar> </toolbar>
-
+<hbox id="titlebar"> +<hbox id="titlebar">
<toolbar id="TabsToolbar" <toolbar id="TabsToolbar"
class="browser-toolbar browser-titlebar" class="browser-toolbar browser-titlebar"
fullscreentoolbar="true" fullscreentoolbar="true"
@@ -62,6 +61,9 @@ @@ -62,6 +62,9 @@
<html:sidebar-pins-promo id="drag-to-pin-promo-card"></html:sidebar-pins-promo> <html:sidebar-pins-promo id="drag-to-pin-promo-card"></html:sidebar-pins-promo>
<arrowscrollbox id="pinned-tabs-container" orient="horizontal" clicktoscroll=""></arrowscrollbox> <arrowscrollbox id="pinned-tabs-container" orient="horizontal" clicktoscroll=""></arrowscrollbox>
<splitter orient="vertical" id="vertical-pinned-tabs-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/> <splitter orient="vertical" id="vertical-pinned-tabs-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
@@ -32,7 +32,7 @@ index 68c24f730d56f548cf1e286198a04f8363529378..eb9aa5e77cf549062d8d3770f8057cea
<hbox class="tab-drop-indicator" hidden="true"/> <hbox class="tab-drop-indicator" hidden="true"/>
<arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend=""> <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend="">
<tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/> <tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/>
@@ -81,6 +83,7 @@ @@ -81,6 +84,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"/>
@@ -40,8 +40,8 @@ index 68c24f730d56f548cf1e286198a04f8363529378..eb9aa5e77cf549062d8d3770f8057cea
</tabs> </tabs>
<toolbarbutton id="new-tab-button" <toolbarbutton id="new-tab-button"
@@ -106,9 +109,10 @@ @@ -114,9 +118,10 @@
#include private-browsing-indicator.inc.xhtml
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/> <toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>
-#include titlebar-items.inc.xhtml -#include titlebar-items.inc.xhtml

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs
index d9fbd3a9a78c993c89efa75be9e2ffc975158aba..e64382b32580c2d113774e76e3587002ce0aebad 100644 index 90c8d48fa992ca5ac125fa2998741db79264de4a..a598431671e42b9ede23b0595790564202408a8e 100644
--- a/browser/base/content/nsContextMenu.sys.mjs --- a/browser/base/content/nsContextMenu.sys.mjs
+++ b/browser/base/content/nsContextMenu.sys.mjs +++ b/browser/base/content/nsContextMenu.sys.mjs
@@ -371,6 +371,9 @@ export class nsContextMenu { @@ -371,6 +371,9 @@ export class nsContextMenu {

View File

@@ -41,13 +41,13 @@
<script type="text/javascript" src="chrome://browser/content/ZenPreloadedScripts.js"></script> <script type="text/javascript" src="chrome://browser/content/ZenPreloadedScripts.js"></script>
# Scripts used all over the browser # Scripts used all over the browser
<script type="module" src="chrome://browser/content/zen-components/ZenFolder.mjs"></script>
<script type="module" src="chrome://browser/content/zen-components/ZenMediaController.mjs"></script> <script type="module" src="chrome://browser/content/zen-components/ZenMediaController.mjs"></script>
<script type="module" src="chrome://browser/content/zen-components/ZenWorkspaceCreation.mjs"></script> <script type="module" src="chrome://browser/content/zen-components/ZenWorkspaceCreation.mjs"></script>
<script type="module" src="chrome://browser/content/zen-components/ZenGlanceManager.mjs"></script> <script type="module" src="chrome://browser/content/zen-components/ZenGlanceManager.mjs"></script>
<script type="module" src="chrome://browser/content/zen-components/ZenPinnedTabManager.mjs"></script> <script type="module" src="chrome://browser/content/zen-components/ZenPinnedTabManager.mjs"></script>
<script type="module" src="chrome://browser/content/zen-components/ZenViewSplitter.mjs"></script> <script type="module" src="chrome://browser/content/zen-components/ZenViewSplitter.mjs"></script>
<script type="module" src="chrome://browser/content/zen-components/ZenFolders.mjs"></script> <script type="module" src="chrome://browser/content/zen-components/ZenFolder.mjs"></script>
<script type="module" src="chrome://browser/content/zen-components/ZenFolders.mjs"></script>s
<script type="module" src="chrome://browser/content/zen-components/ZenDownloadAnimation.mjs"></script> <script type="module" src="chrome://browser/content/zen-components/ZenDownloadAnimation.mjs"></script>
<script type="module" src="chrome://browser/content/zen-components/ZenEmojiPicker.mjs"></script> <script type="module" src="chrome://browser/content/zen-components/ZenEmojiPicker.mjs"></script>
<script type="module" src="chrome://browser/content/zen-components/ZenLiveFoldersUI.mjs"></script>

View File

@@ -18,3 +18,4 @@
#include ../../../zen/images/jar.inc.mn #include ../../../zen/images/jar.inc.mn
#include ../../../zen/vendor/jar.inc.mn #include ../../../zen/vendor/jar.inc.mn
#include ../../../zen/fonts/jar.inc.mn #include ../../../zen/fonts/jar.inc.mn
#include ../../../zen/live-folders/jar.inc.mn

View File

@@ -63,4 +63,6 @@
<command id="cmd_zenCloseUnpinnedTabs" /> <command id="cmd_zenCloseUnpinnedTabs" />
<command id="cmd_zenNewNavigatorUnsynced" /> <command id="cmd_zenNewNavigatorUnsynced" />
<command id="cmd_zenNewLiveFolder" />
</commandset> </commandset>

View File

@@ -9,4 +9,5 @@
<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-live-folders.ftl"/>
</linkset> </linkset>

View File

@@ -2,7 +2,12 @@
# 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/.
<panel id="zen-folder-tabs-popup" type="arrow" orient="vertical"> <panel id="zen-folder-tabs-popup"
nonnativepopover="true"
type="arrow"
orient="vertical"
side="left"
consumeoutsideclicks="never">
<hbox class="tabs-list-header" flex="1"> <hbox class="tabs-list-header" flex="1">
<image class="zen-folder-tabs-list-search-icon" src="chrome://global/skin/icons/search-glass.svg"/> <image class="zen-folder-tabs-list-search-icon" src="chrome://global/skin/icons/search-glass.svg"/>
<html:input id="zen-folder-tabs-list-search" <html:input id="zen-folder-tabs-list-search"

View File

@@ -2,7 +2,14 @@
# 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/.
<panel flip="side" type="arrow" popupalign="center" orient="vertical" id="PanelUI-zen-gradient-generator" position="bottomright topright" mainview="true" side="left"> <panel flip="side" type="arrow"
opupalign="center"
orient="vertical"
id="PanelUI-zen-gradient-generator"
position="bottomright topright"
mainview="true"
hidepopovertail="true"
side="left">
<panelmultiview id="PanelUI-zen-gradient-generator-multiview" mainViewId="PanelUI-zen-gradient-generator-view"> <panelmultiview id="PanelUI-zen-gradient-generator-multiview" mainViewId="PanelUI-zen-gradient-generator-view">
<panelview id="PanelUI-zen-gradient-generator-view" class="PanelUI-subView zen-theme-picker" role="document" mainview-with-header="true" has-custom-header="true"> <panelview id="PanelUI-zen-gradient-generator-view" class="PanelUI-subView zen-theme-picker" role="document" mainview-with-header="true" has-custom-header="true">
<hbox class="zen-theme-picker-gradient"> <hbox class="zen-theme-picker-gradient">

View File

@@ -3,6 +3,23 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/. # file, You can obtain one at http://mozilla.org/MPL/2.0/.
<menupopup id="zenCreateNewPopup"> <menupopup id="zenCreateNewPopup">
<menu data-l10n-id="zen-panel-ui-live-folder-create" id="zen-panel-ui-live-folder-create">
<menupopup>
<menuitem
data-l10n-id="zen-live-folder-github-pull-requests"
command="cmd_zenNewLiveFolder"
image="chrome://browser/skin/zen-icons/selectable/logo-github.svg" />
<menuitem
data-l10n-id="zen-live-folder-github-issues"
command="cmd_zenNewLiveFolder"
image="chrome://browser/skin/zen-icons/selectable/logo-github.svg" />
<menuitem
data-l10n-id="zen-live-folder-type-rss"
command="cmd_zenNewLiveFolder"
image="chrome://browser/skin/zen-icons/selectable/logo-rss.svg"/>
</menupopup>
</menu>
<menuseparator/>
<menuitem data-l10n-id="zen-panel-ui-workspaces-create" command="cmd_zenOpenWorkspaceCreation" image="chrome://browser/skin/zen-icons/duplicate-tab.svg" /> <menuitem data-l10n-id="zen-panel-ui-workspaces-create" command="cmd_zenOpenWorkspaceCreation" image="chrome://browser/skin/zen-icons/duplicate-tab.svg" />
<menuitem data-l10n-id="zen-panel-ui-folder-create" command="cmd_zenOpenFolderCreation" image="chrome://browser/skin/zen-icons/folder.svg" /> <menuitem data-l10n-id="zen-panel-ui-folder-create" command="cmd_zenOpenFolderCreation" image="chrome://browser/skin/zen-icons/folder.svg" />
<menuseparator/> <menuseparator/>
@@ -35,6 +52,12 @@
</menupopup> </menupopup>
<menupopup id="zenFolderActions"> <menupopup id="zenFolderActions">
<menu id="context_zenLiveFolderOptions"
data-l10n-id="zen-live-folder-options"
hidden="true">
<menupopup />
</menu>
<menuseparator id="live-folder-separator" hidden="true"/>
<menuitem id="context_zenFolderRename" data-l10n-id="zen-folders-panel-rename-folder"/> <menuitem id="context_zenFolderRename" data-l10n-id="zen-folders-panel-rename-folder"/>
<menuitem id="context_zenFolderChangeIcon" data-l10n-id="tab-context-zen-edit-icon"/> <menuitem id="context_zenFolderChangeIcon" data-l10n-id="tab-context-zen-edit-icon"/>
<menuseparator /> <menuseparator />

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs
index 57a37b5c0d1982ecfff8d94e05fea89895713a58..062dcb0d1de00982bd777c3dc5d62a88a304bc68 100644 index 2152327b42c884456785ef065422e3ca6cc8c50b..932150495d23c0a63987abf14b3dc8a12eb42d6c 100644
--- a/browser/components/BrowserContentHandler.sys.mjs --- a/browser/components/BrowserContentHandler.sys.mjs
+++ b/browser/components/BrowserContentHandler.sys.mjs +++ b/browser/components/BrowserContentHandler.sys.mjs
@@ -601,6 +601,28 @@ nsBrowserContentHandler.prototype = { @@ -603,6 +603,28 @@ nsBrowserContentHandler.prototype = {
} }
} }
@@ -31,7 +31,7 @@ index 57a37b5c0d1982ecfff8d94e05fea89895713a58..062dcb0d1de00982bd777c3dc5d62a88
var searchParam = cmdLine.handleFlagWithParam("search", false); var searchParam = cmdLine.handleFlagWithParam("search", false);
if (searchParam) { if (searchParam) {
doSearch(searchParam, cmdLine); doSearch(searchParam, cmdLine);
@@ -670,6 +692,7 @@ nsBrowserContentHandler.prototype = { @@ -672,6 +694,7 @@ nsBrowserContentHandler.prototype = {
" --new-window <url> Open <url> in a new window.\n" + " --new-window <url> Open <url> in a new window.\n" +
" --new-tab <url> Open <url> in a new tab.\n" + " --new-tab <url> Open <url> in a new tab.\n" +
" --private-window [<url>] Open <url> in a new private window.\n"; " --private-window [<url>] Open <url> in a new private window.\n";

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs
index 8acc1e5a97f769dc76d30ca0534f28b0a4511ab5..bd54169f976d3abe7d122b0efc0fa0d0626179eb 100644 index 33a0f6b7e5cfe087388483fefa55b927e3e3f4a3..65135c6904b5e9523f77689dfc572aefe11b0961 100644
--- a/browser/components/BrowserGlue.sys.mjs --- a/browser/components/BrowserGlue.sys.mjs
+++ b/browser/components/BrowserGlue.sys.mjs +++ b/browser/components/BrowserGlue.sys.mjs
@@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs"; @@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
@@ -10,7 +10,7 @@ index 8acc1e5a97f769dc76d30ca0534f28b0a4511ab5..bd54169f976d3abe7d122b0efc0fa0d0
AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs", AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs",
AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs", AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs",
ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs", ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs",
@@ -1452,7 +1453,7 @@ BrowserGlue.prototype = { @@ -1455,7 +1456,7 @@ BrowserGlue.prototype = {
windowcount++; windowcount++;
let tabbrowser = win.gBrowser; let tabbrowser = win.gBrowser;
if (tabbrowser) { if (tabbrowser) {
@@ -19,7 +19,7 @@ index 8acc1e5a97f769dc76d30ca0534f28b0a4511ab5..bd54169f976d3abe7d122b0efc0fa0d0
} }
} }
@@ -1617,6 +1618,8 @@ BrowserGlue.prototype = { @@ -1620,6 +1621,8 @@ BrowserGlue.prototype = {
} else if (profileDataVersion < APP_DATA_VERSION) { } else if (profileDataVersion < APP_DATA_VERSION) {
lazy.ProfileDataUpgrader.upgrade(profileDataVersion, APP_DATA_VERSION); lazy.ProfileDataUpgrader.upgrade(profileDataVersion, APP_DATA_VERSION);
} }

View File

@@ -0,0 +1,40 @@
diff --git a/browser/components/aboutwelcome/content/aboutwelcome.css b/browser/components/aboutwelcome/content/aboutwelcome.css
index 0e1985aa519d66b047c5d40977bb12099d966b18..76b59891b4c4464b38d6973858f13fff0285737d 100644
--- a/browser/components/aboutwelcome/content/aboutwelcome.css
+++ b/browser/components/aboutwelcome/content/aboutwelcome.css
@@ -329,6 +329,11 @@ panel#feature-callout {
--panel-shadow-margin: 6px;
--panel-arrow-space: calc(var(--panel-shadow-margin) + var(--arrow-visible-height) - 1.5px);
--panel-margin-offset: calc(-1 * (var(--panel-shadow-margin) + var(--arrow-corner-distance) + (var(--arrow-width) / 2)));
+
+ @media -moz-pref("widget.macos.native-popovers") and (-moz-platform: macos) {
+ --panel-shadow-margin: 0;
+ --panel-arrow-space: 0;
+ }
}
panel#feature-callout::part(content) {
@@ -512,6 +517,12 @@ div#feature-callout.hidden {
width: 25em;
gap: 16px;
background: var(--fc-background);
+
+ @media -moz-pref("widget.macos.native-popovers") and (-moz-platform: macos) {
+ --fc-background: transparent;
+ box-shadow: none;
+ border-width: 0;
+ }
}
#feature-callout .screen[pos=callout] .section-main .main-content .main-content-inner {
gap: 12px;
@@ -818,6 +829,10 @@ panel#feature-callout::part(content) {
overflow: visible;
transform: rotate(45deg);
transform-style: preserve-3d;
+
+ @media -moz-pref("widget.macos.native-popovers") and (-moz-platform: macos) {
+ display: none;
+ }
}
#feature-callout:not([arrow-position]) .arrow-box, #feature-callout[hide-arrow] .arrow-box {
display: none;

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/controlcenter/content/identityPanel.inc.xhtml b/browser/components/controlcenter/content/identityPanel.inc.xhtml diff --git a/browser/components/controlcenter/content/identityPanel.inc.xhtml b/browser/components/controlcenter/content/identityPanel.inc.xhtml
index 8e23aad8ca0bb686a669b11e1d78b7906f5f38d0..cf4873cc6165b5f77091c056d7e275e0f3d36769 100644 index d7f214f471f70de3805e0f5b3b2d77f49a06c4f1..555b55089368e1782cf0266415fb3040b269d3a5 100644
--- a/browser/components/controlcenter/content/identityPanel.inc.xhtml --- a/browser/components/controlcenter/content/identityPanel.inc.xhtml
+++ b/browser/components/controlcenter/content/identityPanel.inc.xhtml +++ b/browser/components/controlcenter/content/identityPanel.inc.xhtml
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js
index d016811caa6c1ecc947fd705f6e1b27e3b5a12a5..89f2a9ec9ebd80e744ed0118e1b3c164151cf2b8 100644 index 1c696a11d831ea25b4b01689e9b23bda8a754900..fed5576c05aeffd87022565580ce085cb81fe70c 100644
--- a/browser/components/customizableui/content/panelUI.js --- a/browser/components/customizableui/content/panelUI.js
+++ b/browser/components/customizableui/content/panelUI.js +++ b/browser/components/customizableui/content/panelUI.js
@@ -619,10 +619,12 @@ const PanelUI = { @@ -627,10 +627,12 @@ const PanelUI = {
if (hasKids && !this.navbar.hasAttribute("nonemptyoverflow")) { if (hasKids && !this.navbar.hasAttribute("nonemptyoverflow")) {
this.navbar.setAttribute("nonemptyoverflow", "true"); this.navbar.setAttribute("nonemptyoverflow", "true");
this.overflowPanel.setAttribute("hasfixeditems", "true"); this.overflowPanel.setAttribute("hasfixeditems", "true");
@@ -15,7 +15,7 @@ index d016811caa6c1ecc947fd705f6e1b27e3b5a12a5..89f2a9ec9ebd80e744ed0118e1b3c164
} }
}, },
@@ -970,7 +972,7 @@ const PanelUI = { @@ -978,7 +980,7 @@ const PanelUI = {
el.removeAttribute("data-lazy-l10n-id"); el.removeAttribute("data-lazy-l10n-id");
}); });

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/extensions/parent/ext-tabs.js b/browser/components/extensions/parent/ext-tabs.js diff --git a/browser/components/extensions/parent/ext-tabs.js b/browser/components/extensions/parent/ext-tabs.js
index bff93996b42aa1f88f1bfcbd813c3af4a5806f13..1252727b4811248e138cf7a38f8d1fd422576d28 100644 index 7e32fc3f3c325b7317533acf5142bb912556fdbe..04bbe6bece881a05d2eadf81411bd4df2b745017 100644
--- a/browser/components/extensions/parent/ext-tabs.js --- a/browser/components/extensions/parent/ext-tabs.js
+++ b/browser/components/extensions/parent/ext-tabs.js +++ b/browser/components/extensions/parent/ext-tabs.js
@@ -501,6 +501,7 @@ this.tabs = class extends ExtensionAPIPersistent { @@ -501,6 +501,7 @@ this.tabs = class extends ExtensionAPIPersistent {

View File

@@ -0,0 +1,57 @@
diff --git a/browser/components/preferences/config/aiFeatures.mjs b/browser/components/preferences/config/aiFeatures.mjs
index f00c1e20a8ca06108fc41c97badd234167430aee..f7d553cc10492f9447c7b0f801f36b2d66b95d43 100644
--- a/browser/components/preferences/config/aiFeatures.mjs
+++ b/browser/components/preferences/config/aiFeatures.mjs
@@ -634,52 +634,6 @@ SettingGroupManager.registerGroups({
},
],
},
- {
- control: "moz-box-item",
- items: [
- {
- id: "aiControlPdfjsAltTextSelect",
- l10nId: "preferences-ai-controls-pdfjs-control",
- control: "moz-select",
- controlAttrs: {
- inputlayout: "inline-end",
- },
- supportPage: "pdf-alt-text",
- options: [...AI_CONTROL_OPTIONS],
- },
- ],
- },
- {
- control: "moz-box-item",
- items: [
- {
- id: "aiControlSmartTabGroupsSelect",
- l10nId:
- "preferences-ai-controls-tab-group-suggestions-control",
- control: "moz-select",
- controlAttrs: {
- inputlayout: "inline-end",
- },
- supportPage: "how-use-ai-enhanced-tab-groups",
- options: [...AI_CONTROL_OPTIONS],
- },
- ],
- },
- {
- control: "moz-box-item",
- items: [
- {
- id: "aiControlLinkPreviewKeyPointsSelect",
- l10nId: "preferences-ai-controls-key-points-control",
- control: "moz-select",
- controlAttrs: {
- inputlayout: "inline-end",
- },
- supportPage: "use-link-previews-firefox",
- options: [...AI_CONTROL_OPTIONS],
- },
- ],
- },
],
},
],

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn
index 5e53352fdbd25d2aed40d0117c3ad7072b9acf8c..0f400864ba7cc850d212ddeeefb71a06376e845f 100644 index f06aaedc681cac4dc26d8e168d47991098477424..db2e81338793f99d9f034555abb1f6ef28bb1ae9 100644
--- a/browser/components/preferences/jar.mn --- a/browser/components/preferences/jar.mn
+++ b/browser/components/preferences/jar.mn +++ b/browser/components/preferences/jar.mn
@@ -42,3 +42,5 @@ browser.jar: @@ -46,3 +46,5 @@ browser.jar:
content/browser/preferences/widgets/sync-device-name.mjs (widgets/sync-device-name/sync-device-name.mjs) content/browser/preferences/widgets/sync-device-name.mjs (widgets/sync-device-name/sync-device-name.mjs)
content/browser/preferences/widgets/sync-engines-list.mjs (widgets/sync-engine-list/sync-engines-list.mjs) content/browser/preferences/widgets/sync-engines-list.mjs (widgets/sync-engine-list/sync-engines-list.mjs)
content/browser/preferences/widgets/sync-engines-list.css (widgets/sync-engine-list/sync-engines-list.css) content/browser/preferences/widgets/sync-engines-list.css (widgets/sync-engine-list/sync-engines-list.css)

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml
index d218a04e0ab44e6a55e368566c97df95e939565b..59f038e59fe1a8554a8b112c5ac33e700b71c79c 100644 index 171021979f4783251db7f74d52a922d4bd244f08..cdc91ac91905956a82dfa3ed229146622d1d3d80 100644
--- a/browser/components/preferences/main.inc.xhtml --- a/browser/components/preferences/main.inc.xhtml
+++ b/browser/components/preferences/main.inc.xhtml +++ b/browser/components/preferences/main.inc.xhtml
@@ -48,7 +48,8 @@ @@ -49,7 +49,8 @@
<!-- Browser layout --> <!-- Browser layout -->
<groupbox data-category="paneGeneral" <groupbox data-category="paneGeneral"
data-subcategory="layout" data-subcategory="layout"
@@ -12,7 +12,7 @@ index d218a04e0ab44e6a55e368566c97df95e939565b..59f038e59fe1a8554a8b112c5ac33e70
<label><html:h2 data-l10n-id="browser-layout-header"/></label> <label><html:h2 data-l10n-id="browser-layout-header"/></label>
<radiogroup id="browserLayoutRadioGroup" preference="sidebar.verticalTabs"> <radiogroup id="browserLayoutRadioGroup" preference="sidebar.verticalTabs">
<radio id="browserLayoutHorizontalTabs" data-l10n-id="browser-layout-horizontal-tabs" value="false"/> <radio id="browserLayoutHorizontalTabs" data-l10n-id="browser-layout-horizontal-tabs" value="false"/>
@@ -253,6 +254,7 @@ @@ -210,6 +211,7 @@
languages-customize-add.label, languages-customize-add.label,
" /> " />
</hbox> </hbox>

View File

@@ -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 6f99cbf973d414ffd4036d17740abe963629db37..520dcce0adb06c5ebfee8c76f72f7d7b40e106da 100644 index 3720de145e6aa3fa2fb13f8480155d9472edaa8b..f04808d58b29611f4058d9fc52ab8bc20a34825a 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
@@ -1729,6 +1729,11 @@ SettingGroupManager.registerGroups({ @@ -2190,6 +2190,11 @@ SettingGroupManager.registerGroups({
id: "browserRestoreSession", id: "browserRestoreSession",
l10nId: "startup-restore-windows-and-tabs", l10nId: "startup-restore-windows-and-tabs",
}, },
@@ -14,7 +14,7 @@ index 6f99cbf973d414ffd4036d17740abe963629db37..520dcce0adb06c5ebfee8c76f72f7d7b
{ {
id: "windowsLaunchOnLogin", id: "windowsLaunchOnLogin",
l10nId: "windows-launch-on-login", l10nId: "windows-launch-on-login",
@@ -3133,7 +3138,7 @@ function getBundleForLocales(newLocales) { @@ -4606,7 +4611,7 @@ function getBundleForLocales(newLocales) {
]) ])
); );
return new Localization( return new Localization(

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
index 7d6835b8636f771943b8081b7d56f579812026c2..97227eec4baeffd39b23ed6194ce7fa108c3b862 100644 index 7a279d4655523156ff259c9f6bcb2a0def9d1749..de71cec7693d1fe3bf34017ab76027b83631830a 100644
--- a/browser/components/preferences/preferences.js --- a/browser/components/preferences/preferences.js
+++ b/browser/components/preferences/preferences.js +++ b/browser/components/preferences/preferences.js
@@ -124,6 +124,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () { @@ -121,6 +121,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
styleSheets: [ styleSheets: [
"chrome://browser/skin/preferences/dialog.css", "chrome://browser/skin/preferences/dialog.css",
"chrome://browser/skin/preferences/preferences.css", "chrome://browser/skin/preferences/preferences.css",
@@ -10,7 +10,7 @@ index 7d6835b8636f771943b8081b7d56f579812026c2..97227eec4baeffd39b23ed6194ce7fa1
], ],
resizeCallback: async ({ title, frame }) => { resizeCallback: async ({ title, frame }) => {
// Search within main document and highlight matched keyword. // Search within main document and highlight matched keyword.
@@ -344,6 +345,10 @@ function init_all() { @@ -350,6 +351,10 @@ function init_all() {
register_module("paneSearch", gSearchPane); register_module("paneSearch", gSearchPane);
register_module("panePrivacy", gPrivacyPane); register_module("panePrivacy", gPrivacyPane);
register_module("paneContainers", gContainersPane); register_module("paneContainers", gContainersPane);

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db4388456b97f02c 100644 index 0dd43c76f947e593a9be5edae936f1af17f9b627..df026b3e164da92536adef72ee0388386cb9708b 100644
--- a/browser/components/preferences/preferences.xhtml --- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml +++ b/browser/components/preferences/preferences.xhtml
@@ -46,6 +46,8 @@ @@ -42,6 +42,8 @@
<link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-pane.css" /> <link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-pane.css" />
<link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-control.css" /> <link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-control.css" />
@@ -11,7 +11,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
<link rel="localization" href="branding/brand.ftl"/> <link rel="localization" href="branding/brand.ftl"/>
<link rel="localization" href="browser/browser.ftl"/> <link rel="localization" href="browser/browser.ftl"/>
<!-- Used by fontbuilder.js --> <!-- Used by fontbuilder.js -->
@@ -115,6 +117,11 @@ @@ -111,6 +113,11 @@
<hbox flex="1"> <hbox flex="1">
<vbox class="navigation"> <vbox class="navigation">
@@ -23,7 +23,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
<!-- category list --> <!-- category list -->
<richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label"> <richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label">
<richlistitem id="category-general" <richlistitem id="category-general"
@@ -127,6 +134,50 @@ @@ -123,6 +130,50 @@
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label> <label class="category-name" flex="1" data-l10n-id="pane-general-title"></label>
</richlistitem> </richlistitem>
@@ -74,7 +74,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
<richlistitem id="category-home" <richlistitem id="category-home"
class="category" class="category"
value="paneHome" value="paneHome"
@@ -242,11 +293,6 @@ @@ -248,11 +299,6 @@
<html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/> <html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/>
</hbox> </hbox>
</hbox> </hbox>
@@ -86,7 +86,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
</hbox> </hbox>
</hbox> </hbox>
<vbox id="mainPrefPane"> <vbox id="mainPrefPane">
@@ -260,6 +306,10 @@ @@ -265,6 +311,10 @@
#include sync.inc.xhtml #include sync.inc.xhtml
#include experimental.inc.xhtml #include experimental.inc.xhtml
#include moreFromMozilla.inc.xhtml #include moreFromMozilla.inc.xhtml

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/preferences/sync.inc.xhtml b/browser/components/preferences/sync.inc.xhtml diff --git a/browser/components/preferences/sync.inc.xhtml b/browser/components/preferences/sync.inc.xhtml
index 4ecdbdb129577165ed0df619577327f7610e138f..761a4d4f26a21ba555b7af180e8a6030615db500 100644 index 86053cbf35ef1b004185ee54e9d7b9f2e2b8d550..a8fe2db034ffe99e01fd0f92d629151df7f708a8 100644
--- a/browser/components/preferences/sync.inc.xhtml --- a/browser/components/preferences/sync.inc.xhtml
+++ b/browser/components/preferences/sync.inc.xhtml +++ b/browser/components/preferences/sync.inc.xhtml
@@ -223,6 +223,10 @@ @@ -223,6 +223,10 @@

View File

@@ -818,6 +818,13 @@ const zenMissingKeyboardShortcutL10n = {
key_accessibility: "zen-devtools-toggle-accessibility-shortcut", key_accessibility: "zen-devtools-toggle-accessibility-shortcut",
}; };
var zenIgnoreKeyboardShortcutIDs = [
"key_enterFullScreen_old",
"key_enterFullScreen_compat",
"key_exitFullScreen_old",
"key_exitFullScreen_compat",
];
var zenIgnoreKeyboardShortcutL10n = [ var zenIgnoreKeyboardShortcutL10n = [
"zen-full-zoom-reduce-shortcut-alt-b", "zen-full-zoom-reduce-shortcut-alt-b",
"zen-full-zoom-reduce-shortcut-alt-a", "zen-full-zoom-reduce-shortcut-alt-a",
@@ -888,7 +895,11 @@ var gZenCKSSettings = {
const labelValue = zenMissingKeyboardShortcutL10n[keyID] ?? l10nID; const labelValue = zenMissingKeyboardShortcutL10n[keyID] ?? l10nID;
if (zenIgnoreKeyboardShortcutL10n.includes(labelValue) || shortcut.shouldBeEmpty) { if (
zenIgnoreKeyboardShortcutIDs.includes(keyID) ||
zenIgnoreKeyboardShortcutL10n.includes(labelValue) ||
shortcut.shouldBeEmpty
) {
continue; continue;
} }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/screenshots/overlay/overlay.css b/browser/components/screenshots/overlay/overlay.css diff --git a/browser/components/screenshots/overlay/overlay.css b/browser/components/screenshots/overlay/overlay.css
index 43a5d2109ad107ce1c79eef7cb8635bc1fa813f7..c1e5648d0e71826119bda1bc18c5d16886bab8fd 100644 index 94d87522bfaaf59b9138ec5ca960be0a0ea31339..ab3fa41cefdfc1d93edeb8a2d626bd9b1e07344b 100644
--- a/browser/components/screenshots/overlay/overlay.css --- a/browser/components/screenshots/overlay/overlay.css
+++ b/browser/components/screenshots/overlay/overlay.css +++ b/browser/components/screenshots/overlay/overlay.css
@@ -196,6 +196,9 @@ @@ -200,6 +200,9 @@
pointer-events: none; pointer-events: none;
position: absolute; position: absolute;
z-index: var(--screenshots-high-layer); z-index: var(--screenshots-high-layer);
@@ -12,11 +12,11 @@ index 43a5d2109ad107ce1c79eef7cb8635bc1fa813f7..c1e5648d0e71826119bda1bc18c5d168
} }
#top-background { #top-background {
@@ -214,7 +217,7 @@ @@ -218,7 +221,7 @@
} }
.bghighlight { .bghighlight {
- background-color: rgba(0, 0, 0, 0.7); - background-color: var(--background-color-overlay);
+ background-color: rgba(0, 0, 0, 0.5); + background-color: rgba(0, 0, 0, 0.5);
position: absolute; position: absolute;
overflow: clip; overflow: clip;

View File

@@ -1,13 +1,12 @@
diff --git a/browser/components/search/SearchUIUtils.sys.mjs b/browser/components/search/SearchUIUtils.sys.mjs diff --git a/browser/components/search/SearchUIUtils.sys.mjs b/browser/components/search/SearchUIUtils.sys.mjs
index 65daa1402a52e252360386e60471f726c1387bb3..be8f588316a8a4d7f33a324bf11f9e1f19def32d 100644 index 22680c91da251adc21bb46debc73b3dbf6cdf08c..80d465e698c9900a6495d3f17ca2e66a25ff4021 100644
--- a/browser/components/search/SearchUIUtils.sys.mjs --- a/browser/components/search/SearchUIUtils.sys.mjs
+++ b/browser/components/search/SearchUIUtils.sys.mjs +++ b/browser/components/search/SearchUIUtils.sys.mjs
@@ -444,7 +444,7 @@ export var SearchUIUtils = { @@ -445,6 +445,7 @@ export var SearchUIUtils = {
triggeringSearchEngine: engine.name,
}, },
}); });
-
+ window.gZenGlanceManager?.onSearchSelectCommand(where);
return { engine, url: submission.uri };
},
+ window.gZenGlanceManager?.onSearchSelectCommand(where);
lazy.BrowserSearchTelemetry.recordSearch(
window.gBrowser.selectedBrowser,
engine,

View File

@@ -1,5 +1,5 @@
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 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5fbefff5ce 100644 index f066bc7a9cca1788080d088141030c225a733931..accb078ebbc23f9a823ae6c277f1e1bf06644d92 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
@@ -127,6 +127,9 @@ const TAB_EVENTS = [ @@ -127,6 +127,9 @@ const TAB_EVENTS = [
@@ -12,7 +12,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
]; ];
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";
@@ -196,6 +199,8 @@ ChromeUtils.defineESModuleGetters(lazy, { @@ -198,6 +201,8 @@ ChromeUtils.defineESModuleGetters(lazy, {
TabStateCache: "resource:///modules/sessionstore/TabStateCache.sys.mjs", TabStateCache: "resource:///modules/sessionstore/TabStateCache.sys.mjs",
TabStateFlusher: "resource:///modules/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",
@@ -21,7 +21,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
}); });
ChromeUtils.defineLazyGetter(lazy, "blankURI", () => { ChromeUtils.defineLazyGetter(lazy, "blankURI", () => {
@@ -1261,10 +1266,7 @@ var SessionStoreInternal = { @@ -1263,10 +1268,7 @@ var SessionStoreInternal = {
*/ */
get willAutoRestore() { get willAutoRestore() {
return ( return (
@@ -33,7 +33,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
); );
}, },
@@ -1934,6 +1936,9 @@ var SessionStoreInternal = { @@ -1940,6 +1942,9 @@ var SessionStoreInternal = {
case "TabPinned": case "TabPinned":
case "TabUnpinned": case "TabUnpinned":
case "SwapDocShells": case "SwapDocShells":
@@ -43,7 +43,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
this.saveStateDelayed(win); this.saveStateDelayed(win);
break; break;
case "TabGroupCreate": case "TabGroupCreate":
@@ -2044,6 +2049,10 @@ var SessionStoreInternal = { @@ -2050,6 +2055,10 @@ var SessionStoreInternal = {
this._windows[aWindow.__SSi].isTaskbarTab = true; this._windows[aWindow.__SSi].isTaskbarTab = true;
} }
@@ -51,10 +51,10 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
+ this._windows[aWindow.__SSi].isZenUnsynced = true; + this._windows[aWindow.__SSi].isZenUnsynced = true;
+ } + }
+ +
let tabbrowser = aWindow.gBrowser; if (lazy.AIWindow.isAIWindowActiveAndEnabled(aWindow)) {
this._windows[aWindow.__SSi].isAIWindow = true;
// add tab change listeners to all already existing tabs }
@@ -2076,7 +2085,7 @@ var SessionStoreInternal = { @@ -2086,7 +2095,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 =
@@ -63,7 +63,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
// 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) {
@@ -2088,7 +2097,7 @@ var SessionStoreInternal = { @@ -2098,7 +2107,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();
@@ -72,7 +72,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
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"
); );
@@ -2131,6 +2140,7 @@ var SessionStoreInternal = { @@ -2141,6 +2150,7 @@ var SessionStoreInternal = {
null, null,
"sessionstore-one-or-no-tab-restored" "sessionstore-one-or-no-tab-restored"
); );
@@ -80,7 +80,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
this._deferredAllWindowsRestored.resolve(); this._deferredAllWindowsRestored.resolve();
} }
// this window was opened by _openWindowWithState // this window was opened by _openWindowWithState
@@ -2175,7 +2185,6 @@ var SessionStoreInternal = { @@ -2190,7 +2200,6 @@ var SessionStoreInternal = {
if (closedWindowState) { if (closedWindowState) {
let newWindowState; let newWindowState;
if ( if (
@@ -88,7 +88,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
!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.
@@ -2211,6 +2220,7 @@ var SessionStoreInternal = { @@ -2226,6 +2235,7 @@ var SessionStoreInternal = {
} }
if (newWindowState) { if (newWindowState) {
@@ -96,7 +96,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
// 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] };
@@ -2239,6 +2249,15 @@ var SessionStoreInternal = { @@ -2254,6 +2264,15 @@ var SessionStoreInternal = {
}); });
this._shouldRestoreLastSession = false; this._shouldRestoreLastSession = false;
} }
@@ -112,7 +112,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
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)
@@ -2383,7 +2402,7 @@ var SessionStoreInternal = { @@ -2404,7 +2423,7 @@ var SessionStoreInternal = {
var tabbrowser = aWindow.gBrowser; var tabbrowser = aWindow.gBrowser;
@@ -121,7 +121,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
TAB_EVENTS.forEach(function (aEvent) { TAB_EVENTS.forEach(function (aEvent) {
tabbrowser.tabContainer.removeEventListener(aEvent, this, true); tabbrowser.tabContainer.removeEventListener(aEvent, this, true);
@@ -2434,7 +2453,7 @@ var SessionStoreInternal = { @@ -2455,7 +2474,7 @@ var SessionStoreInternal = {
let isLastRegularWindow = let isLastRegularWindow =
Object.values(this._windows).filter( Object.values(this._windows).filter(
@@ -130,7 +130,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
).length == 1; ).length == 1;
this._log.debug( this._log.debug(
`onClose, closing window isLastRegularWindow? ${isLastRegularWindow}` `onClose, closing window isLastRegularWindow? ${isLastRegularWindow}`
@@ -2491,8 +2510,8 @@ var SessionStoreInternal = { @@ -2512,8 +2531,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.
@@ -141,7 +141,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
} }
completionPromise = lazy.TabStateFlusher.flushWindow(aWindow).then(() => { completionPromise = lazy.TabStateFlusher.flushWindow(aWindow).then(() => {
@@ -2512,8 +2531,9 @@ var SessionStoreInternal = { @@ -2533,8 +2552,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.
@@ -153,7 +153,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
if (!isLastWindow && winData.closedId > -1) { if (!isLastWindow && winData.closedId > -1) {
this._addClosedAction( this._addClosedAction(
@@ -2589,7 +2609,7 @@ var SessionStoreInternal = { @@ -2610,7 +2630,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).
*/ */
@@ -162,7 +162,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
// 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 (
@@ -2606,6 +2626,7 @@ var SessionStoreInternal = { @@ -2627,6 +2647,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;
@@ -170,7 +170,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
// 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;
@@ -3408,7 +3429,7 @@ var SessionStoreInternal = { @@ -3429,7 +3450,7 @@ var SessionStoreInternal = {
if (!isPrivateWindow && tabState.isPrivate) { if (!isPrivateWindow && tabState.isPrivate) {
return; return;
} }
@@ -179,7 +179,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
return; return;
} }
@@ -4129,6 +4150,12 @@ var SessionStoreInternal = { @@ -4150,6 +4171,12 @@ var SessionStoreInternal = {
Math.min(tabState.index, tabState.entries.length) Math.min(tabState.index, tabState.entries.length)
); );
tabState.pinned = false; tabState.pinned = false;
@@ -192,7 +192,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
if (inBackground === false) { if (inBackground === false) {
aWindow.gBrowser.selectedTab = newTab; aWindow.gBrowser.selectedTab = newTab;
@@ -4565,6 +4592,8 @@ var SessionStoreInternal = { @@ -4586,6 +4613,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,
@@ -201,7 +201,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
userContextId: state.userContextId, userContextId: state.userContextId,
skipLoad: true, skipLoad: true,
preferredRemoteType, preferredRemoteType,
@@ -5055,9 +5084,10 @@ var SessionStoreInternal = { @@ -5087,9 +5116,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,
@@ -213,7 +213,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
} }
} }
@@ -5414,7 +5444,7 @@ var SessionStoreInternal = { @@ -5446,7 +5476,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];
@@ -222,7 +222,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
removableTabs.push(tab); removableTabs.push(tab);
} }
} }
@@ -5525,7 +5555,7 @@ var SessionStoreInternal = { @@ -5559,7 +5589,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) {
@@ -231,7 +231,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
// window data is still in _statesToRestore // window data is still in _statesToRestore
continue; continue;
} }
@@ -5668,11 +5698,12 @@ var SessionStoreInternal = { @@ -5702,11 +5732,12 @@ var SessionStoreInternal = {
} }
let tabbrowser = aWindow.gBrowser; let tabbrowser = aWindow.gBrowser;
@@ -245,7 +245,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
// 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) {
@@ -5683,6 +5714,9 @@ var SessionStoreInternal = { @@ -5717,6 +5748,9 @@ var SessionStoreInternal = {
tabsData.push(tabData); tabsData.push(tabData);
} }
@@ -255,7 +255,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
// 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) {
@@ -5695,7 +5729,7 @@ var SessionStoreInternal = { @@ -5729,7 +5763,7 @@ var SessionStoreInternal = {
// a window is closed, point to the first item in the tab strip instead (it will never be the Firefox View tab, // 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) {
@@ -264,7 +264,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
winData.title = tabbrowser.tabs[0].label; winData.title = tabbrowser.tabs[0].label;
} }
winData.selected = selectedIndex; winData.selected = selectedIndex;
@@ -5810,8 +5844,8 @@ var SessionStoreInternal = { @@ -5844,8 +5878,8 @@ var SessionStoreInternal = {
// selectTab represents. // selectTab represents.
let selectTab = 0; let selectTab = 0;
if (overwriteTabs) { if (overwriteTabs) {
@@ -275,7 +275,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
selectTab = Math.min(selectTab, winData.tabs.length); selectTab = Math.min(selectTab, winData.tabs.length);
} }
@@ -5833,6 +5867,7 @@ var SessionStoreInternal = { @@ -5867,6 +5901,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) {
@@ -283,7 +283,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
tabbrowser.removeTab(tabbrowser.tabs[i]); tabbrowser.removeTab(tabbrowser.tabs[i]);
} }
} }
@@ -5866,6 +5901,12 @@ var SessionStoreInternal = { @@ -5900,6 +5935,12 @@ var SessionStoreInternal = {
savedTabGroup => !openTabGroupIdsInWindow.has(savedTabGroup.id) savedTabGroup => !openTabGroupIdsInWindow.has(savedTabGroup.id)
); );
} }
@@ -296,7 +296,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
// Move the originally open tabs to the end. // Move the originally open tabs to the end.
if (initialTabs) { if (initialTabs) {
@@ -6419,6 +6460,25 @@ var SessionStoreInternal = { @@ -6453,6 +6494,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.
@@ -322,7 +322,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
if (tabData.pinned) { if (tabData.pinned) {
tabbrowser.pinTab(tab); tabbrowser.pinTab(tab);
@@ -6567,6 +6627,9 @@ var SessionStoreInternal = { @@ -6601,6 +6661,9 @@ var SessionStoreInternal = {
aWindow.gURLBar.readOnly = false; aWindow.gURLBar.readOnly = false;
} }
} }
@@ -332,7 +332,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
let promiseParts = Promise.withResolvers(); let promiseParts = Promise.withResolvers();
aWindow.setTimeout(() => { aWindow.setTimeout(() => {
@@ -7343,7 +7406,7 @@ var SessionStoreInternal = { @@ -7389,7 +7452,7 @@ var SessionStoreInternal = {
let groupsToSave = new Map(); let groupsToSave = new Map();
for (let tIndex = 0; tIndex < window.tabs.length; ) { for (let tIndex = 0; tIndex < window.tabs.length; ) {
@@ -341,7 +341,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..53465df6060e6765e1e4564d340bba5f
// Adjust window.selected // Adjust window.selected
if (tIndex + 1 < window.selected) { if (tIndex + 1 < window.selected) {
window.selected -= 1; window.selected -= 1;
@@ -7358,7 +7421,7 @@ var SessionStoreInternal = { @@ -7404,7 +7467,7 @@ var SessionStoreInternal = {
); );
// We don't want to increment tIndex here. // We don't want to increment tIndex here.
continue; continue;

View File

@@ -1,8 +1,8 @@
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 82721356d191055bec0d4b0ca49e481221988801..68437e6f9fa54fc75ca9e24d738e8afcd0ea22f8 100644 index 82721356d191055bec0d4b0ca49e481221988801..e01904a6ea73e068c236adecbac6a97adedb2bd3 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
@@ -85,7 +85,24 @@ class _TabState { @@ -85,7 +85,25 @@ class _TabState {
tabData.groupId = tab.group.id; tabData.groupId = tab.group.id;
} }
@@ -19,6 +19,7 @@ index 82721356d191055bec0d4b0ca49e481221988801..68437e6f9fa54fc75ca9e24d738e8afc
+ tabData.zenIsGlance = tab.hasAttribute("zen-glance-tab"); + tabData.zenIsGlance = tab.hasAttribute("zen-glance-tab");
+ tabData._zenPinnedInitialState = tab._zenPinnedInitialState; + tabData._zenPinnedInitialState = tab._zenPinnedInitialState;
+ tabData._zenIsActiveTab = tab._zenContentsVisible; + tabData._zenIsActiveTab = tab._zenContentsVisible;
+ tabData.zenLiveFolderItemId = tab.getAttribute("zen-live-folder-item-id");
+ +
tabData.searchMode = tab.ownerGlobal.gURLBar.getSearchMode(browser, true); tabData.searchMode = tab.ownerGlobal.gURLBar.getSearchMode(browser, true);
+ if (tabData.searchMode?.source === tab.ownerGlobal.UrlbarUtils.RESULT_SOURCE.ZEN_ACTIONS) { + if (tabData.searchMode?.source === tab.ownerGlobal.UrlbarUtils.RESULT_SOURCE.ZEN_ACTIONS) {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js
index bd6db85732e6e99ca51ce9c4c1a7d469199cf8cb..6c7859c1014baf4e343714ef797cf558d065e189 100644 index 86a74b2abfe9b49d71ce61fefc636b865bef83a9..7c18fcf15d127d79febb03ca15f0193dd6263604 100644
--- a/browser/components/sidebar/browser-sidebar.js --- a/browser/components/sidebar/browser-sidebar.js
+++ b/browser/components/sidebar/browser-sidebar.js +++ b/browser/components/sidebar/browser-sidebar.js
@@ -793,7 +793,7 @@ var SidebarController = { @@ -799,7 +799,7 @@ var SidebarController = {
setPosition() { setPosition() {
// First reset all ordinals to match DOM ordering. // First reset all ordinals to match DOM ordering.
let contentArea = document.getElementById("tabbrowser-tabbox"); let contentArea = document.getElementById("tabbrowser-tabbox");

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/TabUnloader.sys.mjs b/browser/components/tabbrowser/TabUnloader.sys.mjs diff --git a/browser/components/tabbrowser/TabUnloader.sys.mjs b/browser/components/tabbrowser/TabUnloader.sys.mjs
index aefccef39f0b81176a5710a794e8a5e2650d6507..e073c65790df6d55e827a4f4596199f4f1a99a57 100644 index aefccef39f0b81176a5710a794e8a5e2650d6507..53c838b3bc322cadee4ef9b411d02fc0af8c35e5 100644
--- a/browser/components/tabbrowser/TabUnloader.sys.mjs --- a/browser/components/tabbrowser/TabUnloader.sys.mjs
+++ b/browser/components/tabbrowser/TabUnloader.sys.mjs +++ b/browser/components/tabbrowser/TabUnloader.sys.mjs
@@ -52,7 +52,7 @@ let CRITERIA_WEIGHT = 1; @@ -52,7 +52,7 @@ let CRITERIA_WEIGHT = 1;
@@ -11,3 +11,12 @@ index aefccef39f0b81176a5710a794e8a5e2650d6507..e073c65790df6d55e827a4f4596199f4
return weight; return weight;
} }
@@ -106,7 +106,7 @@ let DefaultTabUnloaderMethods = {
*iterateTabs() {
for (let win of Services.wm.getEnumerator("navigator:browser")) {
- for (let tab of win.gBrowser.tabs) {
+ for (let tab of win.gZenWorkspaces.allStoredTabs) {
yield { tab, gBrowser: win.gBrowser };
}
}

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/browser-ctrlTab.js b/browser/components/tabbrowser/content/browser-ctrlTab.js diff --git a/browser/components/tabbrowser/content/browser-ctrlTab.js b/browser/components/tabbrowser/content/browser-ctrlTab.js
index 3330dc133c120e7fbeecd2a36c71f9dfba60b3fb..0243cdfe67e5eb3f68fc7cde66bb3809e79bd6c3 100644 index b435917892ac77fb433ea709f2524db2f2347a1d..fcbfeb92f3ae4effbfd3333514ed4d412e3063c6 100644
--- a/browser/components/tabbrowser/content/browser-ctrlTab.js --- a/browser/components/tabbrowser/content/browser-ctrlTab.js
+++ b/browser/components/tabbrowser/content/browser-ctrlTab.js +++ b/browser/components/tabbrowser/content/browser-ctrlTab.js
@@ -252,7 +252,8 @@ var ctrlTab = { @@ -252,7 +252,8 @@ var ctrlTab = {

View File

@@ -1,5 +1,5 @@
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 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a1ef240b5 100644 index 730190d845f5312736f437cdc654c1693241ce56..d0404c46955fa16103a6f83e410f4f8ad7e78655 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
@@ -35,6 +35,9 @@ @@ -35,6 +35,9 @@
@@ -12,7 +12,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
if (isTab(element) || isSplitViewWrapper(element)) { if (isTab(element) || isSplitViewWrapper(element)) {
return element; return element;
} }
@@ -115,6 +118,9 @@ @@ -118,6 +121,9 @@
} }
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0); let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
@@ -22,18 +22,18 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
if ( if (
(dropEffect == "move" || dropEffect == "copy") && (dropEffect == "move" || dropEffect == "copy") &&
document == draggedTab.ownerDocument && document == draggedTab.ownerDocument &&
@@ -133,10 +139,6 @@ @@ -136,10 +142,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.
- if (this._isContainerVerticalPinnedGrid(draggedTab)) { - if (this._tabbrowserTabs.isContainerVerticalPinnedGrid(draggedTab)) {
- this._animateExpandedPinnedTabMove(event); - this._animateExpandedPinnedTabMove(event);
- return; - return;
- } - }
this._animateTabMove(event); this._animateTabMove(event);
return; return;
} }
@@ -269,6 +271,10 @@ @@ -272,6 +274,10 @@
this._tabDropIndicator.hidden = true; this._tabDropIndicator.hidden = true;
event.stopPropagation(); event.stopPropagation();
@@ -44,7 +44,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
if (draggedTab && dropEffect == "copy") { if (draggedTab && dropEffect == "copy") {
let duplicatedDraggedTab; let duplicatedDraggedTab;
let duplicatedTabs = []; let duplicatedTabs = [];
@@ -294,8 +300,9 @@ @@ -297,8 +303,9 @@
let translateOffsetY = oldTranslateY % tabHeight; let translateOffsetY = oldTranslateY % tabHeight;
let newTranslateX = oldTranslateX - translateOffsetX; let newTranslateX = oldTranslateX - translateOffsetX;
let newTranslateY = oldTranslateY - translateOffsetY; let newTranslateY = oldTranslateY - translateOffsetY;
@@ -54,9 +54,9 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed; + let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
+ let essential = draggedTab.hasAttribute("zen-essential"); + let essential = draggedTab.hasAttribute("zen-essential");
if (this._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
@@ -311,9 +318,12 @@ @@ -314,9 +321,12 @@
} }
} else { } else {
let tabs = this._tabbrowserTabs.dragAndDropElements.slice( let tabs = this._tabbrowserTabs.dragAndDropElements.slice(
@@ -71,7 +71,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
let size = this._tabbrowserTabs.verticalMode ? "height" : "width"; let size = this._tabbrowserTabs.verticalMode ? "height" : "width";
let screenAxis = this._tabbrowserTabs.verticalMode let screenAxis = this._tabbrowserTabs.verticalMode
? "screenY" ? "screenY"
@@ -365,11 +375,13 @@ @@ -368,11 +378,13 @@
this._dragToPinPromoCard, this._dragToPinPromoCard,
]; ];
let shouldPin = let shouldPin =
@@ -85,7 +85,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
isTab(draggedTab) && isTab(draggedTab) &&
draggedTab.pinned && draggedTab.pinned &&
this._tabbrowserTabs.arrowScrollbox.contains(event.target); this._tabbrowserTabs.arrowScrollbox.contains(event.target);
@@ -432,6 +444,7 @@ @@ -436,6 +448,7 @@
} }
} }
@@ -93,7 +93,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
if (shouldTranslate) { if (shouldTranslate) {
let translationPromises = []; let translationPromises = [];
for (let item of movingTabs) { for (let item of movingTabs) {
@@ -443,7 +456,7 @@ @@ -447,7 +460,7 @@
item.removeAttribute("tabdrop-samewindow"); item.removeAttribute("tabdrop-samewindow");
resolve(); resolve();
}; };
@@ -102,7 +102,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
postTransitionCleanup(); postTransitionCleanup();
} else { } else {
let onTransitionEnd = transitionendEvent => { let onTransitionEnd = transitionendEvent => {
@@ -513,7 +526,7 @@ @@ -521,7 +534,7 @@
if (tab.selected) { if (tab.selected) {
selectedTab = tab; selectedTab = tab;
indexForSelectedTab = newIndex; indexForSelectedTab = newIndex;
@@ -111,7 +111,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
const newTab = gBrowser.adoptTab(tab, { const newTab = gBrowser.adoptTab(tab, {
elementIndex: newIndex, elementIndex: newIndex,
selectTab: tab == draggedTab, selectTab: tab == draggedTab,
@@ -523,7 +536,7 @@ @@ -531,7 +544,7 @@
} }
} }
} }
@@ -120,7 +120,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
const newTab = gBrowser.adoptTab(selectedTab, { const newTab = gBrowser.adoptTab(selectedTab, {
elementIndex: indexForSelectedTab, elementIndex: indexForSelectedTab,
selectTab: selectedTab == draggedTab, selectTab: selectedTab == draggedTab,
@@ -534,10 +547,6 @@ @@ -542,10 +555,6 @@
} }
// Restore tab selection // Restore tab selection
@@ -131,7 +131,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
} else { } else {
// Pass true to disallow dropping javascript: or data: urls // Pass true to disallow dropping javascript: or data: urls
let links; let links;
@@ -584,6 +593,7 @@ @@ -592,6 +601,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;
@@ -139,7 +139,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
gBrowser.loadTabs(urls, { gBrowser.loadTabs(urls, {
inBackground, inBackground,
replace, replace,
@@ -621,7 +631,16 @@ @@ -629,7 +639,16 @@
this._expandGroupOnDrop(draggedTab); this._expandGroupOnDrop(draggedTab);
} }
this._resetTabsAfterDrop(draggedTab.ownerDocument); this._resetTabsAfterDrop(draggedTab.ownerDocument);
@@ -157,11 +157,15 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
if ( if (
dt.mozUserCancelled || dt.mozUserCancelled ||
dt.dropEffect != "none" || dt.dropEffect != "none" ||
@@ -825,7 +844,10 @@ @@ -833,11 +852,10 @@
_getDragTarget(event, { ignoreSides = false } = {}) { _getDragTarget(event, { ignoreSides = false } = {}) {
let { target } = event; let { target } = event;
while (target) { while (target) {
- if (isTab(target) || isTabGroupLabel(target)) { - if (
- isTab(target) ||
- isTabGroupLabel(target) ||
- isSplitViewWrapper(target)
- ) {
+ if (isTab(target) || isTabGroupLabel(target) || target?.classList?.contains("tab-group-label-container")) { + if (isTab(target) || isTabGroupLabel(target) || target?.classList?.contains("tab-group-label-container")) {
+ if (target.classList?.contains("tab-group-label-container")) { + if (target.classList?.contains("tab-group-label-container")) {
+ target = target.querySelector(".tab-group-label"); + target = target.querySelector(".tab-group-label");
@@ -169,7 +173,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
break; break;
} }
target = target.parentNode; target = target.parentNode;
@@ -842,14 +864,17 @@ @@ -854,6 +872,9 @@
return null; return null;
} }
} }
@@ -179,17 +183,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
return target; return target;
} }
_isContainerVerticalPinnedGrid(tab) { @@ -883,7 +904,8 @@
return (
this._tabbrowserTabs.verticalMode &&
- tab.pinned &&
- this._tabbrowserTabs.hasAttribute("expanded") &&
+ tab.hasAttribute("zen-essential") &&
+ (this._tabbrowserTabs.hasAttribute("expanded") || document.documentElement.hasAttribute("zen-sidebar-expanded")) &&
!this._tabbrowserTabs.expandOnHover
);
}
@@ -880,7 +905,8 @@
isTabGroupLabel(draggedTab) && isTabGroupLabel(draggedTab) &&
draggedTab._dragData?.expandGroupOnDrop draggedTab._dragData?.expandGroupOnDrop
) { ) {
@@ -199,7 +193,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
} }
} }
@@ -1058,7 +1084,6 @@ @@ -1061,7 +1083,6 @@
// using updateDragImage. On Linux, we can use a panel. // using updateDragImage. On Linux, we can use a panel.
if (platform == "win" || platform == "macosx") { if (platform == "win" || platform == "macosx") {
captureListener = function () { captureListener = function () {
@@ -207,7 +201,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
}; };
} else { } else {
// Create a panel to use it in setDragImage // Create a panel to use it in setDragImage
@@ -1096,7 +1121,6 @@ @@ -1099,7 +1120,6 @@
); );
dragImageOffset = dragImageOffset * scale; dragImageOffset = dragImageOffset * scale;
} }
@@ -215,7 +209,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
// _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
@@ -1115,7 +1139,7 @@ @@ -1118,7 +1138,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 =
@@ -224,7 +218,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
tab._dragData = { tab._dragData = {
offsetX: this._tabbrowserTabs.verticalMode offsetX: this._tabbrowserTabs.verticalMode
@@ -1125,7 +1149,7 @@ @@ -1128,7 +1148,7 @@
? event.screenY - window.screenY - tabOffset ? event.screenY - window.screenY - tabOffset
: event.screenY - window.screenY, : event.screenY - window.screenY,
scrollPos: scrollPos:
@@ -233,7 +227,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
? this._tabbrowserTabs.pinnedTabsContainer.scrollPosition ? this._tabbrowserTabs.pinnedTabsContainer.scrollPosition
: this._tabbrowserTabs.arrowScrollbox.scrollPosition, : this._tabbrowserTabs.arrowScrollbox.scrollPosition,
screenX: event.screenX, screenX: event.screenX,
@@ -1152,6 +1176,7 @@ @@ -1155,6 +1175,7 @@
if (collapseTabGroupDuringDrag) { if (collapseTabGroupDuringDrag) {
tab.group.collapsed = true; tab.group.collapsed = true;
@@ -241,7 +235,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
} }
} }
} }
@@ -1176,6 +1201,7 @@ @@ -1179,6 +1200,7 @@
if (tabStripItemElement.hasAttribute("dragtarget")) { if (tabStripItemElement.hasAttribute("dragtarget")) {
return; return;
} }
@@ -249,7 +243,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
let isPinned = tab.pinned; let isPinned = tab.pinned;
let numPinned = gBrowser.pinnedTabCount; let numPinned = gBrowser.pinnedTabCount;
let dragAndDropElements = this._tabbrowserTabs.dragAndDropElements; let dragAndDropElements = this._tabbrowserTabs.dragAndDropElements;
@@ -1601,7 +1627,6 @@ @@ -1604,7 +1626,6 @@
for (let item of this._tabbrowserTabs.dragAndDropElements) { for (let item of this._tabbrowserTabs.dragAndDropElements) {
item = elementToMove(item); item = elementToMove(item);
@@ -257,7 +251,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
item.removeAttribute("multiselected-move-together"); item.removeAttribute("multiselected-move-together");
delete item._moveTogetherSelectedTabsData; delete item._moveTogetherSelectedTabsData;
} }
@@ -2429,7 +2454,6 @@ @@ -2432,7 +2453,6 @@
for (let item of this._tabbrowserTabs.dragAndDropElements) { for (let item of this._tabbrowserTabs.dragAndDropElements) {
this._resetGroupTarget(item); this._resetGroupTarget(item);
item = elementToMove(item); item = elementToMove(item);
@@ -265,7 +259,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
} }
this._tabbrowserTabs.removeAttribute("movingtab-group"); this._tabbrowserTabs.removeAttribute("movingtab-group");
this._tabbrowserTabs.removeAttribute("movingtab-ungroup"); this._tabbrowserTabs.removeAttribute("movingtab-ungroup");
@@ -2460,17 +2484,14 @@ @@ -2463,17 +2483,14 @@
tab.style.left = ""; tab.style.left = "";
tab.style.top = ""; tab.style.top = "";
tab.style.maxWidth = ""; tab.style.maxWidth = "";

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
index 6528da245d922e2ccdb59cbf8106055bc34d1e74..b5d5ac633c06d7d9c909ec9456a5f3c165a6b925 100644 index 836bee14d2b63604688ebe477a5d915a5e99b305..a675aed711560b4a44604fc17478cffa7fb68439 100644
--- a/browser/components/tabbrowser/content/tab.js --- a/browser/components/tabbrowser/content/tab.js
+++ b/browser/components/tabbrowser/content/tab.js +++ b/browser/components/tabbrowser/content/tab.js
@@ -21,6 +21,7 @@ @@ -21,6 +21,7 @@
@@ -14,7 +14,7 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..b5d5ac633c06d7d9c909ec9456a5f3c1
<hbox class="tab-secondary-label"> <hbox class="tab-secondary-label">
<label class="tab-icon-sound-label tab-icon-sound-pip-label" data-l10n-id="browser-tab-audio-pip" role="presentation"/> <label class="tab-icon-sound-label tab-icon-sound-pip-label" data-l10n-id="browser-tab-audio-pip" role="presentation"/>
</hbox> </hbox>
+ <label class="tab-reset-pin-label" data-l10n-id="tab-reset-pin-label" role="presentation"/> + <label class="zen-tab-sublabel" data-l10n-id="zen-tab-sublabel" data-l10n-args='{"tabSubtitle": "zen-default-pinned"}' role="presentation"/>
</vbox> </vbox>
<image class="tab-note-icon" role="presentation"/> <image class="tab-note-icon" role="presentation"/>
<image class="tab-close-button close-icon" role="button" data-l10n-id="tabbrowser-close-tabs-button" data-l10n-args='{"tabCount": 1}' keyNav="false"/> <image class="tab-close-button close-icon" role="button" data-l10n-id="tabbrowser-close-tabs-button" data-l10n-args='{"tabCount": 1}' keyNav="false"/>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66b00ec9a4 100644 index d7765e0adb37216d35f2125abf96025cbb150bab..d787c39f68ea4507b2cb902df325498dd65b1fba 100644
--- a/browser/components/tabbrowser/content/tabbrowser.js --- a/browser/components/tabbrowser/content/tabbrowser.js
+++ b/browser/components/tabbrowser/content/tabbrowser.js +++ b/browser/components/tabbrowser/content/tabbrowser.js
@@ -398,6 +398,7 @@ @@ -405,6 +405,7 @@
* @type {MozBrowser[]} * @type {MozBrowser[]}
*/ */
get splitViewBrowsers() { get splitViewBrowsers() {
@@ -10,7 +10,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
const browsers = []; const browsers = [];
if (this.#activeSplitView) { if (this.#activeSplitView) {
for (const tab of this.#activeSplitView.tabs) { for (const tab of this.#activeSplitView.tabs) {
@@ -462,15 +463,66 @@ @@ -469,15 +470,66 @@
return this.tabContainer.visibleTabs; return this.tabContainer.visibleTabs;
} }
@@ -79,7 +79,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
set selectedTab(val) { set selectedTab(val) {
if ( if (
gSharedTabWarning.willShowSharedTabWarning(val) || gSharedTabWarning.willShowSharedTabWarning(val) ||
@@ -546,6 +598,10 @@ @@ -553,6 +605,10 @@
userContextId = parseInt(tabArgument.getAttribute("usercontextid"), 10); userContextId = parseInt(tabArgument.getAttribute("usercontextid"), 10);
} }
@@ -90,7 +90,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
if (tabArgument && tabArgument.linkedBrowser) { if (tabArgument && tabArgument.linkedBrowser) {
remoteType = tabArgument.linkedBrowser.remoteType; remoteType = tabArgument.linkedBrowser.remoteType;
initialBrowsingContextGroupId = initialBrowsingContextGroupId =
@@ -625,6 +681,8 @@ @@ -645,6 +701,8 @@
this.tabpanels.appendChild(panel); this.tabpanels.appendChild(panel);
let tab = this.tabs[0]; let tab = this.tabs[0];
@@ -99,7 +99,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
tab.linkedPanel = uniqueId; tab.linkedPanel = uniqueId;
this._selectedTab = tab; this._selectedTab = tab;
this._selectedBrowser = browser; this._selectedBrowser = browser;
@@ -912,13 +970,18 @@ @@ -932,13 +990,18 @@
} }
this.showTab(aTab); this.showTab(aTab);
@@ -119,7 +119,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
aTab.setAttribute("pinned", "true"); aTab.setAttribute("pinned", "true");
this._updateTabBarForPinnedTabs(); this._updateTabBarForPinnedTabs();
@@ -931,11 +994,19 @@ @@ -951,11 +1014,19 @@
} }
this.#handleTabMove(aTab, () => { this.#handleTabMove(aTab, () => {
@@ -140,7 +140,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
}); });
aTab.style.marginInlineStart = ""; aTab.style.marginInlineStart = "";
@@ -1112,6 +1183,9 @@ @@ -1132,6 +1203,9 @@
let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"]; let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"];
@@ -150,7 +150,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
if ( if (
aIconURL && aIconURL &&
!LOCAL_PROTOCOLS.some(protocol => aIconURL.startsWith(protocol)) !LOCAL_PROTOCOLS.some(protocol => aIconURL.startsWith(protocol))
@@ -1121,6 +1195,9 @@ @@ -1141,6 +1215,9 @@
); );
return; return;
} }
@@ -160,7 +160,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
let browser = this.getBrowserForTab(aTab); let browser = this.getBrowserForTab(aTab);
browser.mIconURL = aIconURL; browser.mIconURL = aIconURL;
@@ -1393,7 +1470,6 @@ @@ -1422,7 +1499,6 @@
// Preview mode should not reset the owner // Preview mode should not reset the owner
if (!this._previewMode && !oldTab.selected) { if (!this._previewMode && !oldTab.selected) {
@@ -168,7 +168,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} }
let lastRelatedTab = this._lastRelatedTabMap.get(oldTab); let lastRelatedTab = this._lastRelatedTabMap.get(oldTab);
@@ -1484,6 +1560,7 @@ @@ -1513,6 +1589,7 @@
if (!this._previewMode) { if (!this._previewMode) {
newTab.recordTimeFromUnloadToReload(); newTab.recordTimeFromUnloadToReload();
newTab.updateLastAccessed(); newTab.updateLastAccessed();
@@ -176,7 +176,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
oldTab.updateLastAccessed(); oldTab.updateLastAccessed();
// if this is the foreground window, update the last-seen timestamps. // if this is the foreground window, update the last-seen timestamps.
if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) { if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) {
@@ -1636,6 +1713,9 @@ @@ -1665,6 +1742,9 @@
} }
let activeEl = document.activeElement; let activeEl = document.activeElement;
@@ -186,7 +186,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
// If focus is on the old tab, move it to the new tab. // If focus is on the old tab, move it to the new tab.
if (activeEl == oldTab) { if (activeEl == oldTab) {
newTab.focus(); newTab.focus();
@@ -1958,7 +2038,12 @@ @@ -1987,7 +2067,12 @@
return this._setTabLabel(aTab, aLabel); return this._setTabLabel(aTab, aLabel);
} }
@@ -200,7 +200,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
if (!aLabel || aLabel.includes("about:reader?")) { if (!aLabel || aLabel.includes("about:reader?")) {
return false; return false;
} }
@@ -2067,7 +2152,7 @@ @@ -2096,7 +2181,7 @@
newIndex = this.selectedTab._tPos + 1; newIndex = this.selectedTab._tPos + 1;
} }
@@ -209,7 +209,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
if (this.isTabGroupLabel(targetTab)) { if (this.isTabGroupLabel(targetTab)) {
throw new Error( throw new Error(
"Replacing a tab group label with a tab is not supported" "Replacing a tab group label with a tab is not supported"
@@ -2342,6 +2427,7 @@ @@ -2371,6 +2456,7 @@
uriIsAboutBlank, uriIsAboutBlank,
userContextId, userContextId,
skipLoad, skipLoad,
@@ -217,17 +217,17 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} = {}) { } = {}) {
let b = document.createXULElement("browser"); let b = document.createXULElement("browser");
// Use the JSM global to create the permanentKey, so that if the // Use the JSM global to create the permanentKey, so that if the
@@ -2415,8 +2501,7 @@ @@ -2444,8 +2530,7 @@
// we use a different attribute name for this? // we use a different attribute name for this?
b.setAttribute("name", name); b.setAttribute("name", name);
} }
- -
- if (this._allowTransparentBrowser) { - if (AIWindow.isAIWindowActive(window) || this._allowTransparentBrowser) {
+ if (this._allowTransparentBrowser || _forZenEmptyTab) { + if (this._allowTransparentBrowser || _forZenEmptyTab) {
b.setAttribute("transparent", "true"); b.setAttribute("transparent", "true");
} }
@@ -2581,7 +2666,7 @@ @@ -2610,7 +2695,7 @@
let panel = this.getPanel(browser); let panel = this.getPanel(browser);
let uniqueId = this._generateUniquePanelID(); let uniqueId = this._generateUniquePanelID();
@@ -236,7 +236,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
aTab.linkedPanel = uniqueId; aTab.linkedPanel = uniqueId;
// Inject the <browser> into the DOM if necessary. // Inject the <browser> into the DOM if necessary.
@@ -2640,8 +2725,8 @@ @@ -2670,8 +2755,8 @@
// If we transitioned from one browser to two browsers, we need to set // If we transitioned from one browser to two browsers, we need to set
// hasSiblings=false on both the existing browser and the new browser. // hasSiblings=false on both the existing browser and the new browser.
if (this.tabs.length == 2) { if (this.tabs.length == 2) {
@@ -247,7 +247,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} else { } else {
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1; aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
} }
@@ -2828,7 +2913,6 @@ @@ -2858,7 +2943,6 @@
this.selectedTab = this.addTrustedTab(BROWSER_NEW_TAB_URL, { this.selectedTab = this.addTrustedTab(BROWSER_NEW_TAB_URL, {
tabIndex: tab._tPos + 1, tabIndex: tab._tPos + 1,
userContextId: tab.userContextId, userContextId: tab.userContextId,
@@ -255,7 +255,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
focusUrlBar: true, focusUrlBar: true,
}); });
resolve(this.selectedBrowser); resolve(this.selectedBrowser);
@@ -2938,6 +3022,9 @@ @@ -2968,6 +3052,9 @@
schemelessInput, schemelessInput,
hasValidUserGestureActivation = false, hasValidUserGestureActivation = false,
textDirectiveUserActivation = false, textDirectiveUserActivation = false,
@@ -265,7 +265,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} = {} } = {}
) { ) {
// all callers of addTab that pass a params object need to pass // all callers of addTab that pass a params object need to pass
@@ -2948,10 +3035,17 @@ @@ -2978,10 +3065,17 @@
); );
} }
@@ -283,7 +283,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
// If we're opening a foreground tab, set the owner by default. // If we're opening a foreground tab, set the owner by default.
ownerTab ??= inBackground ? null : this.selectedTab; ownerTab ??= inBackground ? null : this.selectedTab;
@@ -2959,6 +3053,7 @@ @@ -2989,6 +3083,7 @@
if (this.selectedTab.owner) { if (this.selectedTab.owner) {
this.selectedTab.owner = null; this.selectedTab.owner = null;
} }
@@ -291,7 +291,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
// Find the tab that opened this one, if any. This is used for // Find the tab that opened this one, if any. This is used for
// determining positioning, and inherited attributes such as the // determining positioning, and inherited attributes such as the
@@ -3011,6 +3106,22 @@ @@ -3041,6 +3136,22 @@
noInitialLabel, noInitialLabel,
skipBackgroundNotify, skipBackgroundNotify,
}); });
@@ -314,7 +314,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
if (insertTab) { if (insertTab) {
// Insert the tab into the tab container in the correct position. // Insert the tab into the tab container in the correct position.
this.#insertTabAtIndex(t, { this.#insertTabAtIndex(t, {
@@ -3019,6 +3130,7 @@ @@ -3049,6 +3160,7 @@
ownerTab, ownerTab,
openerTab, openerTab,
pinned, pinned,
@@ -322,7 +322,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
bulkOrderedOpen, bulkOrderedOpen,
tabGroup: tabGroup ?? openerTab?.group, tabGroup: tabGroup ?? openerTab?.group,
}); });
@@ -3037,6 +3149,7 @@ @@ -3067,6 +3179,7 @@
openWindowInfo, openWindowInfo,
skipLoad, skipLoad,
triggeringRemoteType, triggeringRemoteType,
@@ -330,7 +330,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
})); }));
if (focusUrlBar) { if (focusUrlBar) {
@@ -3161,6 +3274,12 @@ @@ -3191,6 +3304,12 @@
} }
} }
@@ -343,7 +343,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
// Additionally send pinned tab events // Additionally send pinned tab events
if (pinned) { if (pinned) {
this.#notifyPinnedStatus(t); this.#notifyPinnedStatus(t);
@@ -3375,6 +3494,7 @@ @@ -3426,6 +3545,7 @@
isAdoptingGroup = false, isAdoptingGroup = false,
isUserTriggered = false, isUserTriggered = false,
telemetryUserCreateSource = "unknown", telemetryUserCreateSource = "unknown",
@@ -351,7 +351,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} = {} } = {}
) { ) {
if ( if (
@@ -3385,9 +3505,6 @@ @@ -3436,9 +3556,6 @@
!this.isSplitViewWrapper(tabOrSplitView) !this.isSplitViewWrapper(tabOrSplitView)
) )
) { ) {
@@ -361,7 +361,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} }
if (!color) { if (!color) {
@@ -3408,9 +3525,14 @@ @@ -3459,9 +3576,14 @@
label, label,
isAdoptingGroup isAdoptingGroup
); );
@@ -378,7 +378,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
); );
group.addTabs(tabsAndSplitViews); group.addTabs(tabsAndSplitViews);
@@ -3531,7 +3653,7 @@ @@ -3582,7 +3704,7 @@
} }
this.#handleTabMove(tab, () => this.#handleTabMove(tab, () =>
@@ -387,7 +387,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
); );
} }
@@ -3599,6 +3721,7 @@ @@ -3666,6 +3788,7 @@
color: group.color, color: group.color,
insertBefore: newTabs[0], insertBefore: newTabs[0],
isAdoptingGroup: true, isAdoptingGroup: true,
@@ -395,7 +395,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
}); });
} }
@@ -3746,6 +3869,7 @@ @@ -3856,6 +3979,7 @@
openWindowInfo, openWindowInfo,
skipLoad, skipLoad,
triggeringRemoteType, triggeringRemoteType,
@@ -403,7 +403,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} }
) { ) {
// If we don't have a preferred remote type (or it is `NOT_REMOTE`), and // If we don't have a preferred remote type (or it is `NOT_REMOTE`), and
@@ -3815,6 +3939,7 @@ @@ -3925,6 +4049,7 @@
openWindowInfo, openWindowInfo,
name, name,
skipLoad, skipLoad,
@@ -411,16 +411,19 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
}); });
} }
@@ -4003,7 +4128,7 @@ @@ -4120,9 +4245,9 @@
}
// Add a new tab if needed. // Add a new tab if needed.
if (!tab) { - if (!tab) {
+ if (!tab || tab?._markedForReplacement) {
let createLazyBrowser = let createLazyBrowser =
- restoreTabsLazily && !select && !tabData.pinned; - restoreTabsLazily && !select && !tabData.pinned;
+ restoreTabsLazily && !(tabData.pinned && !Services.prefs.getBoolPref("browser.sessionstore.restore_pinned_tabs_on_demand")); + restoreTabsLazily && !(tabData.pinned && !Services.prefs.getBoolPref("browser.sessionstore.restore_pinned_tabs_on_demand"));
let url = "about:blank"; let url = "about:blank";
if (tabData.entries?.length) { if (tabData.entries?.length) {
@@ -4040,8 +4165,10 @@ @@ -4159,8 +4284,10 @@
insertTab: false, insertTab: false,
skipLoad: true, skipLoad: true,
preferredRemoteType, preferredRemoteType,
@@ -432,17 +435,17 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
if (select) { if (select) {
tabToSelect = tab; tabToSelect = tab;
} }
@@ -4053,7 +4180,8 @@ @@ -4172,7 +4299,8 @@
this.pinTab(tab); this.pinTab(tab);
// Then ensure all the tab open/pinning information is sent. // Then ensure all the tab open/pinning information is sent.
this._fireTabOpen(tab, {}); this._fireTabOpen(tab, {});
- } else if (tabData.groupId) { - } else if (tabData.groupId) {
+ } + }
+ if (tabData.groupId) { + if (tabData.groupId && tabGroupWorkingData.get(tabData.groupId)) {
let { groupId } = tabData; let { groupId } = tabData;
const tabGroup = tabGroupWorkingData.get(groupId); const tabGroup = tabGroupWorkingData.get(groupId);
// if a tab refers to a tab group we don't know, skip any group // if a tab refers to a tab group we don't know, skip any group
@@ -4067,7 +4195,10 @@ @@ -4186,7 +4314,10 @@
tabGroup.stateData.id, tabGroup.stateData.id,
tabGroup.stateData.color, tabGroup.stateData.color,
tabGroup.stateData.collapsed, tabGroup.stateData.collapsed,
@@ -454,7 +457,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
); );
tabsFragment.appendChild(tabGroup.node); tabsFragment.appendChild(tabGroup.node);
} }
@@ -4112,9 +4243,23 @@ @@ -4231,9 +4362,23 @@
// to remove the old selected tab. // to remove the old selected tab.
if (tabToSelect) { if (tabToSelect) {
let leftoverTab = this.selectedTab; let leftoverTab = this.selectedTab;
@@ -470,15 +473,15 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
+ gZenWorkspaces._initialTab._shouldRemove = true; + gZenWorkspaces._initialTab._shouldRemove = true;
+ } + }
+ } + }
+ } }
+ else { + else {
+ gZenWorkspaces._tabToRemoveForEmpty = this.selectedTab; + gZenWorkspaces._tabToRemoveForEmpty = this.selectedTab;
} + }
+ this._hasAlreadyInitializedZenSessionStore = true; + this._hasAlreadyInitializedZenSessionStore = true;
if (tabs.length > 1 || !tabs[0].selected) { if (tabs.length > 1 || !tabs[0].selected) {
this._updateTabsAfterInsert(); this._updateTabsAfterInsert();
@@ -4305,11 +4450,14 @@ @@ -4424,11 +4569,14 @@
if (ownerTab) { if (ownerTab) {
tab.owner = ownerTab; tab.owner = ownerTab;
} }
@@ -494,7 +497,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
if ( if (
!bulkOrderedOpen && !bulkOrderedOpen &&
((openerTab && ((openerTab &&
@@ -4321,7 +4469,7 @@ @@ -4440,7 +4588,7 @@
let lastRelatedTab = let lastRelatedTab =
openerTab && this._lastRelatedTabMap.get(openerTab); openerTab && this._lastRelatedTabMap.get(openerTab);
let previousTab = lastRelatedTab || openerTab || this.selectedTab; let previousTab = lastRelatedTab || openerTab || this.selectedTab;
@@ -503,7 +506,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
tabGroup = previousTab.group; tabGroup = previousTab.group;
} }
if ( if (
@@ -4337,7 +4485,7 @@ @@ -4456,7 +4604,7 @@
previousTab.splitview previousTab.splitview
) + 1; ) + 1;
} else if (previousTab.visible) { } else if (previousTab.visible) {
@@ -512,7 +515,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} else if (previousTab == FirefoxViewHandler.tab) { } else if (previousTab == FirefoxViewHandler.tab) {
elementIndex = 0; elementIndex = 0;
} }
@@ -4365,14 +4513,14 @@ @@ -4484,14 +4632,14 @@
} }
// Ensure index is within bounds. // Ensure index is within bounds.
if (tab.pinned) { if (tab.pinned) {
@@ -531,7 +534,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
if (pinned && !itemAfter?.pinned) { if (pinned && !itemAfter?.pinned) {
itemAfter = null; itemAfter = null;
@@ -4385,7 +4533,7 @@ @@ -4504,7 +4652,7 @@
this.tabContainer._invalidateCachedTabs(); this.tabContainer._invalidateCachedTabs();
@@ -540,7 +543,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
if ( if (
(this.isTab(itemAfter) && itemAfter.group == tabGroup) || (this.isTab(itemAfter) && itemAfter.group == tabGroup) ||
this.isSplitViewWrapper(itemAfter) this.isSplitViewWrapper(itemAfter)
@@ -4416,7 +4564,11 @@ @@ -4535,7 +4683,11 @@
const tabContainer = pinned const tabContainer = pinned
? this.tabContainer.pinnedTabsContainer ? this.tabContainer.pinnedTabsContainer
: this.tabContainer; : this.tabContainer;
@@ -552,7 +555,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} }
if (tab.group?.collapsed) { if (tab.group?.collapsed) {
@@ -4431,6 +4583,7 @@ @@ -4550,6 +4702,7 @@
if (pinned) { if (pinned) {
this._updateTabBarForPinnedTabs(); this._updateTabBarForPinnedTabs();
} }
@@ -560,7 +563,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
TabBarVisibility.update(); TabBarVisibility.update();
} }
@@ -4983,6 +5136,7 @@ @@ -5102,6 +5255,7 @@
telemetrySource, telemetrySource,
} = {} } = {}
) { ) {
@@ -568,7 +571,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs // When 'closeWindowWithLastTab' pref is enabled, closing all tabs
// can be considered equivalent to closing the window. // can be considered equivalent to closing the window.
if ( if (
@@ -5072,6 +5226,7 @@ @@ -5191,6 +5345,7 @@
if (lastToClose) { if (lastToClose) {
this.removeTab(lastToClose, aParams); this.removeTab(lastToClose, aParams);
} }
@@ -576,7 +579,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} }
@@ -5110,6 +5265,12 @@ @@ -5229,6 +5384,12 @@
aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start(); aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start();
} }
@@ -589,7 +592,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
// Handle requests for synchronously removing an already // Handle requests for synchronously removing an already
// asynchronously closing tab. // asynchronously closing tab.
if (!animate && aTab.closing) { if (!animate && aTab.closing) {
@@ -5124,6 +5285,9 @@ @@ -5243,6 +5404,9 @@
// state). // state).
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width; let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
let isLastTab = this.#isLastTabInWindow(aTab); let isLastTab = this.#isLastTabInWindow(aTab);
@@ -599,13 +602,13 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
if ( if (
!this._beginRemoveTab(aTab, { !this._beginRemoveTab(aTab, {
closeWindowFastpath: true, closeWindowFastpath: true,
@@ -5172,7 +5336,13 @@ @@ -5291,7 +5455,13 @@
// We're not animating, so we can cancel the animation stopwatch. // We're not animating, so we can cancel the animation stopwatch.
Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId); Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId);
aTab._closeTimeAnimTimerId = null; aTab._closeTimeAnimTimerId = null;
- this._endRemoveTab(aTab); - this._endRemoveTab(aTab);
+ if (animate && !gReduceMotion && !(gZenUIManager.testingEnabled && !gZenUIManager.profilingEnabled)) { + if (animate && !gReduceMotion && !(gZenUIManager.testingEnabled && !gZenUIManager.profilingEnabled)) {
+ gZenVerticalTabsManager.animateTabClose(aTab, (animate && !gReduceMotion)).then(() => { + gZenVerticalTabsManager.animateItemClose(aTab, (animate && !gReduceMotion)).then(() => {
+ this._endRemoveTab(aTab); + this._endRemoveTab(aTab);
+ }); + });
+ } else { + } else {
@@ -614,7 +617,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
return; return;
} }
@@ -5306,7 +5476,7 @@ @@ -5425,7 +5595,7 @@
closeWindowWithLastTab != null closeWindowWithLastTab != null
? closeWindowWithLastTab ? closeWindowWithLastTab
: !window.toolbar.visible || : !window.toolbar.visible ||
@@ -623,7 +626,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
if (closeWindow) { if (closeWindow) {
// We've already called beforeunload on all the relevant tabs if we get here, // We've already called beforeunload on all the relevant tabs if we get here,
@@ -5330,6 +5500,7 @@ @@ -5449,6 +5619,7 @@
newTab = true; newTab = true;
} }
@@ -631,7 +634,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
aTab._endRemoveArgs = [closeWindow, newTab]; aTab._endRemoveArgs = [closeWindow, newTab];
// swapBrowsersAndCloseOther will take care of closing the window without animation. // swapBrowsersAndCloseOther will take care of closing the window without animation.
@@ -5370,13 +5541,7 @@ @@ -5489,13 +5660,7 @@
aTab._mouseleave(); aTab._mouseleave();
if (newTab) { if (newTab) {
@@ -646,7 +649,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} else { } else {
TabBarVisibility.update(); TabBarVisibility.update();
} }
@@ -5509,6 +5674,7 @@ @@ -5628,6 +5793,7 @@
this.tabs[i]._tPos = i; this.tabs[i]._tPos = i;
} }
@@ -654,7 +657,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
if (!this._windowIsClosing) { if (!this._windowIsClosing) {
// update tab close buttons state // update tab close buttons state
this.tabContainer._updateCloseButtons(); this.tabContainer._updateCloseButtons();
@@ -5732,6 +5898,7 @@ @@ -5851,6 +6017,7 @@
} }
let excludeTabs = new Set(aExcludeTabs); let excludeTabs = new Set(aExcludeTabs);
@@ -662,7 +665,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
// If this tab has a successor, it should be selectable, since // If this tab has a successor, it should be selectable, since
// hiding or closing a tab removes that tab as a successor. // hiding or closing a tab removes that tab as a successor.
@@ -5744,15 +5911,22 @@ @@ -5863,15 +6030,22 @@
!excludeTabs.has(aTab.owner) && !excludeTabs.has(aTab.owner) &&
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose") Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
) { ) {
@@ -687,7 +690,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
let tab = this.tabContainer.findNextTab(aTab, { let tab = this.tabContainer.findNextTab(aTab, {
direction: 1, direction: 1,
filter: _tab => remainingTabs.includes(_tab), filter: _tab => remainingTabs.includes(_tab),
@@ -5766,7 +5940,7 @@ @@ -5885,7 +6059,7 @@
} }
if (tab) { if (tab) {
@@ -696,7 +699,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} }
// If no qualifying visible tab was found, see if there is a tab in // If no qualifying visible tab was found, see if there is a tab in
@@ -5787,7 +5961,7 @@ @@ -5906,7 +6080,7 @@
}); });
} }
@@ -705,7 +708,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} }
_blurTab(aTab) { _blurTab(aTab) {
@@ -5798,7 +5972,7 @@ @@ -5917,7 +6091,7 @@
* @returns {boolean} * @returns {boolean}
* False if swapping isn't permitted, true otherwise. * False if swapping isn't permitted, true otherwise.
*/ */
@@ -714,7 +717,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
// Do not allow transfering a private tab to a non-private window // Do not allow transfering a private tab to a non-private window
// and vice versa. // and vice versa.
if ( if (
@@ -5852,6 +6026,7 @@ @@ -5971,6 +6145,7 @@
// fire the beforeunload event in the process. Close the other // fire the beforeunload event in the process. Close the other
// window if this was its last tab. // window if this was its last tab.
if ( if (
@@ -722,7 +725,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
!remoteBrowser._beginRemoveTab(aOtherTab, { !remoteBrowser._beginRemoveTab(aOtherTab, {
adoptedByTab: aOurTab, adoptedByTab: aOurTab,
closeWindowWithLastTab: true, closeWindowWithLastTab: true,
@@ -5863,7 +6038,7 @@ @@ -5982,7 +6157,7 @@
// If this is the last tab of the window, hide the window // If this is the last tab of the window, hide the window
// immediately without animation before the docshell swap, to avoid // immediately without animation before the docshell swap, to avoid
// about:blank being painted. // about:blank being painted.
@@ -731,7 +734,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
if (closeWindow) { if (closeWindow) {
let win = aOtherTab.ownerGlobal; let win = aOtherTab.ownerGlobal;
win.windowUtils.suppressAnimation(true); win.windowUtils.suppressAnimation(true);
@@ -5987,11 +6162,13 @@ @@ -6110,11 +6285,13 @@
} }
// Finish tearing down the tab that's going away. // Finish tearing down the tab that's going away.
@@ -745,7 +748,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
this.setTabTitle(aOurTab); this.setTabTitle(aOurTab);
@@ -6193,10 +6370,10 @@ @@ -6316,10 +6493,10 @@
SessionStore.deleteCustomTabValue(aTab, "hiddenBy"); SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
} }
@@ -758,7 +761,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
aTab.selected || aTab.selected ||
aTab.closing || aTab.closing ||
// Tabs that are sharing the screen, microphone or camera cannot be hidden. // Tabs that are sharing the screen, microphone or camera cannot be hidden.
@@ -6254,7 +6431,8 @@ @@ -6377,7 +6554,8 @@
* *
* @param {MozTabbrowserTab|MozTabbrowserTabGroup|MozTabbrowserTabGroup.labelElement} aTab * @param {MozTabbrowserTab|MozTabbrowserTabGroup|MozTabbrowserTabGroup.labelElement} aTab
*/ */
@@ -768,7 +771,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
if (this.tabs.length == 1) { if (this.tabs.length == 1) {
return null; return null;
} }
@@ -6278,12 +6456,14 @@ @@ -6401,12 +6579,14 @@
} }
// tell a new window to take the "dropped" tab // tell a new window to take the "dropped" tab
@@ -784,7 +787,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} }
/** /**
@@ -6388,7 +6568,7 @@ @@ -6511,7 +6691,7 @@
* `true` if element is a `<tab-group>` * `true` if element is a `<tab-group>`
*/ */
isTabGroup(element) { isTabGroup(element) {
@@ -793,7 +796,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} }
/** /**
@@ -6473,8 +6653,8 @@ @@ -6596,8 +6776,8 @@
} }
// Don't allow mixing pinned and unpinned tabs. // Don't allow mixing pinned and unpinned tabs.
@@ -804,7 +807,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} else { } else {
tabIndex = Math.max(tabIndex, this.pinnedTabCount); tabIndex = Math.max(tabIndex, this.pinnedTabCount);
} }
@@ -6500,10 +6680,16 @@ @@ -6623,10 +6803,16 @@
this.#handleTabMove( this.#handleTabMove(
element, element,
() => { () => {
@@ -823,7 +826,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
if (neighbor && this.isTab(element) && tabIndex > element._tPos) { if (neighbor && this.isTab(element) && tabIndex > element._tPos) {
neighbor.after(element); neighbor.after(element);
} else { } else {
@@ -6561,23 +6747,31 @@ @@ -6684,23 +6870,31 @@
#moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) { #moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) {
if (this.isTabGroupLabel(targetElement)) { if (this.isTabGroupLabel(targetElement)) {
targetElement = targetElement.group; targetElement = targetElement.group;
@@ -861,7 +864,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} else if (!element.pinned && targetElement && targetElement.pinned) { } else if (!element.pinned && targetElement && targetElement.pinned) {
// If the caller asks to move an unpinned element next to a pinned // If the caller asks to move an unpinned element next to a pinned
// tab, move the unpinned element to be the first unpinned element // tab, move the unpinned element to be the first unpinned element
@@ -6590,14 +6784,38 @@ @@ -6713,14 +6907,38 @@
// move the tab group right before the first unpinned tab. // move the tab group right before the first unpinned tab.
// 4. Moving a tab group and the first unpinned tab is grouped: // 4. Moving a tab group and the first unpinned tab is grouped:
// move the tab group right before the first unpinned tab's tab group. // move the tab group right before the first unpinned tab's tab group.
@@ -901,7 +904,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
element.pinned element.pinned
? this.tabContainer.pinnedTabsContainer ? this.tabContainer.pinnedTabsContainer
: this.tabContainer; : this.tabContainer;
@@ -6606,11 +6824,15 @@ @@ -6729,11 +6947,15 @@
element, element,
() => { () => {
if (moveBefore) { if (moveBefore) {
@@ -918,7 +921,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
} }
}, },
metricsContext metricsContext
@@ -6676,10 +6898,10 @@ @@ -6799,10 +7021,10 @@
* @param {TabMetricsContext} [metricsContext] * @param {TabMetricsContext} [metricsContext]
*/ */
moveTabToExistingGroup(aTab, aGroup, metricsContext) { moveTabToExistingGroup(aTab, aGroup, metricsContext) {
@@ -931,7 +934,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
return; return;
} }
if (aTab.group && aTab.group.id === aGroup.id) { if (aTab.group && aTab.group.id === aGroup.id) {
@@ -6751,6 +6973,7 @@ @@ -6874,6 +7096,7 @@
let state = { let state = {
tabIndex: tab._tPos, tabIndex: tab._tPos,
@@ -939,7 +942,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
}; };
if (tab.visible) { if (tab.visible) {
state.elementIndex = tab.elementIndex; state.elementIndex = tab.elementIndex;
@@ -6777,7 +7000,7 @@ @@ -6903,7 +7126,7 @@
let changedTabGroup = let changedTabGroup =
previousTabState.tabGroupId != currentTabState.tabGroupId; previousTabState.tabGroupId != currentTabState.tabGroupId;
@@ -948,7 +951,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
tab.dispatchEvent( tab.dispatchEvent(
new CustomEvent("TabMove", { new CustomEvent("TabMove", {
bubbles: true, bubbles: true,
@@ -6818,6 +7041,10 @@ @@ -6942,6 +7165,10 @@
moveActionCallback(); moveActionCallback();
@@ -959,16 +962,21 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
// Clear tabs cache after moving nodes because the order of tabs may have // Clear tabs cache after moving nodes because the order of tabs may have
// changed. // changed.
this.tabContainer._invalidateCachedTabs(); this.tabContainer._invalidateCachedTabs();
@@ -6869,6 +7096,18 @@ @@ -6992,7 +7219,22 @@
* @returns {object}
* The new tab in the current window, null if the tab couldn't be adopted. * The new tab in the current window, null if the tab couldn't be adopted.
*/ */
adoptTab(aTab, { elementIndex, tabIndex, selectTab = false } = {}) { - adoptTab(aTab, { elementIndex, tabIndex, selectTab = false } = {}) {
+ adoptTab(aTab, { elementIndex, tabIndex, selectTab = false, spaceId = null } = {}) {
+ if (window.gZenWorkspaces.currentWindowIsSyncing && aTab.ownerGlobal.gZenWorkspaces?.currentWindowIsSyncing) { + if (window.gZenWorkspaces.currentWindowIsSyncing && aTab.ownerGlobal.gZenWorkspaces?.currentWindowIsSyncing) {
+ const tabId = aTab.id; + const tabId = aTab.id;
+ const thisTab = window.gZenWindowSync.getItemFromWindow(window, tabId); + const thisTab = window.gZenWindowSync.getItemFromWindow(window, tabId);
+ if (thisTab) { + if (thisTab) {
+ // Just move the tab to the index + // Just move the tab to the index
+ this.moveTabTo(thisTab, { elementIndex, tabIndex }); + this.moveTabTo(thisTab, { elementIndex, tabIndex });
+ if (spaceId) {
+ thisTab.setAttribute("zen-workspace-id", spaceId);
+ }
+ if (selectTab) { + if (selectTab) {
+ this.selectedTab = thisTab; + this.selectedTab = thisTab;
+ } + }
@@ -978,16 +986,16 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
// Swap the dropped tab with a new one we create and then close // Swap the dropped tab with a new one we create and then close
// it in the other window (making it seem to have moved between // it in the other window (making it seem to have moved between
// windows). We also ensure that the tab we create to swap into has // windows). We also ensure that the tab we create to swap into has
@@ -6910,6 +7149,8 @@ @@ -7035,6 +7277,8 @@
params.userContextId = aTab.getAttribute("usercontextid");
} }
params.skipLoad = true;
let newTab = this.addWebTab("about:blank", params); let newTab = this.addWebTab("about:blank", params);
+ newTab._zenContentsVisible = true; + newTab._zenContentsVisible = true;
+ newTab.zenStaticLabel = aTab.zenStaticLabel; + newTab.zenStaticLabel = aTab.zenStaticLabel;
let newBrowser = this.getBrowserForTab(newTab);
aTab.container.tabDragAndDrop.finishAnimateTabMove(); aTab.container.tabDragAndDrop.finishAnimateTabMove();
@@ -7718,7 +7959,7 @@
@@ -7837,7 +8081,7 @@
// preventDefault(). It will still raise the window if appropriate. // preventDefault(). It will still raise the window if appropriate.
break; break;
} }
@@ -996,7 +1004,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
window.focus(); window.focus();
aEvent.preventDefault(); aEvent.preventDefault();
break; break;
@@ -7735,7 +7976,6 @@ @@ -7854,7 +8098,6 @@
} }
case "TabGroupCollapse": case "TabGroupCollapse":
aEvent.target.tabs.forEach(tab => { aEvent.target.tabs.forEach(tab => {
@@ -1004,7 +1012,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
}); });
break; break;
case "TabGroupCreateByUser": case "TabGroupCreateByUser":
@@ -7895,7 +8135,9 @@ @@ -8014,7 +8257,9 @@
let filter = this._tabFilters.get(tab); let filter = this._tabFilters.get(tab);
if (filter) { if (filter) {
@@ -1014,7 +1022,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
let listener = this._tabListeners.get(tab); let listener = this._tabListeners.get(tab);
if (listener) { if (listener) {
@@ -8698,6 +8940,7 @@ @@ -8817,6 +9062,7 @@
aWebProgress.isTopLevel aWebProgress.isTopLevel
) { ) {
this.mTab.setAttribute("busy", "true"); this.mTab.setAttribute("busy", "true");
@@ -1022,7 +1030,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
gBrowser._tabAttrModified(this.mTab, ["busy"]); gBrowser._tabAttrModified(this.mTab, ["busy"]);
this.mTab._notselectedsinceload = !this.mTab.selected; this.mTab._notselectedsinceload = !this.mTab.selected;
} }
@@ -8778,6 +9021,7 @@ @@ -8897,6 +9143,7 @@
// known defaults. Note we use the original URL since about:newtab // known defaults. Note we use the original URL since about:newtab
// redirects to a prerendered page. // redirects to a prerendered page.
const shouldRemoveFavicon = const shouldRemoveFavicon =
@@ -1030,7 +1038,21 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..db1c57c8eb4b3d614b5e5aa820871d66
!this.mBrowser.mIconURL && !this.mBrowser.mIconURL &&
!ignoreBlank && !ignoreBlank &&
!(originalLocation.spec in FAVICON_DEFAULTS); !(originalLocation.spec in FAVICON_DEFAULTS);
@@ -9803,7 +10047,7 @@ var TabContextMenu = { @@ -9071,13 +9318,6 @@
this.mBrowser.originalURI = aRequest.originalURI;
}
- if (!gBrowser._allowTransparentBrowser) {
- this.mBrowser.toggleAttribute(
- "transparent",
- AIWindow.isAIWindowActive(window) &&
- AIWindow.isAIWindowContentPage(aLocation)
- );
- }
}
let userContextId = this.mBrowser.getAttribute("usercontextid") || 0;
@@ -9941,7 +10181,7 @@ var TabContextMenu = {
); );
contextUnpinSelectedTabs.hidden = contextUnpinSelectedTabs.hidden =
!this.contextTab.pinned || !this.multiselected; !this.contextTab.pinned || !this.multiselected;

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js
index 9abf115062e7c86196d7cb6b8ac82a9bb63b5a65..9a38d7dc10403c1ee721b6abf33d525a4aa1f821 100644 index ebcc072abca51ba9936d0e6d97bbd329427c0231..2b0980a745e2339d3220bb701092f4f621876985 100644
--- a/browser/components/tabbrowser/content/tabgroup.js --- a/browser/components/tabbrowser/content/tabgroup.js
+++ b/browser/components/tabbrowser/content/tabgroup.js +++ b/browser/components/tabbrowser/content/tabgroup.js
@@ -14,11 +14,11 @@ @@ -14,11 +14,11 @@
@@ -100,7 +100,17 @@ index 9abf115062e7c86196d7cb6b8ac82a9bb63b5a65..9a38d7dc10403c1ee721b6abf33d525a
resetDefaultGroupName = () => { resetDefaultGroupName = () => {
this.#defaultGroupName = ""; this.#defaultGroupName = "";
@@ -211,7 +234,10 @@ @@ -166,7 +189,9 @@
this.dispatchEvent(
new CustomEvent("TabGroupRemoved", { bubbles: true })
);
+ gZenVerticalTabsManager.animateItemClose(this).then(() => {
this.remove();
+ });
Services.obs.notifyObservers(
this,
"browser-tabgroup-removed-from-dom"
@@ -211,7 +236,10 @@
} }
}); });
} }
@@ -112,7 +122,7 @@ index 9abf115062e7c86196d7cb6b8ac82a9bb63b5a65..9a38d7dc10403c1ee721b6abf33d525a
} }
get color() { get color() {
@@ -305,6 +331,9 @@ @@ -305,6 +333,9 @@
} }
set collapsed(val) { set collapsed(val) {
@@ -122,7 +132,7 @@ index 9abf115062e7c86196d7cb6b8ac82a9bb63b5a65..9a38d7dc10403c1ee721b6abf33d525a
if (!!val == this.collapsed) { if (!!val == this.collapsed) {
return; return;
} }
@@ -391,7 +420,6 @@ @@ -391,7 +422,6 @@
tabGroupName, tabGroupName,
}) })
.then(result => { .then(result => {
@@ -130,7 +140,7 @@ index 9abf115062e7c86196d7cb6b8ac82a9bb63b5a65..9a38d7dc10403c1ee721b6abf33d525a
}); });
} }
@@ -466,13 +494,65 @@ @@ -466,13 +496,65 @@
* @returns {MozTabbrowserTab[]} * @returns {MozTabbrowserTab[]}
*/ */
get tabs() { get tabs() {
@@ -145,9 +155,8 @@ index 9abf115062e7c86196d7cb6b8ac82a9bb63b5a65..9a38d7dc10403c1ee721b6abf33d525a
+ tabsCollect.push(item); + tabsCollect.push(item);
+ if (gBrowser.isTabGroup(item)) { + if (gBrowser.isTabGroup(item)) {
+ tabsCollect.push(...item.tabs); + tabsCollect.push(...item.tabs);
} + }
} + }
- return childrenArray.filter(node => node.matches("tab"));
+ return tabsCollect.filter(node => node.matches("tab")); + return tabsCollect.filter(node => node.matches("tab"));
+ } + }
+ +
@@ -173,8 +182,9 @@ index 9abf115062e7c86196d7cb6b8ac82a9bb63b5a65..9a38d7dc10403c1ee721b6abf33d525a
+ result.push(labelContainer); + result.push(labelContainer);
+ } + }
+ result.push(...item.childGroupsAndTabs); + result.push(...item.childGroupsAndTabs);
+ } }
+ } }
- return childrenArray.filter(node => node.matches("tab"));
+ return result; + return result;
+ } + }
+ +
@@ -201,7 +211,7 @@ index 9abf115062e7c86196d7cb6b8ac82a9bb63b5a65..9a38d7dc10403c1ee721b6abf33d525a
} }
/** /**
@@ -560,7 +640,6 @@ @@ -569,7 +651,6 @@
); );
} else { } else {
if (tabOrSplitView.pinned) { if (tabOrSplitView.pinned) {
@@ -209,7 +219,7 @@ index 9abf115062e7c86196d7cb6b8ac82a9bb63b5a65..9a38d7dc10403c1ee721b6abf33d525a
} }
let tabToMove = let tabToMove =
this.ownerGlobal === tabOrSplitView.ownerGlobal this.ownerGlobal === tabOrSplitView.ownerGlobal
@@ -625,7 +704,7 @@ @@ -634,7 +715,7 @@
*/ */
on_click(event) { on_click(event) {
let isToggleElement = let isToggleElement =
@@ -218,7 +228,7 @@ index 9abf115062e7c86196d7cb6b8ac82a9bb63b5a65..9a38d7dc10403c1ee721b6abf33d525a
event.target === this.#overflowCountLabel; event.target === this.#overflowCountLabel;
if (isToggleElement && event.button === 0) { if (isToggleElement && event.button === 0) {
event.preventDefault(); event.preventDefault();
@@ -696,5 +775,6 @@ @@ -705,5 +786,6 @@
} }
} }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0da1d59be3 100644 index 2760f6700056e2ae9b6a6fdad006c5b679a97233..0b9454f0bb8dc796d54a69e33c05b0d5590b6286 100644
--- a/browser/components/tabbrowser/content/tabs.js --- a/browser/components/tabbrowser/content/tabs.js
+++ b/browser/components/tabbrowser/content/tabs.js +++ b/browser/components/tabbrowser/content/tabs.js
@@ -240,7 +240,7 @@ @@ -244,7 +244,7 @@
true true
) )
? new window.TabStacking(this) ? new window.TabStacking(this)
@@ -11,7 +11,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
this.tabDragAndDrop.init(); this.tabDragAndDrop.init();
} }
@@ -453,7 +453,7 @@ @@ -450,7 +450,7 @@
// and we're not hitting the scroll buttons. // and we're not hitting the scroll buttons.
if ( if (
event.button != 0 || event.button != 0 ||
@@ -20,7 +20,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
event.composedTarget.localName == "toolbarbutton" event.composedTarget.localName == "toolbarbutton"
) { ) {
return; return;
@@ -534,7 +534,6 @@ @@ -531,7 +531,6 @@
}); });
} }
} else if (isTabGroupLabel(event.target)) { } else if (isTabGroupLabel(event.target)) {
@@ -28,7 +28,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
} else if ( } else if (
event.originalTarget.closest("scrollbox") && event.originalTarget.closest("scrollbox") &&
!Services.prefs.getBoolPref( !Services.prefs.getBoolPref(
@@ -570,6 +569,9 @@ @@ -567,6 +566,9 @@
} }
on_keydown(event) { on_keydown(event) {
@@ -38,7 +38,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
let { altKey, shiftKey } = event; let { altKey, shiftKey } = event;
let [accel, nonAccel] = let [accel, nonAccel] =
AppConstants.platform == "macosx" AppConstants.platform == "macosx"
@@ -764,7 +766,6 @@ @@ -761,7 +763,6 @@
this._updateCloseButtons(); this._updateCloseButtons();
if (!this.#animatingGroups.size) { if (!this.#animatingGroups.size) {
@@ -46,7 +46,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
} }
document document
@@ -825,7 +826,7 @@ @@ -822,7 +823,7 @@
} }
get newTabButton() { get newTabButton() {
@@ -55,7 +55,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
} }
get verticalMode() { get verticalMode() {
@@ -841,6 +842,7 @@ @@ -838,6 +839,7 @@
} }
get overflowing() { get overflowing() {
@@ -63,7 +63,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
return this.hasAttribute("overflow"); return this.hasAttribute("overflow");
} }
@@ -854,29 +856,56 @@ @@ -851,29 +853,56 @@
if (pinnedChildren?.at(-1)?.id == "pinned-tabs-container-periphery") { if (pinnedChildren?.at(-1)?.id == "pinned-tabs-container-periphery") {
pinnedChildren.pop(); pinnedChildren.pop();
} }
@@ -130,7 +130,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
} }
/** /**
@@ -944,29 +973,28 @@ @@ -941,29 +970,28 @@
return this.#focusableItems; return this.#focusableItems;
} }
@@ -170,7 +170,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
this.#focusableItems = focusableItems; this.#focusableItems = focusableItems;
return this.#focusableItems; return this.#focusableItems;
@@ -979,6 +1007,7 @@ @@ -976,6 +1004,7 @@
* focusable (ex, we don't want the splitview container to be focusable, only its children). * focusable (ex, we don't want the splitview container to be focusable, only its children).
*/ */
get dragAndDropElements() { get dragAndDropElements() {
@@ -178,7 +178,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
if (this.#dragAndDropElements) { if (this.#dragAndDropElements) {
return this.#dragAndDropElements; return this.#dragAndDropElements;
} }
@@ -1050,6 +1079,7 @@ @@ -1046,6 +1075,7 @@
_invalidateCachedTabs() { _invalidateCachedTabs() {
this.#allTabs = null; this.#allTabs = null;
this._invalidateCachedVisibleTabs(); this._invalidateCachedVisibleTabs();
@@ -186,7 +186,17 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
} }
_invalidateCachedVisibleTabs() { _invalidateCachedVisibleTabs() {
@@ -1154,7 +1184,7 @@ @@ -1065,7 +1095,8 @@
isContainerVerticalPinnedGrid(tab) {
return (
- tab.pinned &&
+ tab.hasAttribute("zen-essential") &&
+ (this.hasAttribute("expanded") || document.documentElement.hasAttribute("zen-sidebar-expanded")) &&
this.verticalMode &&
this.hasAttribute("expanded") &&
!this.expandOnHover
@@ -1159,7 +1190,7 @@
if (node == null) { if (node == null) {
// We have a container for non-tab elements at the end of the scrollbox. // We have a container for non-tab elements at the end of the scrollbox.
@@ -195,7 +205,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
} }
node.before(tab); node.before(tab);
@@ -1252,7 +1282,7 @@ @@ -1257,7 +1288,7 @@
// There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and // There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and
// for when the tab strip is overflowed (which is shared by vertical and horizontal tabs); // for when the tab strip is overflowed (which is shared by vertical and horizontal tabs);
// Attach the long click popup to all of them. // Attach the long click popup to all of them.
@@ -204,7 +214,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
const newTab2 = this.newTabButton; const newTab2 = this.newTabButton;
const newTabVertical = document.getElementById( const newTabVertical = document.getElementById(
"vertical-tabs-newtab-button" "vertical-tabs-newtab-button"
@@ -1353,8 +1383,10 @@ @@ -1358,8 +1389,10 @@
*/ */
_handleTabSelect(aInstant) { _handleTabSelect(aInstant) {
let selectedTab = this.selectedItem; let selectedTab = this.selectedItem;
@@ -215,7 +225,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
selectedTab._notselectedsinceload = false; selectedTab._notselectedsinceload = false;
} }
@@ -1363,7 +1395,7 @@ @@ -1368,7 +1401,7 @@
* @param {boolean} [shouldScrollInstantly=false] * @param {boolean} [shouldScrollInstantly=false]
*/ */
#ensureTabIsVisible(tab, shouldScrollInstantly = false) { #ensureTabIsVisible(tab, shouldScrollInstantly = false) {
@@ -224,7 +234,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
if (arrowScrollbox?.overflowing) { if (arrowScrollbox?.overflowing) {
arrowScrollbox.ensureElementIsVisible(tab, shouldScrollInstantly); arrowScrollbox.ensureElementIsVisible(tab, shouldScrollInstantly);
} }
@@ -1496,7 +1528,7 @@ @@ -1501,7 +1534,7 @@
} }
_notifyBackgroundTab(aTab) { _notifyBackgroundTab(aTab) {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarController.sys.mjs b/browser/components/urlbar/UrlbarController.sys.mjs diff --git a/browser/components/urlbar/UrlbarController.sys.mjs b/browser/components/urlbar/UrlbarController.sys.mjs
index dc8ca021feff9e5c623dd2e9b3e3a8d6f55aa461..b6382bdcfef0cf6c2975fdb6f1a3c9b5c53f81af 100644 index 2dff3603fda9d70d875367fc2b9a05ea5f8eb8c9..0ed283c65f69f00236957aefcb608209e35a3f7c 100644
--- a/browser/components/urlbar/UrlbarController.sys.mjs --- a/browser/components/urlbar/UrlbarController.sys.mjs
+++ b/browser/components/urlbar/UrlbarController.sys.mjs +++ b/browser/components/urlbar/UrlbarController.sys.mjs
@@ -302,7 +302,6 @@ export class UrlbarController { @@ -302,7 +302,6 @@ export class UrlbarController {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs diff --git a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
index c12d875172650dddfe7de623a776149517c83302..de24df54f510c44acda8c64584bf483a2cb5650a 100644 index 000a00f3e56c2f1d3bf4eec8c4924228de1cb418..f91f8cf38f0ba9c403bc284a7cdaaee17435b258 100644
--- a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs --- a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
+++ b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs +++ b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
@@ -849,11 +849,16 @@ class MuxerUnifiedComplete extends UrlbarMuxer { @@ -839,11 +839,16 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
result.providerName == "UrlbarProviderHeuristicFallback" && result.providerName == "UrlbarProviderHeuristicFallback" &&
state.context.heuristicResult?.providerName != state.context.heuristicResult?.providerName !=
"UrlbarProviderHeuristicFallback" "UrlbarProviderHeuristicFallback"
@@ -19,7 +19,7 @@ index c12d875172650dddfe7de623a776149517c83302..de24df54f510c44acda8c64584bf483a
// Discard the result if a tab-to-search result was added already. // Discard the result if a tab-to-search result was added already.
if (!state.canAddTabToSearch) { if (!state.canAddTabToSearch) {
return false; return false;
@@ -1500,7 +1505,9 @@ class MuxerUnifiedComplete extends UrlbarMuxer { @@ -1490,7 +1495,9 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
usedLimits.maxResultCount++; usedLimits.maxResultCount++;
} }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/UrlbarPrefs.sys.mjs b/browser/components/urlbar/UrlbarPrefs.sys.mjs diff --git a/browser/components/urlbar/UrlbarPrefs.sys.mjs b/browser/components/urlbar/UrlbarPrefs.sys.mjs
index 41e8aa0ee37fef0d24d41f2c4e776c39ed3895f6..293e993175bbbd67fa1541db6b9419b687de7fcd 100644 index e09c9b6007c29ea31005a69cf458ce502b0df361..5846f943c03b2b36a36c1e4a8dbbd9a80ff10fe0 100644
--- a/browser/components/urlbar/UrlbarPrefs.sys.mjs --- a/browser/components/urlbar/UrlbarPrefs.sys.mjs
+++ b/browser/components/urlbar/UrlbarPrefs.sys.mjs +++ b/browser/components/urlbar/UrlbarPrefs.sys.mjs
@@ -759,6 +759,7 @@ function makeResultGroups({ showSearchSuggestionsFirst }) { @@ -760,6 +760,7 @@ function makeDefaultResultGroups({ showSearchSuggestionsFirst }) {
*/ */
let rootGroup = { let rootGroup = {
children: [ children: [

View File

@@ -1,8 +1,8 @@
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 7a60a871022df44c0d26745f0035fce988cc5f92..0b89f9b66573d4c5ffb67983d728bb593e5cb524 100644 index 1e159d12ffdc39be87046689b05022813ea925ac..cba7168eeffa54d2c576982927f096b21e039c83 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
@@ -75,22 +75,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.

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/UrlbarResult.sys.mjs b/browser/components/urlbar/UrlbarResult.sys.mjs diff --git a/browser/components/urlbar/UrlbarResult.sys.mjs b/browser/components/urlbar/UrlbarResult.sys.mjs
index 99f331b2c6e4f8eda1bda02cbc6bc6d3f9f4a572..d504632a3f689aefb7d22b863649cb1a8bb3c6a4 100644 index e6eccc010ed3b4595c0aabb1e7d528b20ce1be9b..b71466ebfad0edecb8d7b78ffbe20a95cd69df98 100644
--- a/browser/components/urlbar/UrlbarResult.sys.mjs --- a/browser/components/urlbar/UrlbarResult.sys.mjs
+++ b/browser/components/urlbar/UrlbarResult.sys.mjs +++ b/browser/components/urlbar/UrlbarResult.sys.mjs
@@ -179,6 +179,10 @@ export class UrlbarResult { @@ -178,6 +178,10 @@ export class UrlbarResult {
return this.#heuristic; return this.#heuristic;
} }

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarUtils.sys.mjs b/browser/components/urlbar/UrlbarUtils.sys.mjs diff --git a/browser/components/urlbar/UrlbarUtils.sys.mjs b/browser/components/urlbar/UrlbarUtils.sys.mjs
index a4ed35032c0c60f230d95f451b3f615232784cad..2c92860acb2ddc9829eef006d93431e871241c3a 100644 index caceb63a04fe282d7c906e27a6a2cfebc1ec8cda..74e395e649dd2cbe84683cb583d641b5596082d4 100644
--- a/browser/components/urlbar/UrlbarUtils.sys.mjs --- a/browser/components/urlbar/UrlbarUtils.sys.mjs
+++ b/browser/components/urlbar/UrlbarUtils.sys.mjs +++ b/browser/components/urlbar/UrlbarUtils.sys.mjs
@@ -81,6 +81,7 @@ export var UrlbarUtils = { @@ -81,6 +81,7 @@ export var UrlbarUtils = {
@@ -18,7 +18,7 @@ index a4ed35032c0c60f230d95f451b3f615232784cad..2c92860acb2ddc9829eef006d93431e8
}), }),
// Per-result exposure telemetry. // Per-result exposure telemetry.
@@ -552,6 +554,8 @@ export var UrlbarUtils = { @@ -561,6 +563,8 @@ export var UrlbarUtils = {
return this.RESULT_GROUP.HEURISTIC_FALLBACK; return this.RESULT_GROUP.HEURISTIC_FALLBACK;
case "UrlbarProviderHistoryUrlHeuristic": case "UrlbarProviderHistoryUrlHeuristic":
return this.RESULT_GROUP.HEURISTIC_HISTORY_URL; return this.RESULT_GROUP.HEURISTIC_HISTORY_URL;

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs
index 6d6cc27e203a5799683a4e6eae1007ff30a69cd0..953c5cd09bcfd832d8ad11016977509f55935eb7 100644 index cba492223601a8aa4656d9dc60a09faeda9f2313..a40bd5d46912389ef7208c4c7b481027444400fd 100644
--- a/browser/components/urlbar/UrlbarView.sys.mjs --- a/browser/components/urlbar/UrlbarView.sys.mjs
+++ b/browser/components/urlbar/UrlbarView.sys.mjs +++ b/browser/components/urlbar/UrlbarView.sys.mjs
@@ -618,7 +618,7 @@ export class UrlbarView { @@ -618,7 +618,7 @@ export class UrlbarView {
@@ -11,7 +11,7 @@ index 6d6cc27e203a5799683a4e6eae1007ff30a69cd0..953c5cd09bcfd832d8ad11016977509f
// Try to reuse the cached top-sites context. If it's not cached, then // Try to reuse the cached top-sites context. If it's not cached, then
// there will be a gap of time between when the input is focused and // there will be a gap of time between when the input is focused and
// when the view opens that can be perceived as flicker. // when the view opens that can be perceived as flicker.
@@ -2852,6 +2852,8 @@ export class UrlbarView { @@ -2871,6 +2871,8 @@ export class UrlbarView {
if (row?.hasAttribute("row-selectable")) { if (row?.hasAttribute("row-selectable")) {
row?.toggleAttribute("selected", true); row?.toggleAttribute("selected", true);
} }
@@ -20,7 +20,7 @@ index 6d6cc27e203a5799683a4e6eae1007ff30a69cd0..953c5cd09bcfd832d8ad11016977509f
if (element != row) { if (element != row) {
row?.toggleAttribute("descendant-selected", true); row?.toggleAttribute("descendant-selected", true);
} }
@@ -3336,7 +3338,7 @@ export class UrlbarView { @@ -3359,7 +3361,7 @@ export class UrlbarView {
} }
#enableOrDisableRowWrap() { #enableOrDisableRowWrap() {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/content/UrlbarInput.mjs b/browser/components/urlbar/content/UrlbarInput.mjs diff --git a/browser/components/urlbar/content/UrlbarInput.mjs b/browser/components/urlbar/content/UrlbarInput.mjs
index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dce857e122 100644 index 2e6e2be9d7e28c3f189131ec19a26d552d13af99..101b5a3a70c24f28a755f2ca6630a6bc6b01181b 100644
--- a/browser/components/urlbar/content/UrlbarInput.mjs --- a/browser/components/urlbar/content/UrlbarInput.mjs
+++ b/browser/components/urlbar/content/UrlbarInput.mjs +++ b/browser/components/urlbar/content/UrlbarInput.mjs
@@ -68,6 +68,13 @@ const lazy = XPCOMUtils.declareLazy({ @@ -68,6 +68,13 @@ const lazy = XPCOMUtils.declareLazy({
@@ -16,7 +16,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
const UNLIMITED_MAX_RESULTS = 99; const UNLIMITED_MAX_RESULTS = 99;
let getBoundsWithoutFlushing = element => let getBoundsWithoutFlushing = element =>
@@ -630,7 +637,16 @@ export class UrlbarInput extends HTMLElement { @@ -649,7 +656,16 @@ export class UrlbarInput extends HTMLElement {
// 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;
@@ -33,7 +33,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
this._suppressPrimaryAdjustment = false; this._suppressPrimaryAdjustment = false;
} }
@@ -704,6 +720,10 @@ export class UrlbarInput extends HTMLElement { @@ -723,6 +739,10 @@ export class UrlbarInput extends HTMLElement {
hideSearchTerms = false, hideSearchTerms = false,
isSameDocument = false, isSameDocument = false,
} = {}) { } = {}) {
@@ -44,7 +44,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
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"
@@ -985,8 +1005,16 @@ export class UrlbarInput extends HTMLElement { @@ -1012,8 +1032,16 @@ export class UrlbarInput extends HTMLElement {
return; return;
} }
} }
@@ -62,7 +62,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
} }
/** /**
@@ -1405,7 +1433,11 @@ export class UrlbarInput extends HTMLElement { @@ -1432,7 +1460,11 @@ export class UrlbarInput extends HTMLElement {
} }
if (!this.#providesSearchMode(result)) { if (!this.#providesSearchMode(result)) {
@@ -75,7 +75,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
} }
if (isCanonized) { if (isCanonized) {
@@ -2529,6 +2561,32 @@ export class UrlbarInput extends HTMLElement { @@ -2598,6 +2630,32 @@ export class UrlbarInput extends HTMLElement {
await this.#updateLayoutBreakoutDimensions(); await this.#updateLayoutBreakoutDimensions();
} }
@@ -108,7 +108,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
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
@@ -2543,6 +2601,13 @@ export class UrlbarInput extends HTMLElement { @@ -2612,6 +2670,13 @@ export class UrlbarInput extends HTMLElement {
this.setAttribute("breakout-extend", "true"); this.setAttribute("breakout-extend", "true");
@@ -122,13 +122,13 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
// 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")) {
@@ -2562,6 +2627,27 @@ export class UrlbarInput extends HTMLElement { @@ -2631,6 +2696,27 @@ export class UrlbarInput extends HTMLElement {
return; return;
} }
+ if (this._zenHandleUrlbarClose) { + if (this._zenHandleUrlbarClose) {
+ this._zenHandleUrlbarClose(); + this._zenHandleUrlbarClose();
+ } else if (!this._untrimmedValue) { + } else if (!this._untrimmedValue || this.searchMode) {
+ // Restore the current page URL when the urlbar is empty on blur + // Restore the current page URL when the urlbar is empty on blur
+ this.handleRevert(); + this.handleRevert();
+ } + }
@@ -150,7 +150,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
this.removeAttribute("breakout-extend"); this.removeAttribute("breakout-extend");
this.#updateTextboxPosition(); this.#updateTextboxPosition();
} }
@@ -2592,7 +2678,7 @@ export class UrlbarInput extends HTMLElement { @@ -2661,7 +2747,7 @@ export class UrlbarInput extends HTMLElement {
forceUnifiedSearchButtonAvailable = false forceUnifiedSearchButtonAvailable = false
) { ) {
let prevState = this.getAttribute("pageproxystate"); let prevState = this.getAttribute("pageproxystate");
@@ -159,7 +159,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
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);
@@ -2846,10 +2932,12 @@ export class UrlbarInput extends HTMLElement { @@ -2915,10 +3001,12 @@ export class UrlbarInput extends HTMLElement {
return; return;
} }
this.style.top = px( this.style.top = px(
@@ -172,7 +172,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
); );
} }
@@ -2908,9 +2996,10 @@ export class UrlbarInput extends HTMLElement { @@ -2977,9 +3065,10 @@ export class UrlbarInput extends HTMLElement {
return; return;
} }
@@ -184,7 +184,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
); );
this.style.setProperty( this.style.setProperty(
"--urlbar-height", "--urlbar-height",
@@ -3344,6 +3433,7 @@ export class UrlbarInput extends HTMLElement { @@ -3413,6 +3502,7 @@ export class UrlbarInput extends HTMLElement {
} }
_toggleActionOverride(event) { _toggleActionOverride(event) {
@@ -192,7 +192,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
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 ||
@@ -3447,8 +3537,8 @@ export class UrlbarInput extends HTMLElement { @@ -3516,8 +3606,8 @@ export class UrlbarInput extends HTMLElement {
if (!this.#isAddressbar) { if (!this.#isAddressbar) {
return val; return val;
} }
@@ -203,7 +203,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
: 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.
@@ -3754,6 +3844,7 @@ export class UrlbarInput extends HTMLElement { @@ -3824,6 +3914,7 @@ export class UrlbarInput extends HTMLElement {
resultDetails = null, resultDetails = null,
browser = this.window.gBrowser.selectedBrowser browser = this.window.gBrowser.selectedBrowser
) { ) {
@@ -211,7 +211,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
if (this.#isAddressbar) { if (this.#isAddressbar) {
this.#prepareAddressbarLoad( this.#prepareAddressbarLoad(
url, url,
@@ -3861,6 +3952,10 @@ export class UrlbarInput extends HTMLElement { @@ -3935,6 +4026,10 @@ export class UrlbarInput extends HTMLElement {
} }
reuseEmpty = true; reuseEmpty = true;
} }
@@ -222,7 +222,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
if ( if (
where == "tab" && where == "tab" &&
reuseEmpty && reuseEmpty &&
@@ -3868,6 +3963,9 @@ export class UrlbarInput extends HTMLElement { @@ -3942,6 +4037,9 @@ export class UrlbarInput extends HTMLElement {
) { ) {
where = "current"; where = "current";
} }
@@ -232,7 +232,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
return where; return where;
} }
@@ -4122,6 +4220,7 @@ export class UrlbarInput extends HTMLElement { @@ -4196,6 +4294,7 @@ export class UrlbarInput extends HTMLElement {
this.setResultForCurrentValue(null); this.setResultForCurrentValue(null);
this.handleCommand(); this.handleCommand();
this.controller.clearLastQueryContextCache(); this.controller.clearLastQueryContextCache();
@@ -240,7 +240,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
this._suppressStartQuery = false; this._suppressStartQuery = false;
}); });
@@ -4129,7 +4228,6 @@ export class UrlbarInput extends HTMLElement { @@ -4203,7 +4302,6 @@ export class UrlbarInput extends HTMLElement {
contextMenu.addEventListener("popupshowing", () => { contextMenu.addEventListener("popupshowing", () => {
// Close the results pane when the input field contextual menu is open, // Close the results pane when the input field contextual menu is open,
// because paste and go doesn't want a result selection. // because paste and go doesn't want a result selection.
@@ -248,7 +248,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
let controller = let controller =
this.document.commandDispatcher.getControllerForCommand("cmd_paste"); this.document.commandDispatcher.getControllerForCommand("cmd_paste");
@@ -4239,7 +4337,11 @@ export class UrlbarInput extends HTMLElement { @@ -4319,7 +4417,11 @@ export class UrlbarInput extends HTMLElement {
if (!engineName && !source && !this.hasAttribute("searchmode")) { if (!engineName && !source && !this.hasAttribute("searchmode")) {
return; return;
} }
@@ -261,7 +261,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
if (this._searchModeIndicatorTitle) { if (this._searchModeIndicatorTitle) {
this._searchModeIndicatorTitle.textContent = ""; this._searchModeIndicatorTitle.textContent = "";
this._searchModeIndicatorTitle.removeAttribute("data-l10n-id"); this._searchModeIndicatorTitle.removeAttribute("data-l10n-id");
@@ -4549,6 +4651,7 @@ export class UrlbarInput extends HTMLElement { @@ -4629,6 +4731,7 @@ export class UrlbarInput extends HTMLElement {
this.document.l10n.setAttributes( this.document.l10n.setAttributes(
this.inputField, this.inputField,
@@ -269,7 +269,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
l10nId, l10nId,
l10nId == "urlbar-placeholder-with-name" l10nId == "urlbar-placeholder-with-name"
? { name: engineName } ? { name: engineName }
@@ -4662,6 +4765,11 @@ export class UrlbarInput extends HTMLElement { @@ -4742,6 +4845,11 @@ export class UrlbarInput extends HTMLElement {
} }
_on_click(event) { _on_click(event) {
@@ -281,7 +281,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
switch (event.target) { switch (event.target) {
case this.inputField: case this.inputField:
case this._inputContainer: case this._inputContainer:
@@ -4740,7 +4848,7 @@ export class UrlbarInput extends HTMLElement { @@ -4820,7 +4928,7 @@ export class UrlbarInput extends HTMLElement {
} }
} }
@@ -290,7 +290,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
this.view.autoOpen({ event }); this.view.autoOpen({ event });
} else { } else {
if (this._untrimOnFocusAfterKeydown) { if (this._untrimOnFocusAfterKeydown) {
@@ -4780,9 +4888,16 @@ export class UrlbarInput extends HTMLElement { @@ -4860,9 +4968,16 @@ export class UrlbarInput extends HTMLElement {
} }
_on_mousedown(event) { _on_mousedown(event) {
@@ -308,7 +308,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
if ( if (
event.composedTarget != this.inputField && event.composedTarget != this.inputField &&
event.composedTarget != this._inputContainer event.composedTarget != this._inputContainer
@@ -4792,6 +4907,10 @@ export class UrlbarInput extends HTMLElement { @@ -4872,6 +4987,10 @@ export class UrlbarInput extends HTMLElement {
this.focusedViaMousedown = !this.focused; this.focusedViaMousedown = !this.focused;
this._preventClickSelectsAll = this.focused; this._preventClickSelectsAll = this.focused;
@@ -319,7 +319,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
// 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().
@@ -4827,7 +4946,7 @@ export class UrlbarInput extends HTMLElement { @@ -4907,7 +5026,7 @@ export class UrlbarInput extends HTMLElement {
} }
// Don't close the view when clicking on a tab; we may want to keep the // Don't close the view when clicking on a tab; we may want to keep the
// view open on tab switch, and the TabSelect event arrived earlier. // view open on tab switch, and the TabSelect event arrived earlier.
@@ -328,7 +328,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..109e9eb18b90c650caff1287caef04dc
break; break;
} }
@@ -5155,7 +5274,7 @@ export class UrlbarInput extends HTMLElement { @@ -5235,7 +5354,7 @@ export class UrlbarInput extends HTMLElement {
// 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 =

View File

@@ -1,8 +1,8 @@
diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
index 0f73c33c3237413131a2f4d2d1f3be857e533437..d7e9fcadc7744651fbe14952589df4603e7db592 100644 index 5e182ead8a17ef2e8e3e1701fe227f279d0506ff..7fc7cba4152c2682dd8ef90c35ab1a3a92e04529 100644
--- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs --- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs
+++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs +++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
@@ -295,7 +295,7 @@ export const PREFS_CONFIG = new Map([ @@ -288,7 +288,7 @@ export const PREFS_CONFIG = new Map([
"showSponsoredTopSites", "showSponsoredTopSites",
{ {
title: "Show sponsored top sites", title: "Show sponsored top sites",

View File

@@ -1,5 +1,5 @@
diff --git a/browser/installer/windows/nsis/installer.nsi b/browser/installer/windows/nsis/installer.nsi diff --git a/browser/installer/windows/nsis/installer.nsi b/browser/installer/windows/nsis/installer.nsi
index e877b4b8a8cc6fc233025d0b58de50a68ecb9fd9..9d7d9064d0b4c62a3de3b81e852b2b49170bf8a3 100755 index 74bfc36cb6e370b7dbf9fff6697a469c207f10d6..c5cdc832a430752340b33655d010c0348183b601 100755
--- a/browser/installer/windows/nsis/installer.nsi --- a/browser/installer/windows/nsis/installer.nsi
+++ b/browser/installer/windows/nsis/installer.nsi +++ b/browser/installer/windows/nsis/installer.nsi
@@ -836,7 +836,7 @@ Section "-InstallEndCleanup" @@ -836,7 +836,7 @@ Section "-InstallEndCleanup"

View File

@@ -1,16 +1,16 @@
diff --git a/browser/modules/BrowserWindowTracker.sys.mjs b/browser/modules/BrowserWindowTracker.sys.mjs diff --git a/browser/modules/BrowserWindowTracker.sys.mjs b/browser/modules/BrowserWindowTracker.sys.mjs
index 0cd9e9630fff20d71dc1dd7367ae6af4f7a53f71..7212c5f4745f3c93c1ede932af1b0e85580aa679 100644 index 0f2f66e4bbc27785d53e262001f2ad7f9a1b3216..ed8b600fd2093428e01489d7dc4aa1f5365b645e 100644
--- a/browser/modules/BrowserWindowTracker.sys.mjs --- a/browser/modules/BrowserWindowTracker.sys.mjs
+++ b/browser/modules/BrowserWindowTracker.sys.mjs +++ b/browser/modules/BrowserWindowTracker.sys.mjs
@@ -326,6 +326,7 @@ export const BrowserWindowTracker = { @@ -331,6 +331,7 @@ export const BrowserWindowTracker = {
args = null, args = null,
remote = undefined, remote = undefined,
fission = undefined, fission = undefined,
+ zenSyncedWindow = true, + zenSyncedWindow = true,
} = {}) { } = options;
let windowFeatures = "chrome,dialog=no";
if (all) { args = lazy.AIWindow.handleAIWindowOptions(options);
@@ -382,6 +383,12 @@ export const BrowserWindowTracker = { @@ -390,6 +391,12 @@ export const BrowserWindowTracker = {
windowFeatures, windowFeatures,
args args
); );

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css
index 646cf238ebfbd5ac1826cf47f578f66aa020199f..ba5a1950f683c4d8cb836ee9cd466c0b446f2241 100644 index e6ef8578b460282eeb473f78c71addc43192e228..2c7418f6eb416a58166287e2c6a37c22ee12d6ea 100644
--- a/browser/themes/linux/browser.css --- a/browser/themes/linux/browser.css
+++ b/browser/themes/linux/browser.css +++ b/browser/themes/linux/browser.css
@@ -14,7 +14,6 @@ @@ -14,7 +14,6 @@
@@ -10,7 +10,7 @@ index 646cf238ebfbd5ac1826cf47f578f66aa020199f..ba5a1950f683c4d8cb836ee9cd466c0b
} }
} }
} }
@@ -43,7 +42,8 @@ @@ -58,7 +57,8 @@
-moz-default-appearance: -moz-window-decorations; -moz-default-appearance: -moz-window-decorations;
appearance: auto; appearance: auto;
@@ -20,7 +20,7 @@ index 646cf238ebfbd5ac1826cf47f578f66aa020199f..ba5a1950f683c4d8cb836ee9cd466c0b
dialog::backdrop { dialog::backdrop {
border-top-left-radius: env(-moz-gtk-csd-titlebar-radius); border-top-left-radius: env(-moz-gtk-csd-titlebar-radius);
border-top-right-radius: env(-moz-gtk-csd-titlebar-radius); border-top-right-radius: env(-moz-gtk-csd-titlebar-radius);
@@ -51,13 +51,11 @@ @@ -66,13 +66,11 @@
/* stylelint-disable-next-line media-query-no-invalid */ /* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("widget.gtk.rounded-bottom-corners.enabled") { @media -moz-pref("widget.gtk.rounded-bottom-corners.enabled") {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/themes/shared/browser-shared.css b/browser/themes/shared/browser-shared.css diff --git a/browser/themes/shared/browser-shared.css b/browser/themes/shared/browser-shared.css
index 63d9641c7107c1444cb74f1536193246106f5cae..4298760fab4862e64ec74df23e00b373c5745605 100644 index aceda010e08cd20dcfb5eb2e6f253314ea087849..9b0b4af4fded24be573d59b62b9905d15e1e2dd6 100644
--- a/browser/themes/shared/browser-shared.css --- a/browser/themes/shared/browser-shared.css
+++ b/browser/themes/shared/browser-shared.css +++ b/browser/themes/shared/browser-shared.css
@@ -103,7 +103,7 @@ body { @@ -104,7 +104,7 @@ body {
--toolbarbutton-border-radius: var(--button-border-radius); --toolbarbutton-border-radius: var(--button-border-radius);
--identity-box-margin-inline: 4px; --identity-box-margin-inline: 4px;
--urlbar-min-height: max(32px, 1.4em); --urlbar-min-height: max(32px, 1.4em);
@@ -11,7 +11,7 @@ index 63d9641c7107c1444cb74f1536193246106f5cae..4298760fab4862e64ec74df23e00b373
/* This should be used for icons and chiclets inside the input field, as well /* This should be used for icons and chiclets inside the input field, as well
as result rows. It makes the gap around them more uniform when they are as result rows. It makes the gap around them more uniform when they are
@@ -172,8 +172,6 @@ body { @@ -173,8 +173,6 @@ body {
*/ */
&.fullscreen-with-menubar { &.fullscreen-with-menubar {
z-index: var(--browser-area-z-index-toolbox-while-animating); z-index: var(--browser-area-z-index-toolbox-while-animating);
@@ -20,7 +20,7 @@ index 63d9641c7107c1444cb74f1536193246106f5cae..4298760fab4862e64ec74df23e00b373
} }
/* Themes define a set of toolbox foreground and background colors which we /* Themes define a set of toolbox foreground and background colors which we
@@ -282,13 +280,13 @@ body { @@ -283,13 +281,13 @@ body {
@media (-moz-platform: macos) and (not (-moz-mac-rtl)) { @media (-moz-platform: macos) and (not (-moz-mac-rtl)) {
&:-moz-locale-dir(ltr) { &:-moz-locale-dir(ltr) {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/identity-block/identity-block.css b/browser/themes/shared/identity-block/identity-block.css diff --git a/browser/themes/shared/identity-block/identity-block.css b/browser/themes/shared/identity-block/identity-block.css
index e9f0ea328cde3631ef856f44d47abb9c5cec5ee1..66ec2bc8bb716ad9e87f88f3d93f9516c9eb8052 100644 index 3996a050162f4baa3a3ed3d09bc6b7bd0c3a1404..ba432205acde344dfec9f98333df2d4dd85c14ba 100644
--- a/browser/themes/shared/identity-block/identity-block.css --- a/browser/themes/shared/identity-block/identity-block.css
+++ b/browser/themes/shared/identity-block/identity-block.css +++ b/browser/themes/shared/identity-block/identity-block.css
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@

View File

@@ -1,8 +1,8 @@
diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn
index ab8601e76409ad1a026763379a395dd52f503f27..3b32198dfa770d29f4e2f2b0faed5f3ff735c664 100644 index ccae208d64af19d15b85f72a4a38ea95448ed9e9..5c184a33c1d3416d9c16e3edf1353174aea3ed03 100644
--- a/browser/themes/shared/jar.inc.mn --- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn +++ b/browser/themes/shared/jar.inc.mn
@@ -326,3 +326,5 @@ @@ -328,3 +328,5 @@
skin/classic/browser/illustrations/market-opt-in.svg (../shared/illustrations/market-opt-in.svg) skin/classic/browser/illustrations/market-opt-in.svg (../shared/illustrations/market-opt-in.svg)
skin/classic/browser/illustrations/yelpRealtime-opt-in.svg (../shared/illustrations/yelpRealtime-opt-in.svg) skin/classic/browser/illustrations/yelpRealtime-opt-in.svg (../shared/illustrations/yelpRealtime-opt-in.svg)

View File

@@ -501,6 +501,9 @@ groupbox h2 {
#support-firefox, #support-firefox,
#tabGroupSuggestions, #tabGroupSuggestions,
#web-appearance-manage-themes-link, #web-appearance-manage-themes-link,
#setting-control-sidebarChatbotFieldset,
#aiControlsDescription,
#category-ai-features,
.mission-message { .mission-message {
display: none !important; display: none !important;
} }

View File

@@ -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 b00139d7af878326ff303c08d5ddd47501b8c7db..7361a5e98d6ea372f6fdc583d90044d276cfb81b 100644 index 7fbe572527a702f35434ad73ad6cda41c5c082c0..ccf7c8c5f408cec50e562a9821767ea3e22b7e3c 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
@@ -90,7 +90,6 @@ @@ -89,7 +89,6 @@
min-height: 0; min-height: 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 */
@@ -18,20 +18,20 @@ index b00139d7af878326ff303c08d5ddd47501b8c7db..7361a5e98d6ea372f6fdc583d90044d2
} }
browser[type="content"] { browser[type="content"] {
@@ -392,7 +390,7 @@ split-view-footer { @@ -423,7 +421,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; inset: 0;
/* --browser-with-dialog set on browser[tabDialogShowing], we want to position the overlay
/* Hide tab-modal dialogs when a window-modal one is up. */ only on the top of the <browser> element so it doesn't overlap the DevTools toolbox */
@@ -553,7 +551,7 @@ split-view-footer { @@ -590,7 +588,7 @@ split-view-footer {
.dialogOverlay[topmost="true"], .dialogOverlay[topmost="true"],
#window-modal-dialog::backdrop { #window-modal-dialog::backdrop {
- background-color: var(--dialog-backdrop-color); - 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));
} }

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/tabbrowser/ctrlTab.css b/browser/themes/shared/tabbrowser/ctrlTab.css diff --git a/browser/themes/shared/tabbrowser/ctrlTab.css b/browser/themes/shared/tabbrowser/ctrlTab.css
index ffda4922c675f6159c825334cba9d49658d316ba..7b3d4d2b5c6d732a1d0074e05cc48131fe57c630 100644 index 6a7d295bfaed7f0429a8ff5ac9b8a2db4ee911e3..d1a3a8d44bc06102adaef294dc72f8f404be17dc 100644
--- a/browser/themes/shared/tabbrowser/ctrlTab.css --- a/browser/themes/shared/tabbrowser/ctrlTab.css
+++ b/browser/themes/shared/tabbrowser/ctrlTab.css +++ b/browser/themes/shared/tabbrowser/ctrlTab.css
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css
index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dccdf3b11fc 100644 index dff30e3f3f800e3fb499aa84450d3571e705820f..57a97e8955f3a6c9b0b8b6a9a15addd343204691 100644
--- a/browser/themes/shared/tabbrowser/tabs.css --- a/browser/themes/shared/tabbrowser/tabs.css
+++ b/browser/themes/shared/tabbrowser/tabs.css +++ b/browser/themes/shared/tabbrowser/tabs.css
@@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
@@ -23,7 +23,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
--tab-selected-bgcolor: var(--toolbar-bgcolor); --tab-selected-bgcolor: var(--toolbar-bgcolor);
--tab-selected-color-scheme: var(--toolbar-color-scheme); --tab-selected-color-scheme: var(--toolbar-color-scheme);
&[lwt-tab-selected="light"] { &[lwt-tab-selected="light"] {
@@ -293,7 +293,6 @@ @@ -294,7 +294,6 @@ tab-split-view-wrapper[dragtarget] {
} }
:root:not([uidensity="compact"], [sidebar-expand-on-hover]) &[pinned] { :root:not([uidensity="compact"], [sidebar-expand-on-hover]) &[pinned] {
@@ -31,7 +31,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
} }
&:is([selected], [multiselected]) { &:is([selected], [multiselected]) {
@@ -307,6 +306,7 @@ @@ -308,6 +307,7 @@ tab-split-view-wrapper[dragtarget] {
border-radius: inherit; border-radius: inherit;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
@@ -39,7 +39,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
&::before { &::before {
position: absolute; position: absolute;
@@ -506,10 +506,6 @@ @@ -507,10 +507,6 @@ tab-split-view-wrapper[dragtarget] {
/* stylelint-disable-next-line media-query-no-invalid */ /* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("browser.tabs.fadeOutUnloadedTabs") { @media -moz-pref("browser.tabs.fadeOutUnloadedTabs") {
&[pending] { &[pending] {
@@ -50,7 +50,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
opacity: 0.5; opacity: 0.5;
/* Fade the favicon out */ /* Fade the favicon out */
transition-property: filter, opacity; transition-property: filter, opacity;
@@ -526,10 +522,6 @@ @@ -527,10 +523,6 @@ tab-split-view-wrapper[dragtarget] {
/* stylelint-disable-next-line media-query-no-invalid */ /* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("browser.tabs.fadeOutExplicitlyUnloadedTabs") { @media -moz-pref("browser.tabs.fadeOutExplicitlyUnloadedTabs") {
&[pending][discarded] { &[pending][discarded] {
@@ -61,7 +61,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
opacity: 0.5; opacity: 0.5;
/* Fade the favicon out */ /* Fade the favicon out */
transition-property: filter, opacity; transition-property: filter, opacity;
@@ -598,7 +590,7 @@ @@ -599,7 +591,7 @@ tab-split-view-wrapper[dragtarget] {
z-index: 1; /* Overlay tab title */ z-index: 1; /* Overlay tab title */
#tabbrowser-tabs[orient="vertical"] & { #tabbrowser-tabs[orient="vertical"] & {
@@ -70,7 +70,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
} }
&[crashed] { &[crashed] {
@@ -606,7 +598,7 @@ @@ -607,7 +599,7 @@ tab-split-view-wrapper[dragtarget] {
} }
#tabbrowser-tabs[orient="vertical"]:not([expanded]) &:not([crashed]), #tabbrowser-tabs[orient="vertical"]:not([expanded]) &:not([crashed]),
@@ -79,7 +79,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
&[soundplaying] { &[soundplaying] {
list-style-image: url("chrome://browser/skin/tabbrowser/tab-audio-playing-small.svg"); list-style-image: url("chrome://browser/skin/tabbrowser/tab-audio-playing-small.svg");
} }
@@ -663,7 +655,7 @@ @@ -664,7 +656,7 @@ tab-split-view-wrapper[dragtarget] {
} }
} }
@@ -88,7 +88,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
&[crashed] { &[crashed] {
display: revert; display: revert;
} }
@@ -830,7 +822,7 @@ @@ -831,7 +823,7 @@ tab-split-view-wrapper[dragtarget] {
has not been added to root. There are certain scenarios when that attribute is temporarily has not been added to root. There are certain scenarios when that attribute is temporarily
removed from root such as when toggling the sidebar to expand with the toolbar button. */ removed from root such as when toggling the sidebar to expand with the toolbar button. */
#tabbrowser-tabs[orient="horizontal"] &:not([pinned]):not([crashed]), #tabbrowser-tabs[orient="horizontal"] &:not([pinned]):not([crashed]),
@@ -97,7 +97,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
&:is([soundplaying], [muted], [activemedia-blocked]) { &:is([soundplaying], [muted], [activemedia-blocked]) {
display: flex; display: flex;
} }
@@ -1521,7 +1513,7 @@ tab-group { @@ -1529,7 +1521,7 @@ tab-group {
} }
#tabbrowser-tabs[orient="vertical"][expanded] { #tabbrowser-tabs[orient="vertical"][expanded] {
@@ -106,7 +106,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
&[movingtab][movingtab-addToGroup]:not([movingtab-group], [movingtab-ungroup]) .tabbrowser-tab:is(:active, [multiselected]) { &[movingtab][movingtab-addToGroup]:not([movingtab-group], [movingtab-ungroup]) .tabbrowser-tab:is(:active, [multiselected]) {
margin-inline-start: var(--space-medium); margin-inline-start: var(--space-medium);
} }
@@ -1999,7 +1991,7 @@ tab-group { @@ -2036,7 +2028,7 @@ tab-group {
} }
} }
@@ -115,7 +115,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
#vertical-tabs-newtab-button { #vertical-tabs-newtab-button {
appearance: none; appearance: none;
min-height: var(--tab-min-height); min-height: var(--tab-min-height);
@@ -2010,7 +2002,7 @@ tab-group { @@ -2047,7 +2039,7 @@ tab-group {
margin-inline: var(--tab-inner-inline-margin); margin-inline: var(--tab-inner-inline-margin);
#tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text { #tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text {
@@ -124,7 +124,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
} }
&:hover { &:hover {
@@ -2034,7 +2026,7 @@ tab-group { @@ -2071,7 +2063,7 @@ tab-group {
* flex container. #tabs-newtab-button is a child of the arrowscrollbox where * flex container. #tabs-newtab-button is a child of the arrowscrollbox where
* we don't want a gap (between tabs), so we have to add some margin. * we don't want a gap (between tabs), so we have to add some margin.
*/ */
@@ -133,7 +133,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
margin-block: var(--tab-block-margin); margin-block: var(--tab-block-margin);
} }
@@ -2222,7 +2214,6 @@ tab-group { @@ -2259,7 +2251,6 @@ tab-group {
&:not([expanded]) { &:not([expanded]) {
.tabbrowser-tab[pinned] { .tabbrowser-tab[pinned] {
@@ -141,7 +141,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
} }
.tab-background { .tab-background {
@@ -2262,8 +2253,8 @@ tab-group { @@ -2299,8 +2290,8 @@ tab-group {
display: block; display: block;
position: absolute; position: absolute;
inset: auto; inset: auto;
@@ -152,7 +152,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
&:-moz-window-inactive { &:-moz-window-inactive {
background-image: background-image:
@@ -2348,9 +2339,6 @@ tab-group { @@ -2385,9 +2376,6 @@ tab-group {
:root:not([privatebrowsingmode]) :is(toolbarbutton, toolbarpaletteitem) ~ #tabbrowser-tabs, :root:not([privatebrowsingmode]) :is(toolbarbutton, toolbarpaletteitem) ~ #tabbrowser-tabs,
:root[privatebrowsingmode] :is(toolbarbutton:not(#firefox-view-button), toolbarpaletteitem:not(#wrapper-firefox-view-button)) ~ #tabbrowser-tabs { :root[privatebrowsingmode] :is(toolbarbutton:not(#firefox-view-button), toolbarpaletteitem:not(#wrapper-firefox-view-button)) ~ #tabbrowser-tabs {
@@ -162,7 +162,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
} }
:root[privatebrowsingmode] :is(#firefox-view-button, #menu_openFirefoxView) { :root[privatebrowsingmode] :is(#firefox-view-button, #menu_openFirefoxView) {
@@ -2382,7 +2370,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button { @@ -2419,7 +2407,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
list-style-image: url(chrome://global/skin/icons/plus.svg); list-style-image: url(chrome://global/skin/icons/plus.svg);
} }

View File

@@ -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 e2b8a7cae70ed2bd3c80ee4214a09dbdb68a0d01..ab1b50a06b68cc6941789b31494b44da6aecdb19 100644 index f681decf193605b633f1cffa493ac3b000b542bd..21ee9ce2594308aba0ae6d86e4f82bef6ef95b6d 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
@@ -44,20 +44,6 @@ @@ -44,20 +44,6 @@

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css
index edfe3e05a1b4517a4de6e09221ebdcfb5d8f1fe5..5986f88babf2b8d48ec8a5c0724787b13275aeff 100644 index 78a2c85af51f90958b445eac53a540b382163102..7509b28c6d868a6f1c34f36330e695c163e12788 100644
--- a/browser/themes/shared/urlbar-searchbar.css --- a/browser/themes/shared/urlbar-searchbar.css
+++ b/browser/themes/shared/urlbar-searchbar.css +++ b/browser/themes/shared/urlbar-searchbar.css
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
@@ -11,16 +11,16 @@ index edfe3e05a1b4517a4de6e09221ebdcfb5d8f1fe5..5986f88babf2b8d48ec8a5c0724787b1
--urlbar-container-border-padding: calc(var(--urlbar-container-border-width) + var(--urlbar-container-padding)); --urlbar-container-border-padding: calc(var(--urlbar-container-border-width) + var(--urlbar-container-padding));
--urlbar-margin-inline: 5px; --urlbar-margin-inline: 5px;
--urlbar-padding-block: 4px; --urlbar-padding-block: 4px;
@@ -52,7 +52,7 @@ @@ -54,7 +54,7 @@ toolbar[inactive="true"] .urlbar,
#urlbar[usertyping] > .urlbar-input-container > #page-action-buttons > #urlbar-zoom-button, .urlbar:not([usertyping]) > .urlbar-input-container > .urlbar-go-button,
.urlbar:is(:not([usertyping]), :not([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 {
- display: none; - display: none;
+ display: none !important; + display: none !important;
} }
/* When rich suggestions are enabled the urlbar identity icon is given extra padding to /* When rich suggestions are enabled the urlbar identity icon is given extra padding to
@@ -323,10 +323,14 @@ @@ -325,10 +325,14 @@ toolbar[inactive="true"] .urlbar,
.urlbar[breakout][breakout-extend] { .urlbar[breakout][breakout-extend] {
height: auto; height: auto;

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/urlbarView.css b/browser/themes/shared/urlbarView.css diff --git a/browser/themes/shared/urlbarView.css b/browser/themes/shared/urlbarView.css
index 1ba5a570cb1fe690cf88396643baba02f9265095..312891b41e1c62b4ed53f5cbd63bd3280dde7512 100644 index 1af12e42c529481ff87539a84db20a1d6016d63a..7060711042a72c9df54c98ceb2c3ba3c850f9295 100644
--- a/browser/themes/shared/urlbarView.css --- a/browser/themes/shared/urlbarView.css
+++ b/browser/themes/shared/urlbarView.css +++ b/browser/themes/shared/urlbarView.css
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@

View File

@@ -0,0 +1,5 @@
#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 fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"><path d="M219.797 355.243c-60.522-7.339-103.146-50.88-103.146-107.264 0-22.912 8.256-47.68 21.994-64.171-5.952-15.125-5.034-47.232 1.835-60.523 18.347-2.282 43.093 7.339 57.771 20.63 17.408-5.504 35.754-8.235 58.197-8.235s40.811 2.731 57.301 7.787c14.208-12.843 39.424-22.464 57.771-20.182 6.4 12.395 7.339 44.48 1.365 60.054 14.678 17.429 22.464 40.81 22.464 64.64 0 56.384-42.624 99.008-104.042 106.794 15.573 10.091 26.112 32.086 26.112 57.302v47.68c0 13.738 11.456 21.546 25.216 16.042 82.965-31.637 148.053-114.602 148.053-217.28 0-129.728-105.429-235.605-235.136-235.605-129.728 0-234.24 105.877-234.24 235.605a231.255 231.255 0 0 0 151.723 217.728c12.373 4.587 24.298-3.669 24.298-16.042v-36.672a59.7 59.7 0 0 1-22.016 4.586c-30.25 0-48.128-16.49-60.949-47.21-5.056-12.374-10.56-19.712-21.099-21.078-5.504-.469-7.338-2.752-7.338-5.504 0-5.504 9.173-9.621 18.346-9.621 13.291 0 24.747 8.235 36.672 25.195 9.174 13.29 18.795 19.264 30.251 19.264s18.795-4.139 29.333-14.678c7.787-7.786 13.76-14.656 19.264-19.242"/></svg>

View File

@@ -18,6 +18,11 @@
border-radius: 100% !important; border-radius: 100% !important;
} }
#zenCreateNewPopup menuitem {
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
#back-button { #back-button {
list-style-image: url("back.svg") !important; list-style-image: url("back.svg") !important;
} }

View File

@@ -437,6 +437,7 @@
* skin/classic/browser/zen-icons/selectable/lightning.svg (../shared/zen-icons/common/selectable/lightning.svg) * skin/classic/browser/zen-icons/selectable/lightning.svg (../shared/zen-icons/common/selectable/lightning.svg)
* skin/classic/browser/zen-icons/selectable/location.svg (../shared/zen-icons/common/selectable/location.svg) * skin/classic/browser/zen-icons/selectable/location.svg (../shared/zen-icons/common/selectable/location.svg)
* skin/classic/browser/zen-icons/selectable/lock-closed.svg (../shared/zen-icons/common/selectable/lock-closed.svg) * skin/classic/browser/zen-icons/selectable/lock-closed.svg (../shared/zen-icons/common/selectable/lock-closed.svg)
* skin/classic/browser/zen-icons/selectable/logo-github.svg (../shared/zen-icons/common/selectable/logo-github.svg)
* skin/classic/browser/zen-icons/selectable/logo-rss.svg (../shared/zen-icons/common/selectable/logo-rss.svg) * skin/classic/browser/zen-icons/selectable/logo-rss.svg (../shared/zen-icons/common/selectable/logo-rss.svg)
* skin/classic/browser/zen-icons/selectable/logo-usd.svg (../shared/zen-icons/common/selectable/logo-usd.svg) * skin/classic/browser/zen-icons/selectable/logo-usd.svg (../shared/zen-icons/common/selectable/logo-usd.svg)
* skin/classic/browser/zen-icons/selectable/mail.svg (../shared/zen-icons/common/selectable/mail.svg) * skin/classic/browser/zen-icons/selectable/mail.svg (../shared/zen-icons/common/selectable/mail.svg)

Some files were not shown because too many files have changed in this diff Show More