mirror of
https://github.com/zen-browser/desktop.git
synced 2025-12-10 16:42:35 +00:00
Compare commits
84 Commits
1.17.10b
...
window-syn
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d97404d03b | ||
|
|
85d52d15c2 | ||
|
|
832b0c4fe3 | ||
|
|
60c0afc5ac | ||
|
|
307e8fc0ef | ||
|
|
cd8f8fdb6f | ||
|
|
57ee00bf3e | ||
|
|
53181ea34c | ||
|
|
f720dce237 | ||
|
|
cde32ca1e0 | ||
|
|
aecea1f565 | ||
|
|
73f408c9e1 | ||
|
|
899d590329 | ||
|
|
22f2b1f29b | ||
|
|
5d964511aa | ||
|
|
a0268ace63 | ||
|
|
8be603ac88 | ||
|
|
fa6bb8d27f | ||
|
|
8bf790df4c | ||
|
|
a84bd5b0ce | ||
|
|
1cbed758a9 | ||
|
|
a1774ee426 | ||
|
|
9df1fc731d | ||
|
|
2b0d509230 | ||
|
|
8e7a3a9157 | ||
|
|
600d1c209b | ||
|
|
d4f1916382 | ||
|
|
ae62f5c41d | ||
|
|
7dd3cf5817 | ||
|
|
706505cc50 | ||
|
|
445baecb56 | ||
|
|
5dd5414bf1 | ||
|
|
833caf2f81 | ||
|
|
722ffa5e97 | ||
|
|
57233a18f6 | ||
|
|
04ab9a4b4e | ||
|
|
1fcef12d0a | ||
|
|
c6cd912262 | ||
|
|
a765d3642f | ||
|
|
40bc51f904 | ||
|
|
8a963a9257 | ||
|
|
9c5bf19ae3 | ||
|
|
6fbba04dab | ||
|
|
c5df63711b | ||
|
|
a61846bf9a | ||
|
|
c2a5066181 | ||
|
|
00417582fb | ||
|
|
32d603ced9 | ||
|
|
2706e8761d | ||
|
|
61659c63d9 | ||
|
|
34c725aad0 | ||
|
|
435762c682 | ||
|
|
c60990c283 | ||
|
|
1d26040fc6 | ||
|
|
acb3708936 | ||
|
|
c3b9c3c526 | ||
|
|
0adf260ddc | ||
|
|
ce986beb2f | ||
|
|
c86875b7b0 | ||
|
|
eefc8cb20c | ||
|
|
12c921fd87 | ||
|
|
e419c4dc9f | ||
|
|
68b37ac736 | ||
|
|
7f225ac3ee | ||
|
|
3e39ef2538 | ||
|
|
e5517eb164 | ||
|
|
c4dd470864 | ||
|
|
bf1b0dcd48 | ||
|
|
76acc8b0e4 | ||
|
|
1b83b77cad | ||
|
|
79ff574978 | ||
|
|
af20a65fa1 | ||
|
|
4a7f8fc9c0 | ||
|
|
a738a829de | ||
|
|
240a031e38 | ||
|
|
9bc7b9ce4e | ||
|
|
86006c8891 | ||
|
|
a55b1c7495 | ||
|
|
6e6337a95b | ||
|
|
6b12153c8a | ||
|
|
f6922ef2ba | ||
|
|
91f5d58fbc | ||
|
|
7a4cdaa45c | ||
|
|
81e854a89f |
@@ -35,7 +35,7 @@ Zen is a firefox-based browser with the aim of pushing your productivity to a ne
|
||||
### Firefox Versions
|
||||
|
||||
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `145.0.2`! 🚀
|
||||
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 145.0.2`!
|
||||
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 146.0`!
|
||||
|
||||
### Contributing
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
37df51b9bc9a584158ac1b42dc2da8c5e49fac83
|
||||
acd4663cd1530303fcca85b420a78f4686c4628b
|
||||
256
docs/issue-metrics/2025_2025-11-01..2025-11-30.md
Normal file
256
docs/issue-metrics/2025_2025-11-01..2025-11-30.md
Normal file
@@ -0,0 +1,256 @@
|
||||
# Issue Metrics
|
||||
|
||||
| Metric | Average | Median | 90th percentile |
|
||||
| --- | --- | --- | ---: |
|
||||
| Time to first response | 16:46:00 | 5:17:03 | 1 day, 12:16:08 |
|
||||
| Time to close | 1 day, 16:51:17 | 10:24:05 | 6 days, 16:29:29 |
|
||||
|
||||
| Metric | Count |
|
||||
| --- | ---: |
|
||||
| Number of items that remain open | 117 |
|
||||
| Number of items closed | 121 |
|
||||
| Total number of items created | 238 |
|
||||
|
||||
| Title | URL | Time to first response | Time to close |
|
||||
| --- | --- | --- | --- |
|
||||
| Middle Mouse Click to close a tab with tab peek not working | https://github.com/zen-browser/desktop/issues/11492 | None | None |
|
||||
| Accessing bookmarks in full screen mode on MacOS is awkward | https://github.com/zen-browser/desktop/issues/11491 | None | None |
|
||||
| Youtube player going off screen at the bottom on MacOS, making the media controls harder to access | https://github.com/zen-browser/desktop/issues/11489 | None | 1:12:11 |
|
||||
| browser.tabs.closeWindowWithLastTab closes the window even if you have tabs open in other workspaces | https://github.com/zen-browser/desktop/issues/11487 | None | None |
|
||||
| Deleting a workspace in one window leaves the others in a strange state | https://github.com/zen-browser/desktop/issues/11486 | None | None |
|
||||
| Creating a new workspace in one window breaks other windows | https://github.com/zen-browser/desktop/issues/11485 | None | None |
|
||||
| Compact mode unusable on non-primary windows | https://github.com/zen-browser/desktop/issues/11484 | 0:14:09 | None |
|
||||
| 1password keyboard shortcut (Cmd+.) no longer works when sidebar is collapsed | https://github.com/zen-browser/desktop/issues/11483 | None | None |
|
||||
| sidebar does not popup in compact mode once the window is snapped | https://github.com/zen-browser/desktop/issues/11482 | None | None |
|
||||
| Alt + number keys unexpectedly trigger Split View | https://github.com/zen-browser/desktop/issues/11481 | None | None |
|
||||
| UI bug: bookmark icons invisible/missing | https://github.com/zen-browser/desktop/issues/11480 | None | 0:11:24 |
|
||||
| Title Bar has a broken appearence and the Window Control buttons are in positions like on MacOS despite being on Windows | https://github.com/zen-browser/desktop/issues/11479 | 0:45:21 | 10:17:29 |
|
||||
| Theme does not update when switching spaces in an inactive window | https://github.com/zen-browser/desktop/issues/11477 | 0:22:04 | None |
|
||||
| Compact mode deactivate in Private Mode and can't be reactivate | https://github.com/zen-browser/desktop/issues/11475 | None | 22:01:31 |
|
||||
| Flawed Search Bar & Undifferentiated Essentials for Each Workspaces | https://github.com/zen-browser/desktop/issues/11474 | 20:29:53 | 20:29:53 |
|
||||
| Can't run Netflix ( Error code UI3012 ) | https://github.com/zen-browser/desktop/issues/11473 | 5:30:12 | 7:42:29 |
|
||||
| I lost connectivity at all after updating to version v1.17.11b | https://github.com/zen-browser/desktop/issues/11471 | 6:39:25 | 1 day, 0:59:28 |
|
||||
| Opening a private window occasionally breaks UI | https://github.com/zen-browser/desktop/issues/11470 | None | 1 day, 1:10:14 |
|
||||
| Cannot switch space with trackpad swipe gestures on macOS | https://github.com/zen-browser/desktop/issues/11469 | 3:51:59 | 1 day, 4:15:09 |
|
||||
| I cannot access Google's AI mode on Zen browser | https://github.com/zen-browser/desktop/issues/11468 | 2:05:10 | None |
|
||||
| ico loading problem for essentials when 'Open Previous WIndows and Tabs' is disabled | https://github.com/zen-browser/desktop/issues/11466 | None | 0:05:48 |
|
||||
| Session restoration mixing workspaces | https://github.com/zen-browser/desktop/issues/11465 | None | None |
|
||||
| Title: URL bar loses focus when switching keyboard layout on GNOME (Linux, Arch/Manjaro) | https://github.com/zen-browser/desktop/issues/11464 | None | 0:29:03 |
|
||||
| The splitscreen break the ui and ux of the browser | https://github.com/zen-browser/desktop/issues/11461 | 3:30:24 | None |
|
||||
| Sound not playing on any website execpt youtube | https://github.com/zen-browser/desktop/issues/11459 | 2:18:55 | None |
|
||||
| Using glance on essential tab creates duplicate of essential tab | https://github.com/zen-browser/desktop/issues/11457 | 4:22:37 | 4:22:36 |
|
||||
| Sidebar getting corrupted and crashing browser | https://github.com/zen-browser/desktop/issues/11455 | 18:13:54 | 1 day, 2:55:36 |
|
||||
| Double clicking the tabs list not opening a new tab on Windows (It does on Linux) | https://github.com/zen-browser/desktop/issues/11453 | 0:05:41 | 0:05:01 |
|
||||
| Compact Mode resets toolbar and sidebar visibility settings after restart | https://github.com/zen-browser/desktop/issues/11452 | 1:55:49 | None |
|
||||
| Bookmarks/History hidden behind side pane on new tab when compact mode used. | https://github.com/zen-browser/desktop/issues/11450 | 4:29:59 | None |
|
||||
| Pinned extensions keep disappearing from sidebar after closing and opening Zen | https://github.com/zen-browser/desktop/issues/11449 | 0:38:40 | None |
|
||||
| MacOS SidePanel Spaces Converge When Offline | https://github.com/zen-browser/desktop/issues/11448 | None | None |
|
||||
| Cursor and address bar disappear when switching keyboard layout on GNOME (Wayland) | https://github.com/zen-browser/desktop/issues/11445 | 1 day, 8:37:33 | None |
|
||||
| Telegram link | https://github.com/zen-browser/desktop/issues/11444 | 11:39:00 | 11:39:00 |
|
||||
| Unable to open extensions | https://github.com/zen-browser/desktop/issues/11443 | 3:25:58 | 13:29:15 |
|
||||
| Tab must be Unloaded before it can be Closed, via Cmd+W | https://github.com/zen-browser/desktop/issues/11442 | 2:10:53 | 2:10:53 |
|
||||
| Update to Firefox 145.0.2 has made Zen Browser unusable | https://github.com/zen-browser/desktop/issues/11441 | 2:21:19 | 18:05:42 |
|
||||
| MacOS Crash - enclosing crash log | https://github.com/zen-browser/desktop/issues/11439 | 23:30:54 | 1 day, 0:09:38 |
|
||||
| Using Ctrl for Glance create extra tabs | https://github.com/zen-browser/desktop/issues/11437 | None | 0:28:39 |
|
||||
| how to remove the white line? | https://github.com/zen-browser/desktop/issues/11436 | 2:58:39 | 10:37:48 |
|
||||
| New tab opens in essentials area | https://github.com/zen-browser/desktop/issues/11435 | 0:43:56 | 3:46:27 |
|
||||
| Bookmarks got multiplied in toolbar when opening a new window | https://github.com/zen-browser/desktop/issues/11434 | None | 10:05:27 |
|
||||
| moving profile directory makes it non-functional (has fix!) | https://github.com/zen-browser/desktop/issues/11432 | None | None |
|
||||
| Network login button renders beind viewport | https://github.com/zen-browser/desktop/issues/11430 | 2:18:48 | None |
|
||||
| tabs not going into respective workspaces after closing zen browser window | https://github.com/zen-browser/desktop/issues/11429 | 8:31:21 | None |
|
||||
| Download Animation Gone Since Upgrading To 1.17.9b | https://github.com/zen-browser/desktop/issues/11428 | 2:07:15 | 15:04:59 |
|
||||
| Startup option "Continue where you left off" and "Open previous windows and tabs" synchronization issues with windows, tabs and Spaces | https://github.com/zen-browser/desktop/issues/11427 | 15:38:00 | 16:06:49 |
|
||||
| Buggy CMD+Q behavior with tab glance | https://github.com/zen-browser/desktop/issues/11426 | None | None |
|
||||
| Extensions button doesnt exist | https://github.com/zen-browser/desktop/issues/11423 | 0:00:56 | 0:00:56 |
|
||||
| Usage Issues [Stuck Content, Ineffective Themes, and Glances] | https://github.com/zen-browser/desktop/issues/11421 | 1:36:19 | 1:37:09 |
|
||||
| Zen opens two windows on startup (second window shows only the home page with no restored tabs) | https://github.com/zen-browser/desktop/issues/11420 | 2:31:45 | None |
|
||||
| Pinned tabs revert to normal tabs after window restore, causing browser freeze on close | https://github.com/zen-browser/desktop/issues/11416 | 5:04:47 | 5 days, 4:53:53 |
|
||||
| Address bar gets cut off in a pop out window | https://github.com/zen-browser/desktop/issues/11415 | 11:53:51 | None |
|
||||
| Opening a tab in glance also opens a new window with the selected link. | https://github.com/zen-browser/desktop/issues/11414 | 9:45:31 | 13:23:52 |
|
||||
| glance creating new windows | https://github.com/zen-browser/desktop/issues/11413 | None | 1:41:08 |
|
||||
| Restoration of previous session is not working automatically but after Ctrl+Shift+t in windows | https://github.com/zen-browser/desktop/issues/11412 | None | None |
|
||||
| duplicate tab shortcut missing | https://github.com/zen-browser/desktop/issues/11411 | 1 day, 0:23:07 | None |
|
||||
| Zen 1.17.8b is really laggy in windowed mode (Arch Linux) (not just the websites but buttons in the browser ui too) | https://github.com/zen-browser/desktop/issues/11410 | 0:52:24 | 10:41:30 |
|
||||
| Opening a glance in split view also opens the link in a new window when using "Shift" as modifier | https://github.com/zen-browser/desktop/issues/11409 | 12:21:00 | 1 day, 6:44:30 |
|
||||
| Browser broken after an update (pages are opened in a little stripe) | https://github.com/zen-browser/desktop/issues/11408 | 18:47:35 | 23:43:06 |
|
||||
| Workspaces are not synced across different devices on a single firefox account | https://github.com/zen-browser/desktop/issues/11407 | 4:33:42 | 3 days, 10:56:38 |
|
||||
| Youtube not loading ever | https://github.com/zen-browser/desktop/issues/11406 | 19:47:23 | None |
|
||||
| After collapsing sidebar, layout shifts from "Only Sidebar" to "Sidebar and Top Toolbar" | https://github.com/zen-browser/desktop/issues/11405 | 1 day, 13:18:36 | 1 day, 20:49:48 |
|
||||
| Open new window when already a window is open. | https://github.com/zen-browser/desktop/issues/11402 | None | None |
|
||||
| Tab unpinning causes Tab Stash to crash | https://github.com/zen-browser/desktop/issues/11398 | None | None |
|
||||
| Strange Pink Rendering Glitch | https://github.com/zen-browser/desktop/issues/11393 | None | None |
|
||||
| Gradient line below the toolbar | https://github.com/zen-browser/desktop/issues/11391 | 8:24:14 | 8:24:14 |
|
||||
| After 1.17.7b, zen browser is extremely slow | https://github.com/zen-browser/desktop/issues/11390 | 5:27:46 | None |
|
||||
| Zen forgets all tabs when the main browser is closed while a private browsing window is open | https://github.com/zen-browser/desktop/issues/11389 | 2:56:12 | 3:40:47 |
|
||||
| UI Issue | https://github.com/zen-browser/desktop/issues/11388 | 2:25:00 | 2:25:00 |
|
||||
| Glance Stutter on Windows 10 Specifically | https://github.com/zen-browser/desktop/issues/11387 | 2:31:16 | None |
|
||||
| прошу помочь решить данную проблему | https://github.com/zen-browser/desktop/issues/11386 | 6:34:42 | 6:34:42 |
|
||||
| The "Slow page warning" toast is just shown in compact mode | https://github.com/zen-browser/desktop/issues/11385 | None | None |
|
||||
| Zen browser opens a new instance for each tab or opens a tab inside of a tab | https://github.com/zen-browser/desktop/issues/11384 | 4:05:56 | 4:06:03 |
|
||||
| Issue with extensions HUD | https://github.com/zen-browser/desktop/issues/11383 | 0:49:47 | 3:01:53 |
|
||||
| about:support does not show version, build ID etc. | https://github.com/zen-browser/desktop/issues/11382 | 2:39:09 | 4:08:48 |
|
||||
| Sharing screen in google meet on macOS Sequoia 15.7.2 breaks browser | https://github.com/zen-browser/desktop/issues/11380 | None | None |
|
||||
| No deletion option for the folders | https://github.com/zen-browser/desktop/issues/11379 | 0:13:25 | None |
|
||||
| When debugging in the console, the SSE request does not return a value. | https://github.com/zen-browser/desktop/issues/11378 | None | None |
|
||||
| Bitwarden extension autofill login shortcut not auto-focusing input field when locked | https://github.com/zen-browser/desktop/issues/11377 | 1 day, 7:53:09 | None |
|
||||
| In Niri in Nixos, the theme changes to light | https://github.com/zen-browser/desktop/issues/11375 | 2 days, 17:42:19 | 4 days, 14:40:38 |
|
||||
| Cannot provide optional extension permissions | https://github.com/zen-browser/desktop/issues/11374 | 14:12:47 | None |
|
||||
| Double click on sidebar doesn't open a new tab | https://github.com/zen-browser/desktop/issues/11373 | None | 1:36:14 |
|
||||
| Zen fullscreen does not trigger KDE Plasma fullscreen state (bottom panel stays visible) | https://github.com/zen-browser/desktop/issues/11372 | None | None |
|
||||
| Gap above window when maximized on monitor | https://github.com/zen-browser/desktop/issues/11369 | 4:03:49 | 9:53:29 |
|
||||
| Rapid janky movement of sidebar when its width is set to certain sizes | https://github.com/zen-browser/desktop/issues/11368 | None | None |
|
||||
| Media control latency and timestamp inconsistencies on YT Music | https://github.com/zen-browser/desktop/issues/11367 | None | None |
|
||||
| extension toolbar gone / cant pin extensions to toolbar | https://github.com/zen-browser/desktop/issues/11366 | 3:05:26 | 3:05:26 |
|
||||
| Links using text fragments (#:~:text=..." do not work | https://github.com/zen-browser/desktop/issues/11365 | 16:32:29 | 1 day, 4:18:54 |
|
||||
| Passbolt Password Manager doesn't work properly | https://github.com/zen-browser/desktop/issues/11360 | None | None |
|
||||
| opening a new window doesn't bring in pinned tabs on first open, and then on second open not all of the pinned tabs are in their folders | https://github.com/zen-browser/desktop/issues/11359 | 8:59:41 | None |
|
||||
| Extensions box closed abruptely | https://github.com/zen-browser/desktop/issues/11358 | 2:10:35 | None |
|
||||
| No return sound from discord audio input check | https://github.com/zen-browser/desktop/issues/11356 | None | None |
|
||||
| Janky movement for favorites group when transitioning between first and last workspaces | https://github.com/zen-browser/desktop/issues/11355 | 10:30:48 | None |
|
||||
| Viewport is slimmed down far too much | https://github.com/zen-browser/desktop/issues/11352 | 7:07:05 | 21:48:04 |
|
||||
| Zen doesnt remember tabs when starting | https://github.com/zen-browser/desktop/issues/11350 | 5:29:24 | None |
|
||||
| Clear tabs sidebar button is not visible if there are no pinned tabs | https://github.com/zen-browser/desktop/issues/11349 | 0:42:08 | 23:37:58 |
|
||||
| ctrl+tab tab switcher (mission control tab view) not showing when holding down ctrl + tab when only essentials are open | https://github.com/zen-browser/desktop/issues/11348 | None | None |
|
||||
| Modules missing top-level preference defaults can break features for new users | https://github.com/zen-browser/desktop/issues/11346 | 1:16:02 | 1:16:02 |
|
||||
| 1.17.7b no longer allows hiding only the toolbar in Compact Mode | https://github.com/zen-browser/desktop/issues/11344 | 1:58:40 | 6:04:31 |
|
||||
| Browser extension icons not visible | https://github.com/zen-browser/desktop/issues/11341 | 3:00:42 | 9:19:38 |
|
||||
| Corner bleed bug | https://github.com/zen-browser/desktop/issues/11340 | 5:32:29 | 10 days, 4:54:09 |
|
||||
| Double click the side bar now can't open "new tab" | https://github.com/zen-browser/desktop/issues/11339 | None | 0:11:54 |
|
||||
| Sidebar blur (backdrop-filter) not applying in Compact Mode except in Settings Page | https://github.com/zen-browser/desktop/issues/11337 | 2:12:20 | 2:12:20 |
|
||||
| Extended URL bar in the sidebar only mode. | https://github.com/zen-browser/desktop/issues/11334 | 4:41:50 | None |
|
||||
| All Unloaded Tabs Closed after Every Update | https://github.com/zen-browser/desktop/issues/11330 | None | None |
|
||||
| Zen Browser: blank page when accessing app.datadoghq.eu | https://github.com/zen-browser/desktop/issues/11328 | 0:05:29 | 0:56:10 |
|
||||
| Double-clicking on sidebar no longer opens a new tab - 1.17.7b | https://github.com/zen-browser/desktop/issues/11327 | None | 0:37:46 |
|
||||
| Unintuitive drag-and-drop behavior when moving tabs into folders | https://github.com/zen-browser/desktop/issues/11326 | 0:37:20 | 1 day, 3:01:46 |
|
||||
| Moving the last tab from a window doesn't close it, even with `browser.tabs.closeWindowWithLastTab = true` | https://github.com/zen-browser/desktop/issues/11323 | 0:20:33 | None |
|
||||
| Error 2069 while watching DRM protected content | https://github.com/zen-browser/desktop/issues/11322 | 3:43:18 | None |
|
||||
| moving tabs among themselves breaks as the number u move them by increases | https://github.com/zen-browser/desktop/issues/11320 | 3 days, 0:34:57 | None |
|
||||
| draging the window by using the sidebar | https://github.com/zen-browser/desktop/issues/11319 | 1:05:02 | 1:05:02 |
|
||||
| Double-clicking on the sidebar no longer opens a new tab. | https://github.com/zen-browser/desktop/issues/11317 | 2:09:26 | 2:09:26 |
|
||||
| Pinned and essentials tabs automatically unloaded on startup after updating to 1.17.7b | https://github.com/zen-browser/desktop/issues/11315 | 4 days, 4:53:59 | 12 days, 9:07:43 |
|
||||
| Zen Browser opens two windows on startup after update to 1.17.7b | https://github.com/zen-browser/desktop/issues/11314 | 3 days, 5:12:02 | 8 days, 7:16:06 |
|
||||
| Extensions that add themselves into the URL bar are not hidden in single mode, resulting in too little space to reliably click on the URL. | https://github.com/zen-browser/desktop/issues/11313 | None | None |
|
||||
| container name is no longer visible in URL bar | https://github.com/zen-browser/desktop/issues/11312 | 3 days, 14:24:15 | None |
|
||||
| Compact Toolbar: | https://github.com/zen-browser/desktop/issues/11307 | 2 days, 9:21:05 | 2 days, 23:15:20 |
|
||||
| Cant install on linux (AUR) | https://github.com/zen-browser/desktop/issues/11306 | 2:13:01 | 5:09:46 |
|
||||
| Maximized Window Disregards System Work Area | https://github.com/zen-browser/desktop/issues/11304 | 5:14:50 | 13:10:35 |
|
||||
| CMD+TABbing away while picture-in-picture is open means PiP takes focus (does not happen in raw Firefox) | https://github.com/zen-browser/desktop/issues/11303 | None | None |
|
||||
| Split View Closing Shortcut Doesn't Work And Opens Weird CSS File | https://github.com/zen-browser/desktop/issues/11301 | 5 days, 21:24:35 | None |
|
||||
| Compact Mode: Top Toolbar not closing automatically after clicking away from Extensions | https://github.com/zen-browser/desktop/issues/11300 | None | None |
|
||||
| Window hidden while adjusting slider on theme | https://github.com/zen-browser/desktop/issues/11299 | None | None |
|
||||
| I found a very unfriendly experience | https://github.com/zen-browser/desktop/issues/11298 | 18:02:40 | 7 days, 19:19:59 |
|
||||
| Simple HTML dialog closes when I click the first text box within it | https://github.com/zen-browser/desktop/issues/11297 | None | None |
|
||||
| Paste and Go or Paste + Enter Key Overwriting tabs | https://github.com/zen-browser/desktop/issues/11294 | None | None |
|
||||
| Collapsed Toolbar: Ctrl+T Temporarily Expands Top Toolbar in Compact Mode | https://github.com/zen-browser/desktop/issues/11291 | None | None |
|
||||
| Extensions Window not opening after startup | https://github.com/zen-browser/desktop/issues/11290 | None | 1 day, 9:57:38 |
|
||||
| Opening new tab with middle click leaks data via unexpected search | https://github.com/zen-browser/desktop/issues/11289 | 1 day, 10:13:56 | 1 day, 10:13:56 |
|
||||
| When submitting bug reports, remove the requirement for confirming the issue can't be reproduced on Firefox. | https://github.com/zen-browser/desktop/issues/11287 | 3:58:51 | 17:59:36 |
|
||||
| Application Menu overflows out of screen | https://github.com/zen-browser/desktop/issues/11284 | None | 9 days, 17:48:08 |
|
||||
| Copy current URL with a keyboard shortcut missing in shortcut settings | https://github.com/zen-browser/desktop/issues/11281 | 0:04:41 | 6 days, 23:58:41 |
|
||||
| tel: links : incomplete functionality - do not copy the number to default tel link handling application | https://github.com/zen-browser/desktop/issues/11280 | None | None |
|
||||
| CORS Request Fails - Power Automate in Zen | https://github.com/zen-browser/desktop/issues/11279 | 6:14:35 | None |
|
||||
| Tabs and essentials easy to accidentally drag off | https://github.com/zen-browser/desktop/issues/11278 | 5:34:54 | None |
|
||||
| (Fixed - Client side) Minor visual clipping when scrolling with a hidden taskbar | https://github.com/zen-browser/desktop/issues/11276 | None | 0:01:03 |
|
||||
| Firefox's select link feature conflicted with Zen Glance | https://github.com/zen-browser/desktop/issues/11273 | None | 13 days, 12:00:56 |
|
||||
| Split screen gaps disappearing while in compact mode | https://github.com/zen-browser/desktop/issues/11269 | 3:31:14 | 6 days, 16:29:29 |
|
||||
| Change Tab(s) to Workspace does not respect profile/container. | https://github.com/zen-browser/desktop/issues/11268 | 1:59:44 | None |
|
||||
| Youtube Fullscreen Problem | https://github.com/zen-browser/desktop/issues/11265 | None | 5:09:01 |
|
||||
| Certificate error @ learn.microsoft.com (SEC_ERROR_INVALID_TIME) | https://github.com/zen-browser/desktop/issues/11260 | 2:18:34 | 1 day, 17:17:46 |
|
||||
| Extentions pin toolbar bug | https://github.com/zen-browser/desktop/issues/11257 | 1 day, 8:06:21 | None |
|
||||
| Links only open in the browser if the browser is already opening, otherwise links will just launch the browser | https://github.com/zen-browser/desktop/issues/11256 | 1 day, 22:41:45 | None |
|
||||
| Share menu opens again rather than closing when share button is pressed while share menu is open. | https://github.com/zen-browser/desktop/issues/11248 | None | None |
|
||||
| Browser layout setting selection has low contrast in dark mode | https://github.com/zen-browser/desktop/issues/11246 | None | None |
|
||||
| "Change Tab to Workspace" does not respect "Move the new tab button to the top" setting | https://github.com/zen-browser/desktop/issues/11245 | None | None |
|
||||
| Cmd+Shift+B on sidebar-only mode flashes bookmarks bar | https://github.com/zen-browser/desktop/issues/11244 | None | None |
|
||||
| Multiple windows reopen on launch despite disabling "Open previous windows and tabs" | https://github.com/zen-browser/desktop/issues/11243 | None | None |
|
||||
| Crunchyroll doesn't work on Zen Windows on latest version 1.7.6b (Error : SHAK-6007) | https://github.com/zen-browser/desktop/issues/11237 | 0:14:37 | 10:24:05 |
|
||||
| White space & transparency issues in spaces. | https://github.com/zen-browser/desktop/issues/11236 | None | None |
|
||||
| Folders briefly auto-open then close on launch | https://github.com/zen-browser/desktop/issues/11235 | None | None |
|
||||
| Phantom tabs present in detached Zen Window | https://github.com/zen-browser/desktop/issues/11234 | None | None |
|
||||
| Trying to open a tab to amazon.de will open to amazon.com | https://github.com/zen-browser/desktop/issues/11233 | 1:53:48 | None |
|
||||
| Glance icons grayed out | https://github.com/zen-browser/desktop/issues/11232 | None | None |
|
||||
| Most websites dont load past initial state | https://github.com/zen-browser/desktop/issues/11231 | None | 0:10:07 |
|
||||
| Keep crashing on Windows 11, it starts with the version 1.17.3b | https://github.com/zen-browser/desktop/issues/11230 | 5:57:35 | 2 days, 8:53:01 |
|
||||
| Zen Browser suggests to update despite having the latest version installed | https://github.com/zen-browser/desktop/issues/11228 | 0:20:38 | 2:38:54 |
|
||||
| Extensions menu not appearing in the upper right corner | https://github.com/zen-browser/desktop/issues/11227 | 23:02:30 | 0:54:37 |
|
||||
| Toolbar still visible after toggling Sidebar's width | https://github.com/zen-browser/desktop/issues/11225 | 8 days, 18:39:49 | 8 days, 19:59:54 |
|
||||
| Cannot install addons in compact mode | https://github.com/zen-browser/desktop/issues/11223 | None | 0:02:33 |
|
||||
| Slow performance when refreshing | https://github.com/zen-browser/desktop/issues/11222 | 13:44:26 | 13:44:26 |
|
||||
| When switching search engines in the address bar, the control center buttons will disappear. | https://github.com/zen-browser/desktop/issues/11221 | 7 days, 17:29:07 | 7 days, 17:29:07 |
|
||||
| Browser switches to another workspace upon clicking a pinned tab | https://github.com/zen-browser/desktop/issues/11220 | 5 days, 14:59:49 | 5 days, 19:54:54 |
|
||||
| DRM ISSUE (Crunchyroll, Netflix, Prime, and etc.) | https://github.com/zen-browser/desktop/issues/11218 | 6:12:26 | 6:51:11 |
|
||||
| "Replace pinned URL with current" stopped working | https://github.com/zen-browser/desktop/issues/11217 | None | 3:23:47 |
|
||||
| Zen high memory usage | https://github.com/zen-browser/desktop/issues/11216 | 4:09:50 | 4:09:50 |
|
||||
| Visual glitches, ghosting, and screen tearing on Linux for Zen browser versions above 1.15.5b-1 | https://github.com/zen-browser/desktop/issues/11214 | None | None |
|
||||
| Broken [browser|chrome].tabs.query({}) making Tab Session Manager unusable | https://github.com/zen-browser/desktop/issues/11210 | None | None |
|
||||
| Click interactions not working on some sites | https://github.com/zen-browser/desktop/issues/11208 | None | 0:11:33 |
|
||||
| Tabs not closing properly while they are inside a folder. | https://github.com/zen-browser/desktop/issues/11207 | None | 3:59:22 |
|
||||
| Management of synced tabs is split between two "sidebars" | https://github.com/zen-browser/desktop/issues/11206 | None | None |
|
||||
| Tab saving broken | https://github.com/zen-browser/desktop/issues/11205 | None | None |
|
||||
| URL bar focused when starting zen browser with --new-window 'url' flag | https://github.com/zen-browser/desktop/issues/11204 | None | None |
|
||||
| Unable to connect to local network as of 1.17.5b | https://github.com/zen-browser/desktop/issues/11201 | 0:44:35 | None |
|
||||
| After wakeup Zen queries DNS for all tabs, even unloaded ones and stalls meanwhile | https://github.com/zen-browser/desktop/issues/11200 | None | None |
|
||||
| Dublicate entry in Default Apps in KDE Plasma Setting | https://github.com/zen-browser/desktop/issues/11198 | None | None |
|
||||
| Extension Menu's not working in the home page. | https://github.com/zen-browser/desktop/issues/11193 | 3:04:23 | None |
|
||||
| space is changed automatically when whatsapp & any other tab is in split view. | https://github.com/zen-browser/desktop/issues/11189 | None | None |
|
||||
| Opening links from external apps does not work as excepted if Zen is not already running | https://github.com/zen-browser/desktop/issues/11188 | 7:34:42 | 7:57:27 |
|
||||
| Top suggestion in location bar is unremovable search engine | https://github.com/zen-browser/desktop/issues/11187 | 8:08:43 | 5 days, 21:13:30 |
|
||||
| Extension installation prompt rendered outside of browser frame | https://github.com/zen-browser/desktop/issues/11186 | 9:29:30 | 23:50:25 |
|
||||
| Launching Zen with Reopen Previous Windows and Tabs opens outdated tab list | https://github.com/zen-browser/desktop/issues/11185 | None | None |
|
||||
| Websites just outright broken | https://github.com/zen-browser/desktop/issues/11183 | 6:08:20 | 17:11:50 |
|
||||
| New extensions button does not appear on blank tab | https://github.com/zen-browser/desktop/issues/11182 | 2 days, 8:40:31 | 10 days, 2:29:48 |
|
||||
| Prompted to install extension, install erroneously canceled | https://github.com/zen-browser/desktop/issues/11181 | None | None |
|
||||
| URL Bar history search only matches URL beginning | https://github.com/zen-browser/desktop/issues/11179 | 20:55:48 | 21:09:44 |
|
||||
| Missing Visual Indicators In "Privacy & Security" Settings | https://github.com/zen-browser/desktop/issues/11178 | 22:31:51 | 9 days, 11:01:53 |
|
||||
| Extension Install Menu Appears Off Screen | https://github.com/zen-browser/desktop/issues/11177 | None | 5:50:00 |
|
||||
| Split view bug if switching vertical to horizontal or otherwise | https://github.com/zen-browser/desktop/issues/11176 | None | None |
|
||||
| Bookmark sidebar does'nt close | https://github.com/zen-browser/desktop/issues/11174 | 0:03:15 | 0:28:44 |
|
||||
| Jupyterhub terminal didn't show correctly | https://github.com/zen-browser/desktop/issues/11173 | 1 day, 12:00:31 | None |
|
||||
| Split view container tabs have their highlight in the centre of the tab in compact mode. | https://github.com/zen-browser/desktop/issues/11172 | None | None |
|
||||
| no extension menu/button in the url bar | https://github.com/zen-browser/desktop/issues/11171 | 11:09:25 | 17:18:29 |
|
||||
| Double click to open new tab doesnt work | https://github.com/zen-browser/desktop/issues/11170 | 1 day, 9:51:08 | 3 days, 6:19:08 |
|
||||
| Sidebar not closing in compact mode frequently | https://github.com/zen-browser/desktop/issues/11168 | 17:06:30 | None |
|
||||
| HiDpi screen issue with Zen Browser | https://github.com/zen-browser/desktop/issues/11165 | None | None |
|
||||
| With compact mode enabled, this problem occurs when trying to move a tab from one window to another. | https://github.com/zen-browser/desktop/issues/11164 | None | None |
|
||||
| Microsoft Company Portal flags Zen as Firefox hence preventing it from installing on company managed devices | https://github.com/zen-browser/desktop/issues/11163 | 0:21:58 | None |
|
||||
| Brew Install Hash Mismatch on MacOS Silicon | https://github.com/zen-browser/desktop/issues/11162 | 3 days, 5:01:22 | 4 days, 5:17:58 |
|
||||
| Extensions that take over/replace passkeys does not work | https://github.com/zen-browser/desktop/issues/11161 | 20:42:26 | None |
|
||||
| [CRASH] Segmentation fault error on macOS M4 Pro | https://github.com/zen-browser/desktop/issues/11159 | None | None |
|
||||
| Upon browser close or restart, all pinned tabs and tabs from "essentials" are removed and closed. | https://github.com/zen-browser/desktop/issues/11157 | 6:21:54 | None |
|
||||
| Video Lag when Laptop Charger Connected or Disconnected | https://github.com/zen-browser/desktop/issues/11156 | 1:39:07 | None |
|
||||
| Multiple inconsistancies with private window theme | https://github.com/zen-browser/desktop/issues/11155 | None | None |
|
||||
| Website immediately switches to blank page | https://github.com/zen-browser/desktop/issues/11152 | 7:52:22 | None |
|
||||
| URL bar doesn't move back to the sidebar | https://github.com/zen-browser/desktop/issues/11150 | 0:01:40 | 0:04:56 |
|
||||
| New unified panel icon not showing in sidebar only mode | https://github.com/zen-browser/desktop/issues/11149 | 0:19:16 | 1 day, 3:04:30 |
|
||||
| Glance animation starts from wrong origin when triggered via right-click search | https://github.com/zen-browser/desktop/issues/11148 | 1:03:12 | 12 days, 22:48:29 |
|
||||
| Zen no longer shows the Profile icon associated with the current Workspace | https://github.com/zen-browser/desktop/issues/11146 | 0:10:36 | None |
|
||||
| Double-clicking on the toolbar should fill the screen. | https://github.com/zen-browser/desktop/issues/11145 | 1:08:26 | None |
|
||||
| Cannot move or drag browser window when tabs are on right | https://github.com/zen-browser/desktop/issues/11142 | None | None |
|
||||
| MediaSource.addSourceBuffer: Type not supported in MediaSource when playing MP3 (works in Chrome) | https://github.com/zen-browser/desktop/issues/11141 | 1:09:43 | 1:13:18 |
|
||||
| Cannot access https://zen-browser.app with Zen Browser but can with Firefox, Safari and Comet on macOS Tahoe | https://github.com/zen-browser/desktop/issues/11140 | 0:34:57 | None |
|
||||
| Extensions don't show up | https://github.com/zen-browser/desktop/issues/11137 | None | 0:01:49 |
|
||||
| Problem with the whole browser | https://github.com/zen-browser/desktop/issues/11136 | 6:34:23 | 9:22:27 |
|
||||
| Essential and Pinned don’t load after quitting with multiple windows (Ctrl+Shift+Q) on Windows | https://github.com/zen-browser/desktop/issues/11135 | None | None |
|
||||
| Firefox's grouped tabs do not collapse on toggle | https://github.com/zen-browser/desktop/issues/11134 | 7:02:37 | 7:02:37 |
|
||||
| Spotify is not working properly | https://github.com/zen-browser/desktop/issues/11133 | 9:28:56 | 11:23:38 |
|
||||
| Picture-in-Picture (PiP) Feature Does Not Appear | https://github.com/zen-browser/desktop/issues/11132 | 5:41:39 | 11:58:40 |
|
||||
| Video controls cut off in fullscreen mode, only when Zen itself is also fullscreen. | https://github.com/zen-browser/desktop/issues/11131 | None | 6:38:36 |
|
||||
| Glance closing animation replays when escape is spammed during closing | https://github.com/zen-browser/desktop/issues/11130 | 19:25:23 | 22:20:06 |
|
||||
| Little bit of url sticks out of top right or left side when using only sidebar style | https://github.com/zen-browser/desktop/issues/11126 | 1 day, 3:59:29 | None |
|
||||
| Empty space in the tabs if close a tab in unexpected way | https://github.com/zen-browser/desktop/issues/11125 | None | None |
|
||||
| Extensions icon dissapeared | https://github.com/zen-browser/desktop/issues/11121 | -1 day, 23:11:28 | 4:25:16 |
|
||||
| Unable to close hisory/ download/ bookmarks/ tags window without closing the whole application. [Linux] | https://github.com/zen-browser/desktop/issues/11119 | None | None |
|
||||
| Suddenly lost all of my essential tabs; Can't add container'd tabs as Essential tabs | https://github.com/zen-browser/desktop/issues/11118 | 3:07:03 | 3:07:03 |
|
||||
| Onboarding unskippable with a large number of search shortcuts | https://github.com/zen-browser/desktop/issues/11117 | 14:58:00 | None |
|
||||
| Newly created Workspaces are shown behind the active Workspace in existing windows | https://github.com/zen-browser/desktop/issues/11116 | None | None |
|
||||
| Apple websites' font spacing broken | https://github.com/zen-browser/desktop/issues/11115 | 6 days, 15:27:12 | None |
|
||||
| Allow pinned tabs to update their titles dynamically with the page, as normal | https://github.com/zen-browser/desktop/issues/11114 | 6:52:55 | None |
|
||||
| Copy Me That extension stopped working with latest update | https://github.com/zen-browser/desktop/issues/11111 | 0:12:46 | 4:14:11 |
|
||||
| Browser layout does not reset to previous state | https://github.com/zen-browser/desktop/issues/11109 | 5:17:03 | 5:17:03 |
|
||||
| On mac bookmarks menu is not appaering then hover coursor on the top edge like it works on windows. | https://github.com/zen-browser/desktop/issues/11108 | 6:13:53 | 6:14:03 |
|
||||
| Loading icon visible behind all favicons | https://github.com/zen-browser/desktop/issues/11107 | 3:39:00 | None |
|
||||
| Extensions that already exist cannot be pinned to the Toolbar | https://github.com/zen-browser/desktop/issues/11106 | 7:55:13 | 11:51:53 |
|
||||
| Sidebar URL is almost entirely overtaken by icons, seriously needs options to hide icons | https://github.com/zen-browser/desktop/issues/11105 | 12:24:07 | 23:18:25 |
|
||||
|
||||
_This report was generated with the [Issue Metrics Action](https://github.com/github/issue-metrics)_
|
||||
Search query used to find these items: `repo:zen-browser/desktop is:issue created:2025-11-01..2025-11-30`
|
||||
@@ -98,13 +98,13 @@ zen-site-data-panel-feature-callout-subtitle = Klikněte na ikonu pro správu na
|
||||
zen-open-link-in-glance =
|
||||
.label = Otevřít odkaz v Glance
|
||||
.accesskey = G
|
||||
zen-sidebar-notification-updated-heading = Update Complete!
|
||||
zen-sidebar-notification-updated-heading = Aktualizace byla dokončena!
|
||||
|
||||
# See ZenSidebarNotification.mjs to see how these would be used
|
||||
|
||||
zen-sidebar-notification-updated-label = What's new in { -brand-short-name }
|
||||
zen-sidebar-notification-updated-label = Co je nového v prohlížeči { -brand-short-name }
|
||||
zen-sidebar-notification-updated-tooltip =
|
||||
.title = View Release Notes
|
||||
zen-sidebar-notification-restart-safe-mode-label = Something broke?
|
||||
.title = Zobrazit změny
|
||||
zen-sidebar-notification-restart-safe-mode-label = Něco se rozbilo?
|
||||
zen-sidebar-notification-restart-safe-mode-tooltip =
|
||||
.title = Restart in Safe Mode
|
||||
.title = Restartovat v Nouzovém Režimu
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
pane-zen-looks-title = Aussehen
|
||||
category-zen-looks =
|
||||
.tooltiptext = { pane-zen-looks-title }
|
||||
zen-warning-language = Das Ändern der Standardsprache könnte es Websites einfacher machen, Sie zu verfolgen.
|
||||
zen-warning-language = Das Ändern der Standardsprache könnte es Websites erleichtern, dich zu verfolgen.
|
||||
zen-vertical-tabs-layout-header = Browser-Layout
|
||||
zen-vertical-tabs-layout-description = Wählen Sie das Layout, das am besten zu Ihnen passt
|
||||
zen-vertical-tabs-layout-description = Wähle das Layout, das am besten zu dir passt
|
||||
zen-layout-single-toolbar = Einzelne Symbolleiste
|
||||
zen-layout-multiple-toolbar = Mehrere Symbolleisten
|
||||
zen-layout-collapsed-toolbar = Eingeklappte Symbolleiste
|
||||
@@ -18,7 +18,7 @@ sync-engine-workspaces =
|
||||
.accesskey = W
|
||||
zen-glance-title = Schnellansicht
|
||||
zen-glance-header = Allgemeine Einstellungen für die Schnellansicht
|
||||
zen-glance-description = Erhalten Sie einen schnellen Überblick über Ihre Links, ohne sie in einem neuen Tab zu öffnen
|
||||
zen-glance-description = Verschaffe dir einen schnellen Überblick über deine Links, ohne sie in einem neuen Tab zu öffnen
|
||||
zen-glance-trigger-label = Auslösemethode
|
||||
zen-glance-enabled =
|
||||
.label = Schnellansicht aktivieren
|
||||
@@ -31,7 +31,7 @@ zen-glance-trigger-shift-click =
|
||||
zen-glance-trigger-meta-click =
|
||||
.label = Meta (Befehlstaste) + Klick
|
||||
zen-look-and-feel-compact-view-header = In der Kompaktansicht anzeigen
|
||||
zen-look-and-feel-compact-view-description = Zeigen Sie nur die Symbolleisten an, die Sie verwenden!
|
||||
zen-look-and-feel-compact-view-description = Zeige nur die Symbolleisten an, die du verwendest!
|
||||
zen-look-and-feel-compact-view-enabled =
|
||||
.label = { -brand-short-name } Kompaktmodus aktivieren
|
||||
zen-look-and-feel-compact-view-top-toolbar =
|
||||
@@ -45,16 +45,16 @@ pane-settings-workspaces-title = Arbeitsbereiche
|
||||
zen-tabs-unloader-enabled =
|
||||
.label = Tab-Entlader aktivieren
|
||||
zen-tabs-close-on-back-with-no-history =
|
||||
.label = Tab schließen und zum Besitzer-Tab (oder den zuletzt benutzten Tab) wechseln, wenn kein Tab-Verlauf vorhanden ist
|
||||
.label = Tab schließen und zum Besitzer-Tab (oder dem zuletzt benutzten Tab) wechseln, wenn kein Tab-Verlauf vorhanden ist
|
||||
zen-tabs-cycle-by-attribute =
|
||||
.label = Strg+Tab wechselt nur zwischen Essential- oder Arbeitsbereich-Tabs
|
||||
zen-tabs-cycle-ignore-pending-tabs =
|
||||
.label = Ausstehende Tabs beim Wechseln mit Strg+Tab ignorieren
|
||||
zen-tabs-cycle-by-attribute-warning = Strg+Tab wechselt in der zuletzt verwendeten Reihenfolge, da diese Option aktiviert ist
|
||||
zen-look-and-feel-compact-toolbar-themed =
|
||||
.label = Theme Hintergrund für kompakte Symbolleiste verwenden
|
||||
.label = Theme-Hintergrund für kompakte Symbolleiste verwenden
|
||||
zen-workspace-continue-where-left-off =
|
||||
.label = Dort fortfahren, wo Sie aufgehört haben
|
||||
.label = Dort fortfahren, wo du aufgehört hast
|
||||
pane-zen-pinned-tab-manager-title = Angepinnte Tabs
|
||||
zen-pinned-tab-manager-header = Allgemeine Einstellungen für angepinnte Tabs
|
||||
zen-pinned-tab-manager-description = Zusätzliches Verhalten von angepinnten Tabs verwalten
|
||||
@@ -82,7 +82,7 @@ zen-settings-workspaces-enabled =
|
||||
.label = Arbeitsbereiche aktivieren (Experimentell)
|
||||
zen-settings-workspaces-hide-default-container-indicator =
|
||||
.label = Container-Indikator in der Tab-Leiste ausblenden
|
||||
zen-key-unsaved = Nicht gespeichertes Tastenkürzel! Bitte speichern Sie es, indem Sie nach der Neueingabe die "Escape"-Taste drücken.
|
||||
zen-key-unsaved = Nicht gespeichertes Tastenkürzel! Bitte speichere es, indem du nach der Eingabe die "Escape"-Taste drückst.
|
||||
zen-key-conflict = Konflikt mit { $group } -> { $shortcut }
|
||||
pane-zen-theme-title = Design-Einstellungen
|
||||
zen-vertical-tabs-title = Seitenleiste und Tab-Layout
|
||||
@@ -138,13 +138,13 @@ zen-settings-workspaces-force-container-tabs-to-workspace =
|
||||
.label = Zum Arbeitsbereich wechseln, in dem Container als Standard gesetzt ist, wenn Container-Tabs geöffnet werden
|
||||
zen-theme-marketplace-link = Store besuchen
|
||||
zen-dark-theme-styles-header = Dunkles Design - Stile
|
||||
zen-dark-theme-styles-description = Passen Sie das dunkle Design nach Ihren Wünschen an
|
||||
zen-dark-theme-styles-description = Passe das dunkle Design nach deinen Wünschen an
|
||||
zen-dark-theme-styles-amoled = Nacht-Design
|
||||
zen-dark-theme-styles-default = Standard dunkles Design
|
||||
zen-dark-theme-styles-colorful = Farbenfrohes dunkles Design
|
||||
zen-compact-mode-styles-left = Tab-Leiste ausblenden
|
||||
zen-compact-mode-styles-top = Obere Leiste ausblenden
|
||||
zen-compact-mode-styles-both = Beide ausblenden
|
||||
zen-compact-mode-styles-both = Beides ausblenden
|
||||
zen-urlbar-title = Zen Adressleiste
|
||||
zen-urlbar-header = Allgemeine Einstellungen für die Adressleiste
|
||||
zen-urlbar-description = Passen Sie die Adressleiste nach Ihren Wünschen an
|
||||
@@ -230,7 +230,7 @@ zen-key-exit-full-screen = Vollbild verlassen
|
||||
zen-ai-chatbot-sidebar-shortcut = KI-Chatbot-Seitenleiste umschalten
|
||||
zen-key-inspector-mac = Inspektor umschalten (Mac)
|
||||
zen-toggle-sidebar-shortcut = Firefox-Seitenleiste umschalten
|
||||
zen-toggle-pin-tab-shortcut = Angepinnter Tab umschalten
|
||||
zen-toggle-pin-tab-shortcut = Tab anheften/lösen
|
||||
zen-reader-mode-toggle-shortcut-other = Lesemodus umschalten
|
||||
zen-picture-in-picture-toggle-shortcut = Bild-im-Bild umschalten
|
||||
zen-nav-reload-shortcut-2 = Seite neu laden
|
||||
|
||||
@@ -13,13 +13,13 @@ zen-folders-new-subfolder =
|
||||
zen-folders-panel-delete-folder =
|
||||
.label = Ordner löschen
|
||||
zen-folders-panel-convert-folder-to-space =
|
||||
.label = Ordner in Arbeitsbereich umwandeln
|
||||
.label = In Arbeitsbereich umwandeln
|
||||
zen-folders-panel-change-folder-space =
|
||||
.label = Arbeitsbereich wechseln...
|
||||
zen-folders-panel-change-icon-folder =
|
||||
.label = Symbol ändern
|
||||
.label = Icon ändern
|
||||
zen-folders-unload-all-tooltip =
|
||||
.tooltiptext = Aktive Tabs in diesem Ordner entladen
|
||||
.tooltiptext = Alle aktiven Tabs in diesem Ordner entladen
|
||||
zen-folders-unload-folder =
|
||||
.label = Alle Tabs entladen
|
||||
zen-folders-search-no-results = Keine passenden Tabs gefunden
|
||||
zen-folders-search-no-results = Keine Tabs gefunden
|
||||
|
||||
@@ -2,42 +2,42 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
zen-panel-ui-current-profile-text = Aktuelles Profil
|
||||
unified-extensions-description = Erweiterungen werden verwendet, um { -brand-short-name } zusätzliche Funktionen hinzuzufügen.
|
||||
zen-panel-ui-current-profile-text = Dein aktuelles Profil
|
||||
unified-extensions-description = Mit Erweiterungen kannst du { -brand-short-name } um zusätzliche Funktionen erweitern.
|
||||
tab-context-zen-reset-pinned-tab =
|
||||
.label = Angehefteten Tab zurücksetzen
|
||||
.accesskey = R
|
||||
tab-context-zen-add-essential =
|
||||
.label = Add to Essentials
|
||||
.label = Zu Essentials hinzufügen
|
||||
.accesskey = E
|
||||
tab-context-zen-add-essential-badge = { $num } / { $max } slots filled
|
||||
tab-context-zen-add-essential-badge = { $num } von { $max } Plätzen belegt
|
||||
tab-context-zen-remove-essential =
|
||||
.label = Aus Essentials entfernen
|
||||
.accesskey = R
|
||||
tab-context-zen-replace-pinned-url-with-current =
|
||||
.label = Angeheftete URL durch aktuelle ersetzen
|
||||
.accesskey = C
|
||||
zen-themes-corrupted = Deine { -brand-short-name } Mods-Datei ist beschädigt. Sie wurde auf das Standard-Design zurückgesetzt.
|
||||
zen-shortcuts-corrupted = Deine { -brand-short-name } Tastenkürzel-Datei ist beschädigt. Sie wurde auf die Standard-Tastenkürzel zurückgesetzt.
|
||||
zen-themes-corrupted = Deine { -brand-short-name } Mods-Datei ist beschädigt. Wir haben sie auf das Standard-Design zurückgesetzt.
|
||||
zen-shortcuts-corrupted = Deine { -brand-short-name } Tastenkürzel-Datei ist beschädigt. Wir haben sie auf die Standard-Tastenkürzel zurückgesetzt.
|
||||
# note: Do not translate the "<br/>" tags in the following string
|
||||
zen-new-urlbar-notification =
|
||||
Die neue Adressleiste wurde aktiviert und macht neue Tab-Seiten überflüssig.<br/><br/>
|
||||
Öffne einen neuen Tab, um die neue Adressleiste in Aktion zu sehen!
|
||||
Die neue Adressleiste ist jetzt aktiv! Dadurch brauchst du keine neuen Tab-Seiten mehr.<br/><br/>
|
||||
Öffne einfach einen neuen Tab, um die neue Adressleiste auszuprobieren!
|
||||
zen-disable = Deaktivieren
|
||||
pictureinpicture-minimize-btn =
|
||||
.aria-label = Minimieren
|
||||
.tooltip = Minimieren
|
||||
zen-panel-ui-gradient-generator-custom-color = Benutzerdefinierte Farbe
|
||||
zen-panel-ui-gradient-generator-saved-message = Farbverlauf erfolgreich gespeichert!
|
||||
zen-copy-current-url-confirmation = Aktuelle URL kopiert!
|
||||
zen-panel-ui-gradient-generator-custom-color = Eigene Farbe
|
||||
zen-panel-ui-gradient-generator-saved-message = Farbverlauf gespeichert!
|
||||
zen-copy-current-url-confirmation = URL kopiert!
|
||||
zen-general-cancel-label =
|
||||
.label = Abbrechen
|
||||
zen-general-confirm =
|
||||
.label = Bestätigen
|
||||
zen-pinned-tab-replaced = Die URL des angehefteten Tabs wurde durch die aktuelle URL ersetzt!
|
||||
zen-tabs-renamed = Tab wurde erfolgreich umbenannt!
|
||||
zen-background-tab-opened-toast = Neuer Hintergrund-Tab geöffnet!
|
||||
zen-workspace-renamed-toast = Arbeitsbereich wurde erfolgreich umbenannt!
|
||||
zen-pinned-tab-replaced = Die URL des angehefteten Tabs wurde aktualisiert!
|
||||
zen-tabs-renamed = Tab umbenannt!
|
||||
zen-background-tab-opened-toast = Neuer Tab im Hintergrund geöffnet!
|
||||
zen-workspace-renamed-toast = Arbeitsbereich umbenannt!
|
||||
zen-library-sidebar-workspaces =
|
||||
.label = Arbeitsbereiche
|
||||
zen-library-sidebar-mods =
|
||||
@@ -86,25 +86,25 @@ zen-site-data-header-reader-mode =
|
||||
zen-site-data-header-screenshot =
|
||||
.tooltiptext = Screenshot erstellen
|
||||
zen-site-data-header-bookmark =
|
||||
.tooltiptext = Diese Seite als Lesezeichen hinzufügen
|
||||
.tooltiptext = Diese Seite als Lesezeichen speichern
|
||||
zen-urlbar-copy-url-button =
|
||||
.tooltiptext = URL kopieren
|
||||
zen-site-data-setting-site-protection = Tracking-Schutz
|
||||
|
||||
# Section: Feature callouts
|
||||
|
||||
zen-site-data-panel-feature-callout-title = Ein neuer Ort für Add-ons, Berechtigungen und mehr
|
||||
zen-site-data-panel-feature-callout-subtitle = Klicke auf das Symbol, um Website-Einstellungen zu verwalten, Sicherheitsinformationen anzuzeigen, auf Erweiterungen zuzugreifen und häufige Aktionen auszuführen.
|
||||
zen-site-data-panel-feature-callout-title = Hier findest du Add-ons, Berechtigungen und mehr
|
||||
zen-site-data-panel-feature-callout-subtitle = Klicke auf das Symbol, um Website-Einstellungen anzupassen, Sicherheitsinfos anzuzeigen, auf Erweiterungen zuzugreifen und häufige Aktionen auszuführen.
|
||||
zen-open-link-in-glance =
|
||||
.label = Link in Glance öffnen
|
||||
.accesskey = G
|
||||
zen-sidebar-notification-updated-heading = Update Complete!
|
||||
zen-sidebar-notification-updated-heading = Update abgeschlossen!
|
||||
|
||||
# See ZenSidebarNotification.mjs to see how these would be used
|
||||
|
||||
zen-sidebar-notification-updated-label = What's new in { -brand-short-name }
|
||||
zen-sidebar-notification-updated-label = Was in { -brand-short-name } neu ist
|
||||
zen-sidebar-notification-updated-tooltip =
|
||||
.title = View Release Notes
|
||||
zen-sidebar-notification-restart-safe-mode-label = Something broke?
|
||||
.title = Versionshinweise anzeigen
|
||||
zen-sidebar-notification-restart-safe-mode-label = Funktioniert etwas nicht?
|
||||
zen-sidebar-notification-restart-safe-mode-tooltip =
|
||||
.title = Restart in Safe Mode
|
||||
.title = Im abgesicherten Modus neu starten
|
||||
|
||||
@@ -5,16 +5,16 @@
|
||||
tab-zen-split-tabs =
|
||||
.label =
|
||||
{ $tabCount ->
|
||||
[1] Tab aufteilen (mehrere ausgewählte Tabs erforderlich)
|
||||
[1] Tab aufteilen (wähle mehrere Tabs aus)
|
||||
*[other] { $tabCount } Tabs aufteilen
|
||||
}
|
||||
.accesskey = S
|
||||
zen-split-link =
|
||||
.label = Link in neuem Tab aufteilen
|
||||
.label = Link in geteiltem Tab öffnen
|
||||
.accesskey = S
|
||||
zen-split-view-modifier-header = Geteilte Ansicht
|
||||
zen-split-view-modifier-activate-reallocation =
|
||||
.label = Neuanordnung aktivieren
|
||||
zen-split-view-modifier-enabled-toast = Neuanordnung der geteilten Ansicht ist EIN.
|
||||
zen-split-view-modifier-enabled-toast-description = Ziehen Sie die Ansicht per Drag & Drop, um sie neu anzuordnen. Drücken Sie Esc zum Beenden.
|
||||
zen-split-view-modifier-disabled-toast = Neuanordnung der geteilten Ansicht ist AUS.
|
||||
.label = Anordnung ändern
|
||||
zen-split-view-modifier-enabled-toast = Anordnung der geteilten Ansicht aktiv.
|
||||
zen-split-view-modifier-enabled-toast-description = Ziehe die Ansicht per Drag & Drop, um sie neu anzuordnen. Drücke Esc zum Beenden.
|
||||
zen-split-view-modifier-disabled-toast = Anordnung der geteilten Ansicht deaktiviert.
|
||||
|
||||
@@ -3,31 +3,31 @@
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
zen-toolbar-context-tabs-right =
|
||||
.label = Tabs rechts
|
||||
.label = Tabs rechts anzeigen
|
||||
.accesskey = R
|
||||
zen-toolbar-context-compact-mode =
|
||||
.label = Kompaktmodus
|
||||
zen-toolbar-context-compact-mode-enable =
|
||||
.label = Kompaktmodus aktivieren
|
||||
.label = Kompaktmodus einschalten
|
||||
.accesskey = D
|
||||
zen-toolbar-context-compact-mode-just-tabs =
|
||||
.label = Seitenleiste ausblenden
|
||||
.label = Nur Seitenleiste ausblenden
|
||||
zen-toolbar-context-compact-mode-just-toolbar =
|
||||
.label = Symbolleiste ausblenden
|
||||
.label = Nur Symbolleiste ausblenden
|
||||
zen-toolbar-context-compact-mode-hide-both =
|
||||
.label = Beide ausblenden
|
||||
.label = Beides ausblenden
|
||||
.accesskey = H
|
||||
zen-toolbar-context-new-folder =
|
||||
.label = Neuer Ordner
|
||||
.accesskey = N
|
||||
sidebar-zen-expand =
|
||||
.label = Seitenleiste erweitern
|
||||
.label = Seitenleiste ausklappen
|
||||
sidebar-zen-create-new =
|
||||
.label = Neu erstellen...
|
||||
tabbrowser-unload-tab-button =
|
||||
.tooltiptext =
|
||||
{ $tabCount ->
|
||||
[one] Tab entladen und dorthin wechseln
|
||||
[one] Tab entladen und öffnen
|
||||
*[other] { $tabCount } Tabs entladen und zum ersten wechseln
|
||||
}
|
||||
tabbrowser-reset-pin-button =
|
||||
@@ -36,4 +36,4 @@ tabbrowser-reset-pin-button =
|
||||
[one] Tab zurücksetzen und anheften
|
||||
*[other] { $tabCount } Tabs zurücksetzen und anheften
|
||||
}
|
||||
tab-reset-pin-label = Zurück zur angehefteten URL
|
||||
tab-reset-pin-label = Zur ursprünglichen URL zurückkehren
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
zen-welcome-title-line1 = Willkommen zu
|
||||
zen-welcome-title-line2 = einem ruhigeren Internet
|
||||
zen-welcome-import-title = Ein neuer Anfang, dieselben Lesezeichen
|
||||
zen-welcome-import-description-1 = Ihre Lesezeichen, Ihr Verlauf und Ihre Passwörter sind wie eine Spur durch das Internet – lassen Sie sie nicht zurück!
|
||||
zen-welcome-import-description-2 = Übertrage sie ganz einfach aus einem anderen Browser und mache genau dort weiter, wo du aufgehört hast.
|
||||
zen-welcome-import-description-1 = Deine Lesezeichen, dein Verlauf und deine Passwörter sind wie eine Spur durch das Internet – lass sie nicht zurück!
|
||||
zen-welcome-import-description-2 = Übertrage sie ganz einfach aus einem anderen Browser und mach genau dort weiter, wo du aufgehört hast..
|
||||
zen-welcome-import-button = Jetzt importieren
|
||||
zen-welcome-set-default-browser = { -brand-short-name } als Standardbrowser festlegen
|
||||
zen-welcome-dont-set-default-browser = { -brand-short-name } NICHT als Standardbrowser festlegen
|
||||
|
||||
@@ -21,9 +21,9 @@ zen-workspaces-panel-context-default-profile =
|
||||
zen-workspaces-panel-unload =
|
||||
.label = Arbeitsbereich entladen
|
||||
zen-workspaces-how-to-reorder-title = So ordnest du Arbeitsbereiche neu an
|
||||
zen-workspaces-how-to-reorder-desc = Ziehe die Arbeitsbereich-Symbole am unteren Rand der Seitenleiste, um sie neu anzuordnen
|
||||
zen-workspaces-how-to-reorder-desc = Zieh die Arbeitsbereich-Symbole am unteren Rand der Seitenleiste, um sie neu anzuordnen
|
||||
zen-workspaces-change-theme =
|
||||
.label = Design bearbeiten
|
||||
.label = Design anpassen
|
||||
zen-workspaces-panel-context-open =
|
||||
.label = Arbeitsbereich öffnen
|
||||
.accesskey = O
|
||||
@@ -31,7 +31,7 @@ zen-workspaces-panel-context-edit =
|
||||
.label = Arbeitsbereich bearbeiten
|
||||
.accesskey = E
|
||||
context-zen-change-workspace-tab =
|
||||
.label = Tab(s) zu Arbeitsbereich verschieben
|
||||
.label = Tabs zu Arbeitsbereich verschieben
|
||||
.accesskey = C
|
||||
zen-bookmark-edit-panel-workspace-selector =
|
||||
.value = Arbeitsbereiche
|
||||
@@ -46,20 +46,20 @@ zen-panel-ui-gradient-generator-algo-triadic =
|
||||
.label = Triadisch
|
||||
zen-panel-ui-gradient-generator-algo-floating =
|
||||
.label = Fließend
|
||||
zen-panel-ui-gradient-click-to-add = Klicken Sie, um eine Farbe hinzuzufügen
|
||||
zen-panel-ui-gradient-click-to-add = Klick hier, um eine Farbe hinzuzufügen
|
||||
zen-workspace-creation-name =
|
||||
.placeholder = Name des Arbeitsbereichs
|
||||
zen-workspaces-panel-context-reorder =
|
||||
.label = Arbeitsbereiche neu anordnen
|
||||
zen-workspace-creation-profile = Profil
|
||||
.tooltiptext = Profile werden verwendet, um Cookies und Website-Daten zwischen Arbeitsbereichen zu trennen.
|
||||
.tooltiptext = Profile trennen Cookies und Website-Daten zwischen verschiedenen Arbeitsbereichen.
|
||||
zen-workspace-creation-header = Arbeitsbereich erstellen
|
||||
zen-workspace-creation-label = Arbeitsbereiche helfen dir, deine Tabs und Sitzungen zu organisieren.
|
||||
zen-workspaces-delete-workspace-title = Arbeitsbereich löschen?
|
||||
zen-workspaces-delete-workspace-body = Möchtest du { $name } wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.
|
||||
zen-workspaces-delete-workspace-body = Möchtest du { $name } wirklich löschen? Das lässt sich nicht rückgängig machen.
|
||||
# Note that the html tag MUST not be changed or removed, as it is used to better
|
||||
# display the shortcut in the toast notification.
|
||||
zen-workspaces-close-all-unpinned-tabs-toast = Tabs geschlossen! Nutze <span>{ $shortcut }</span>, um rückgängig zu machen.
|
||||
zen-workspaces-close-all-unpinned-tabs-toast = Tabs geschlossen! Nutze <span>{ $shortcut }</span>, um das rückgängig zu machen.
|
||||
zen-workspaces-close-all-unpinned-tabs-title =
|
||||
.label = Aufräumen
|
||||
.tooltiptext = Alle nicht angehefteten Tabs schließen
|
||||
|
||||
@@ -66,6 +66,10 @@ zen-panel-ui-gradient-click-to-add = Click to add a color
|
||||
zen-workspace-creation-name =
|
||||
.placeholder = Space Name
|
||||
|
||||
zen-move-tab-to-workspace-button =
|
||||
.label = Move To...
|
||||
.tooltiptext = Move all tabs in this window to a Space
|
||||
|
||||
zen-workspaces-panel-context-reorder =
|
||||
.label = Reorder Spaces
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ zen-tabs-cycle-by-attribute =
|
||||
.label = Ctrl+Tab cycles within Essential or Workspace tabs only
|
||||
zen-tabs-cycle-ignore-pending-tabs =
|
||||
.label = Ignore Pending tabs when cycling with Ctrl+Tab
|
||||
zen-tabs-cycle-by-attribute-warning = Ctrl+Tab will cycle by recently used order, as it is enabled
|
||||
zen-tabs-cycle-by-attribute-warning = Ctrl+Tab będzie przełączał karty według ostatnio używanej kolejności, ponieważ jest włączona
|
||||
zen-look-and-feel-compact-toolbar-themed =
|
||||
.label = Użyj tła motywu dla kompaktowego paska narzędzi
|
||||
zen-workspace-continue-where-left-off =
|
||||
|
||||
37
package-lock.json
generated
37
package-lock.json
generated
@@ -9,7 +9,7 @@
|
||||
"version": "1.0.0",
|
||||
"license": "MPL-2.0",
|
||||
"dependencies": {
|
||||
"@zen-browser/surfer": "^1.11.26"
|
||||
"@zen-browser/surfer": "^1.12.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/preset-typescript": "^7.27.0",
|
||||
@@ -35,6 +35,7 @@
|
||||
"integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": "^0.3.5",
|
||||
"@jridgewell/trace-mapping": "^0.3.24"
|
||||
@@ -64,6 +65,7 @@
|
||||
"integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
@@ -106,6 +108,7 @@
|
||||
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
}
|
||||
@@ -146,6 +149,7 @@
|
||||
"integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/compat-data": "^7.26.8",
|
||||
"@babel/helper-validator-option": "^7.25.9",
|
||||
@@ -163,6 +167,7 @@
|
||||
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
}
|
||||
@@ -336,6 +341,7 @@
|
||||
"integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/template": "^7.27.0",
|
||||
"@babel/types": "^7.27.0"
|
||||
@@ -1109,9 +1115,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@zen-browser/surfer": {
|
||||
"version": "1.11.26",
|
||||
"resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.11.26.tgz",
|
||||
"integrity": "sha512-NZcFZ4a/HWvEJlEr5IlQto/xHLOr6tZjkZALue2qHg+rjRKR5v2BEV4hV5mfAo85gKhyM2Ism0sD+0+/VQIESg==",
|
||||
"version": "1.12.0",
|
||||
"resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.12.0.tgz",
|
||||
"integrity": "sha512-I5nxDgGpFGtdOAC9DZkoQp9GJ4cAqCW+0p0DoQRjW/jdnQJUH20ygvPyPr+sgjXISPFclYX+KrVoT2kJqTdlTw==",
|
||||
"license": "MPL-2.0",
|
||||
"dependencies": {
|
||||
"@resvg/resvg-js": "^1.4.0",
|
||||
@@ -1147,7 +1153,6 @@
|
||||
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"acorn": "bin/acorn"
|
||||
},
|
||||
@@ -1819,7 +1824,8 @@
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"license": "CC-BY-4.0"
|
||||
"license": "CC-BY-4.0",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/chalk": {
|
||||
"version": "4.1.2",
|
||||
@@ -2006,7 +2012,8 @@
|
||||
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
|
||||
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/core-js-pure": {
|
||||
"version": "3.41.0",
|
||||
@@ -2326,7 +2333,8 @@
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.139.tgz",
|
||||
"integrity": "sha512-GGnRYOTdN5LYpwbIr0rwP/ZHOQSvAF6TG0LSzp28uCBb9JiXHJGmaaKw29qjNJc5bGnnp6kXJqRnGMQoELwi5w==",
|
||||
"dev": true,
|
||||
"license": "ISC"
|
||||
"license": "ISC",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
@@ -2562,6 +2570,7 @@
|
||||
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
@@ -2585,7 +2594,6 @@
|
||||
"integrity": "sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@eslint-community/regexpp": "^4.12.1",
|
||||
@@ -3433,6 +3441,7 @@
|
||||
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
@@ -4430,6 +4439,7 @@
|
||||
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"json5": "lib/cli.js"
|
||||
},
|
||||
@@ -4864,6 +4874,7 @@
|
||||
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"yallist": "^3.0.2"
|
||||
}
|
||||
@@ -5078,7 +5089,8 @@
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
|
||||
"integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/normalize-path": {
|
||||
"version": "3.0.0",
|
||||
@@ -5534,7 +5546,6 @@
|
||||
"integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"prettier": "bin/prettier.cjs"
|
||||
},
|
||||
@@ -6949,6 +6960,7 @@
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"escalade": "^3.2.0",
|
||||
"picocolors": "^1.1.1"
|
||||
@@ -7252,7 +7264,8 @@
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
||||
"dev": true,
|
||||
"license": "ISC"
|
||||
"license": "ISC",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/yaml": {
|
||||
"version": "2.7.0",
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/zen-browser/desktop#readme",
|
||||
"dependencies": {
|
||||
"@zen-browser/surfer": "^1.11.26"
|
||||
"@zen-browser/surfer": "^1.12.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/preset-typescript": "^7.27.0",
|
||||
|
||||
@@ -32,6 +32,10 @@
|
||||
- name: zen.theme.styled-status-panel
|
||||
value: '@IS_TWILIGHT@'
|
||||
|
||||
- name: zen.theme.styled-status-panel
|
||||
value: true
|
||||
condition: 'defined(XP_MACOSX)'
|
||||
|
||||
- name: zen.theme.hide-unified-extensions-button
|
||||
value: true
|
||||
|
||||
|
||||
6
prefs/zen/window-sync.yaml
Normal file
6
prefs/zen/window-sync.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
# 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/.
|
||||
|
||||
- name: zen.window-sync.enabled
|
||||
value: true
|
||||
@@ -3,6 +3,11 @@
|
||||
# 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/.
|
||||
|
||||
set -e
|
||||
|
||||
# FIrst check if importing the patches succeeds
|
||||
npm run import
|
||||
|
||||
IGNORE_FILES=(
|
||||
"shared.nsh"
|
||||
"ignorePrefs.json"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/Cargo.lock b/Cargo.lock
|
||||
index 4386724a82baa72678b7228ef3af9fabc2da318e..01f7ac42ff96f8f96984537f19bde4bbc8cd8d72 100644
|
||||
index 6f6632e9747e281aac3ea177225c03b73f25456e..06756e08041835c203490057855d537118647cd0 100644
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -4167,8 +4167,6 @@ dependencies = [
|
||||
@@ -4171,8 +4171,6 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "mime_guess"
|
||||
version = "2.0.4"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/Cargo.toml b/Cargo.toml
|
||||
index 772a74e7439d87e9c5486abcf003617240190710..522b5459b30b943832369ff7a73755ad4c7d8140 100644
|
||||
index e2846a08008684f18799d75e5c28fd244c10361a..ba72071baef49ed494f78d1cc6752b53d1841f46 100644
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -227,6 +227,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" }
|
||||
@@ -232,6 +232,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" }
|
||||
# Workaround for https://github.com/rust-lang/cargo/issues/11232
|
||||
rure = { path = "third_party/rust/rure" }
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/actors/WebRTCParent.sys.mjs b/browser/actors/WebRTCParent.sys.mjs
|
||||
index 4ff6ae4d6f272936f0aa1c80a488df16159b42f2..85e4d7bf500603fcd5724658e96c7fd0a04432d3 100644
|
||||
index a9612920f86ef5f37328497bf62255497e96b02d..a5643cd7e9c7a71da391408c14e00185b7db3f24 100644
|
||||
--- a/browser/actors/WebRTCParent.sys.mjs
|
||||
+++ b/browser/actors/WebRTCParent.sys.mjs
|
||||
@@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
diff --git a/browser/app/macbuild/Contents/Info.plist.in b/browser/app/macbuild/Contents/Info.plist.in
|
||||
index ea28831b90662b12bdcb137c35b6bb83626c77e7..d28f4eca976ad9de12b03d995d2363e643224421 100644
|
||||
index 0c4fb837a24490c66b284abf2bd9299c2e021de0..ea28831b90662b12bdcb137c35b6bb83626c77e7 100644
|
||||
--- a/browser/app/macbuild/Contents/Info.plist.in
|
||||
+++ b/browser/app/macbuild/Contents/Info.plist.in
|
||||
@@ -191,7 +191,7 @@
|
||||
@@ -190,8 +190,6 @@
|
||||
<string>@MAC_APP_NAME@ @APP_VERSION@</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>firefox.icns</string>
|
||||
- <key>CFBundleIconName</key>
|
||||
- <string>AppIcon</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
- <string>@MOZ_MACBUNDLE_ID@</string>
|
||||
+ <string>app.zen-browser.zen</string>
|
||||
<string>@MOZ_MACBUNDLE_ID@</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/browser-addons.js b/browser/base/content/browser-addons.js
|
||||
index f33a300eb0eed74e286da24919ad3e8505f632c3..9f400e887424693d0ecceb9db79fccf2bd5a757d 100644
|
||||
index fadcbfca95ee28140579430c0371baad0e2f216a..7454b801b4ad892d6ad122277eb7c7736e976f9f 100644
|
||||
--- a/browser/base/content/browser-addons.js
|
||||
+++ b/browser/base/content/browser-addons.js
|
||||
@@ -1069,7 +1069,7 @@ var gXPInstallObserver = {
|
||||
@@ -38,7 +38,7 @@ index f33a300eb0eed74e286da24919ad3e8505f632c3..9f400e887424693d0ecceb9db79fccf2
|
||||
}
|
||||
|
||||
return anchorID;
|
||||
@@ -2646,11 +2646,7 @@ var gUnifiedExtensions = {
|
||||
@@ -2657,11 +2657,7 @@ var gUnifiedExtensions = {
|
||||
// Lazy load the unified-extensions-panel panel the first time we need to
|
||||
// display it.
|
||||
if (!this._panel) {
|
||||
@@ -51,7 +51,7 @@ index f33a300eb0eed74e286da24919ad3e8505f632c3..9f400e887424693d0ecceb9db79fccf2
|
||||
let customizationArea = this._panel.querySelector(
|
||||
"#unified-extensions-area"
|
||||
);
|
||||
@@ -2703,6 +2699,7 @@ var gUnifiedExtensions = {
|
||||
@@ -2714,6 +2710,7 @@ var gUnifiedExtensions = {
|
||||
// and no alternative content is available for display in the panel.
|
||||
const policies = this.getActivePolicies();
|
||||
if (
|
||||
@@ -59,7 +59,7 @@ index f33a300eb0eed74e286da24919ad3e8505f632c3..9f400e887424693d0ecceb9db79fccf2
|
||||
policies.length &&
|
||||
!this.hasExtensionsInPanel(policies) &&
|
||||
!this.isPrivateWindowMissingExtensionsWithoutPBMAccess() &&
|
||||
@@ -2743,7 +2740,7 @@ var gUnifiedExtensions = {
|
||||
@@ -2754,7 +2751,7 @@ var gUnifiedExtensions = {
|
||||
this.recordButtonTelemetry(reason || "extensions_panel_showing");
|
||||
this.ensureButtonShownBeforeAttachingPanel(panel);
|
||||
PanelMultiView.openPopup(panel, this._button, {
|
||||
@@ -68,7 +68,7 @@ index f33a300eb0eed74e286da24919ad3e8505f632c3..9f400e887424693d0ecceb9db79fccf2
|
||||
triggerEvent: aEvent,
|
||||
});
|
||||
}
|
||||
@@ -2930,18 +2927,20 @@ var gUnifiedExtensions = {
|
||||
@@ -2941,18 +2938,20 @@ var gUnifiedExtensions = {
|
||||
this._maybeMoveWidgetNodeBack(widgetId);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/browser-fullScreenAndPointerLock.js b/browser/base/content/browser-fullScreenAndPointerLock.js
|
||||
index bef746dc594ad974c91075cf3657c199f8f8830f..bb671341b6715c42df76f7298ba55e1fac73f33b 100644
|
||||
index f459f3ca4048c29a32832b46ba87de8552a0ab8a..d317676e6d12d756ddf5dfbffe73050de07c2375 100644
|
||||
--- a/browser/base/content/browser-fullScreenAndPointerLock.js
|
||||
+++ b/browser/base/content/browser-fullScreenAndPointerLock.js
|
||||
@@ -424,10 +424,10 @@ var FullScreen = {
|
||||
@@ -423,10 +423,10 @@ var FullScreen = {
|
||||
gNavToolbox.classList.toggle("fullscreen-with-menubar", shiftSize > 0);
|
||||
|
||||
let transform = shiftSize > 0 ? `translateY(${shiftSize}px)` : "";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
|
||||
index 8e63654b343e8518aa0e366a3fd3bf7e0856eafb..3cebc9bb057f51cea639130fecd7576e1c9db79c 100644
|
||||
index 02f601d859ea32557af572d2499ad8be75b684b5..b1a6f66a74f75150d7e2fbc50528965bb16cb4d9 100644
|
||||
--- a/browser/base/content/browser-init.js
|
||||
+++ b/browser/base/content/browser-init.js
|
||||
@@ -198,6 +198,7 @@ var gBrowserInit = {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
|
||||
index b4b79e7fb3228ba91bd8afa08659be0d88883725..b4801e2a3076139622d58f81943e61cd61ee1828 100644
|
||||
index 15ef352c147eff781d34a3e5fa02fa791bdd6188..b0784e817ad25c7a4983e9f1cb08b293de15a99d 100644
|
||||
--- a/browser/base/content/browser.js
|
||||
+++ b/browser/base/content/browser.js
|
||||
@@ -31,6 +31,7 @@ ChromeUtils.defineESModuleGetters(this, {
|
||||
@@ -10,7 +10,7 @@ index b4b79e7fb3228ba91bd8afa08659be0d88883725..b4801e2a3076139622d58f81943e61cd
|
||||
DevToolsSocketStatus:
|
||||
"resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs",
|
||||
DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs",
|
||||
@@ -822,7 +823,12 @@ function UpdateBackForwardCommands(aWebNavigation) {
|
||||
@@ -821,7 +822,12 @@ function UpdateBackForwardCommands(aWebNavigation) {
|
||||
|
||||
var backDisabled = backCommand.hasAttribute("disabled");
|
||||
var forwardDisabled = forwardCommand.hasAttribute("disabled");
|
||||
@@ -24,7 +24,7 @@ index b4b79e7fb3228ba91bd8afa08659be0d88883725..b4801e2a3076139622d58f81943e61cd
|
||||
if (backDisabled) {
|
||||
backCommand.removeAttribute("disabled");
|
||||
} else {
|
||||
@@ -2298,6 +2304,8 @@ var XULBrowserWindow = {
|
||||
@@ -2297,6 +2303,8 @@ var XULBrowserWindow = {
|
||||
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
|
||||
TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
|
||||
|
||||
@@ -33,7 +33,7 @@ index b4b79e7fb3228ba91bd8afa08659be0d88883725..b4801e2a3076139622d58f81943e61cd
|
||||
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
|
||||
|
||||
if (!gMultiProcessBrowser) {
|
||||
@@ -3809,7 +3817,7 @@ function warnAboutClosingWindow() {
|
||||
@@ -3808,7 +3816,7 @@ function warnAboutClosingWindow() {
|
||||
|
||||
if (!isPBWindow && !toolbar.visible) {
|
||||
return gBrowser.warnAboutClosingTabs(
|
||||
@@ -42,7 +42,7 @@ index b4b79e7fb3228ba91bd8afa08659be0d88883725..b4801e2a3076139622d58f81943e61cd
|
||||
gBrowser.closingTabsEnum.ALL
|
||||
);
|
||||
}
|
||||
@@ -3849,7 +3857,7 @@ function warnAboutClosingWindow() {
|
||||
@@ -3848,7 +3856,7 @@ function warnAboutClosingWindow() {
|
||||
return (
|
||||
isPBWindow ||
|
||||
gBrowser.warnAboutClosingTabs(
|
||||
@@ -51,7 +51,7 @@ index b4b79e7fb3228ba91bd8afa08659be0d88883725..b4801e2a3076139622d58f81943e61cd
|
||||
gBrowser.closingTabsEnum.ALL
|
||||
)
|
||||
);
|
||||
@@ -3874,7 +3882,7 @@ function warnAboutClosingWindow() {
|
||||
@@ -3873,7 +3881,7 @@ function warnAboutClosingWindow() {
|
||||
AppConstants.platform != "macosx" ||
|
||||
isPBWindow ||
|
||||
gBrowser.warnAboutClosingTabs(
|
||||
@@ -60,7 +60,7 @@ index b4b79e7fb3228ba91bd8afa08659be0d88883725..b4801e2a3076139622d58f81943e61cd
|
||||
gBrowser.closingTabsEnum.ALL
|
||||
)
|
||||
);
|
||||
@@ -4796,6 +4804,9 @@ var ConfirmationHint = {
|
||||
@@ -4795,6 +4803,9 @@ var ConfirmationHint = {
|
||||
MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl");
|
||||
MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl");
|
||||
document.l10n.setAttributes(this._message, messageId, options.l10nArgs);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc
|
||||
index 2e7654036647796715aec392f9e714e7256c9864..0b3b76ab479bb6ae5439dd424b69f641d3b86c28 100644
|
||||
index 8d97b6e669954a09afe6a46d1c79652264494e92..86877b983207c5f9852c9192ee0257a909c5ea7a 100644
|
||||
--- a/browser/base/content/browser-sets.inc
|
||||
+++ b/browser/base/content/browser-sets.inc
|
||||
@@ -405,3 +405,4 @@
|
||||
@@ -406,3 +406,4 @@
|
||||
internal="true"/>
|
||||
#endif
|
||||
</keyset>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/browser-sets.js b/browser/base/content/browser-sets.js
|
||||
index 9cff49a7b86f7697f70c4ef61d3c3561f058dc45..15ac9a8a79e8642b3add2f6df63ed32eb0c8bcb9 100644
|
||||
index 0bb581aa34ddeef1e3eb85b0fadd41a539b4b9d6..cbe2df8b1775cb8194007ee995fd91769618b48d 100644
|
||||
--- a/browser/base/content/browser-sets.js
|
||||
+++ b/browser/base/content/browser-sets.js
|
||||
@@ -253,7 +253,7 @@ document.addEventListener(
|
||||
@@ -254,7 +254,7 @@ document.addEventListener(
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml
|
||||
index 78030413c4125362e056a8ec249b597292be050b..90fc935e105d594cd4cc925c70c29b18b8dffccd 100644
|
||||
index e688ba37c40ea602a32a84af6c1497d884ddc27b..ad8515eae1d4e697b9329d9d5babfd59679c9288 100644
|
||||
--- a/browser/base/content/main-popupset.inc.xhtml
|
||||
+++ b/browser/base/content/main-popupset.inc.xhtml
|
||||
@@ -208,6 +208,10 @@
|
||||
@@ -216,6 +216,10 @@
|
||||
hidden="true"
|
||||
tabspecific="true"
|
||||
aria-labelledby="editBookmarkPanelTitle">
|
||||
@@ -13,7 +13,7 @@ index 78030413c4125362e056a8ec249b597292be050b..90fc935e105d594cd4cc925c70c29b18
|
||||
<box class="panel-header">
|
||||
<html:h1>
|
||||
<html:span id="editBookmarkPanelTitle"/>
|
||||
@@ -233,6 +237,7 @@
|
||||
@@ -241,6 +245,7 @@
|
||||
class="footer-button"/>
|
||||
</html:moz-button-group>
|
||||
</vbox>
|
||||
@@ -21,7 +21,7 @@ index 78030413c4125362e056a8ec249b597292be050b..90fc935e105d594cd4cc925c70c29b18
|
||||
</panel>
|
||||
</html:template>
|
||||
|
||||
@@ -628,6 +633,8 @@
|
||||
@@ -636,6 +641,8 @@
|
||||
|
||||
#include popup-notifications.inc.xhtml
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
index 328a9b052e2f758f48df1caa8165347ed0301b33..1c111abe148f2e16afa6b5f33eb118b7c02dfd69 100644
|
||||
index 40dddda5a6191c2ac012767ca55ed5fa35c03a6b..2e96a7ca233529ee2b570f94154008be5b0088e3 100644
|
||||
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs
|
||||
index 259b440375c7e84d373a134fea20cdbc1c1bae4b..c4a251f0169d22186c2766992ab40366d53582f1 100644
|
||||
index b77c12da637ba31aca6e8100187d0ac14db33298..4fbec0dda932bcaa77ce714826ac8ab20b9e8e63 100644
|
||||
--- a/browser/base/content/nsContextMenu.sys.mjs
|
||||
+++ b/browser/base/content/nsContextMenu.sys.mjs
|
||||
@@ -1103,6 +1103,8 @@ export class nsContextMenu {
|
||||
!this.onMozExtLink &&
|
||||
!this.isSecureAboutPage()
|
||||
);
|
||||
+ this.showItem("context-zenSplitLink", this.onLink && !this.onMailtoLink && !this.onTelLink);
|
||||
+ this.showItem("context-zenOpenLinkInGlance", this.onLink && !this.onMailtoLink && !this.onTelLink);
|
||||
@@ -376,6 +376,9 @@ export class nsContextMenu {
|
||||
this.initPDFItems();
|
||||
this.initTextFragmentItems();
|
||||
|
||||
let canNotStrip =
|
||||
lazy.STRIP_ON_SHARE_CAN_DISABLE && !this.#canStripParams();
|
||||
+ this.showItem("context-zenSplitLink", this.onLink && !this.onMailtoLink && !this.onTelLink);
|
||||
+ this.showItem("context-zenOpenLinkInGlance", this.onLink && !this.onMailtoLink && !this.onTelLink);
|
||||
+
|
||||
this.showHideSeparators(aXulMenu);
|
||||
if (!aXulMenu.showHideSeparators) {
|
||||
// Set the showHideSeparators function on the menu itself so that
|
||||
|
||||
@@ -43,11 +43,8 @@
|
||||
<script type="text/javascript" src="chrome://browser/content/ZenPreloadedScripts.js"></script>
|
||||
|
||||
# Scripts used all over the browser
|
||||
<script type="module" src="chrome://browser/content/ZenUIManager.mjs"></script>
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenFolder.mjs"></script>
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenCompactMode.mjs"></script>
|
||||
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenPinnedTabsStorage.mjs"></script>
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenWorkspacesStorage.mjs"></script>
|
||||
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenMediaController.mjs"></script>
|
||||
@@ -58,4 +55,3 @@
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenFolders.mjs"></script>
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenDownloadAnimation.mjs"></script>
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenEmojiPicker.mjs"></script>
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenMods.mjs"></script>
|
||||
|
||||
@@ -12,10 +12,9 @@
|
||||
<button id="PanelUI-zen-gradient-generator-scheme-dark" class="subviewbutton"/>
|
||||
</hbox>
|
||||
<hbox id="PanelUI-zen-gradient-generator-color-actions">
|
||||
<button id="PanelUI-zen-gradient-generator-color-add" class="subviewbutton">
|
||||
</button>
|
||||
<button id="PanelUI-zen-gradient-generator-color-remove" class="subviewbutton">
|
||||
</button>
|
||||
<button id="PanelUI-zen-gradient-generator-color-add" class="subviewbutton" />
|
||||
<button id="PanelUI-zen-gradient-generator-color-remove" class="subviewbutton" />
|
||||
<button id="PanelUI-zen-gradient-generator-color-toggle-algo" class="subviewbutton" />
|
||||
</hbox>
|
||||
<label data-l10n-id="zen-panel-ui-gradient-click-to-add" id="PanelUI-zen-gradient-generator-color-click-to-add"></label>
|
||||
</hbox>
|
||||
@@ -78,6 +77,27 @@
|
||||
<box data-lightness="20" data-algo="analogous" data-num-dots="3" data-position="118,215"
|
||||
style="--c1: rgb(22, 80, 61); --c2: rgb(26, 60, 76); --c3: rgb(27, 87, 15);" />
|
||||
</hbox>
|
||||
<hbox>
|
||||
# Start from black to white in a span on 8 steps and.
|
||||
# They must all go from the middle to the right side. They must always stay verically centered.
|
||||
# And reach to 180 on the right side, meaning we must divide the width in 16 segments.
|
||||
<box data-type="explicit-black-white" data-algo="float" data-num-dots="1"
|
||||
data-position="180,180" style="background: rgb(0, 0, 0);"></box>
|
||||
<box data-type="explicit-black-white" data-algo="float" data-num-dots="1"
|
||||
data-position="202.5,180" style="background: rgb(32, 32, 32);"></box>
|
||||
<box data-type="explicit-black-white" data-algo="float" data-num-dots="1"
|
||||
data-position="225,180" style="background: rgb(64, 64, 64);"></box>
|
||||
<box data-type="explicit-black-white" data-algo="float" data-num-dots="1"
|
||||
data-position="247.5,180" style="background: rgb(96, 96, 96);"></box>
|
||||
<box data-type="explicit-black-white" data-algo="float" data-num-dots="1"
|
||||
data-position="270,180" style="background: rgb(128, 128, 128);"></box>
|
||||
<box data-type="explicit-black-white" data-algo="float" data-num-dots="1"
|
||||
data-position="292.5,180" style="background: rgb(160, 160, 160);"></box>
|
||||
<box data-type="explicit-black-white" data-algo="float" data-num-dots="1"
|
||||
data-position="315,180" style="background: rgb(192, 192, 192);"></box>
|
||||
<box data-type="explicit-black-white" data-algo="float" data-num-dots="1"
|
||||
data-position="337.5,180" style="background: rgb(224, 224, 224);"></box>
|
||||
</hbox>
|
||||
</hbox>
|
||||
<toolbarbutton id="PanelUI-zen-gradient-generator-color-page-right" class="toolbarbutton-1" />
|
||||
</hbox>
|
||||
|
||||
@@ -59,3 +59,8 @@
|
||||
<menuseparator />
|
||||
<menuitem id="context_zenOpenSiteSettings" data-l10n-id="zen-site-data-site-settings"/>
|
||||
</menupopup>
|
||||
|
||||
<menupopup id="zenMoveTabsToSyncedWorkspacePopup">
|
||||
# Popup to move tabs to a synced workspace.
|
||||
# This would be automatically populated with the list of available synced workspaces.
|
||||
</menupopup>
|
||||
|
||||
@@ -8,9 +8,7 @@
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-sets.js"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspacesSync.mjs"></script>
|
||||
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenKeyboardShortcuts.mjs"></script>
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenHasPolyfill.mjs"></script>
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenSessionStore.mjs"></script>
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenWorkspaces.mjs"></script>
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenWorkspace.mjs"></script>
|
||||
<script type="module" src="chrome://browser/content/zen-components/ZenWorkspaceIcons.mjs"></script>
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs
|
||||
index f1cabb13ca4f86a2bafc1d93b7f882218a108eb2..2389b1addf24d17bd41fca65cfeb6f944479076d 100644
|
||||
index 5dcbb1705625746afd7c57b7a6044c4fa2f00afd..c0872057ec65fe8ebdb2f81e47198dec5d6f0faf 100644
|
||||
--- a/browser/components/BrowserGlue.sys.mjs
|
||||
+++ b/browser/components/BrowserGlue.sys.mjs
|
||||
@@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/aboutlogins/content/aboutLogins.html b/browser/components/aboutlogins/content/aboutLogins.html
|
||||
index a2b9a3c3bd60b7c679fc4babf2cc085f79ba84f5..3acd8da43d31cf8e9eb25d74421f522fdbd41094 100644
|
||||
index ca69defe40c57704ab6ec331ce11c95a98b03e8f..bc5be4555adbe3389bceee0f01730ee57f1e69ef 100644
|
||||
--- a/browser/components/aboutlogins/content/aboutLogins.html
|
||||
+++ b/browser/components/aboutlogins/content/aboutLogins.html
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/aboutlogins/content/components/login-list.css b/browser/components/aboutlogins/content/components/login-list.css
|
||||
index 3c766eaa80c00ef145168f7a2ceced95ce94295e..db7a7da03c8346f97b472b8e561fec79c1036337 100644
|
||||
index e8d2077ca425d9a2b924aa6ac6ba8ada36b76615..95a8ab3dcff832f16068b6739526e8e29f0b4e26 100644
|
||||
--- a/browser/components/aboutlogins/content/components/login-list.css
|
||||
+++ b/browser/components/aboutlogins/content/components/login-list.css
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||
index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aab438565f 100644
|
||||
index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b46db12e2 100644
|
||||
--- a/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||
@@ -14,6 +14,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||
@@ -68,7 +68,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa
|
||||
]);
|
||||
if (AppConstants.platform != "macosx") {
|
||||
toolbars.add(CustomizableUI.AREA_MENUBAR);
|
||||
@@ -1250,6 +1242,9 @@ var CustomizableUIInternal = {
|
||||
@@ -1242,6 +1234,9 @@ var CustomizableUIInternal = {
|
||||
placements = gPlacements.get(area);
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa
|
||||
// For toolbars that need it, mark as dirty.
|
||||
let defaultPlacements = areaProperties.get("defaultPlacements");
|
||||
if (
|
||||
@@ -1757,7 +1752,7 @@ var CustomizableUIInternal = {
|
||||
@@ -1749,7 +1744,7 @@ var CustomizableUIInternal = {
|
||||
lazy.log.info(
|
||||
"Widget " + aWidgetId + " not found, unable to remove from " + aArea
|
||||
);
|
||||
@@ -87,7 +87,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa
|
||||
}
|
||||
|
||||
this.notifyDOMChange(widgetNode, null, container, true, () => {
|
||||
@@ -1767,7 +1762,7 @@ var CustomizableUIInternal = {
|
||||
@@ -1759,7 +1754,7 @@ var CustomizableUIInternal = {
|
||||
// We also need to remove the panel context menu if it's there:
|
||||
this.ensureButtonContextMenu(widgetNode);
|
||||
if (gPalette.has(aWidgetId) || this.isSpecialWidget(aWidgetId)) {
|
||||
@@ -96,7 +96,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa
|
||||
} else {
|
||||
window.gNavToolbox.palette.appendChild(widgetNode);
|
||||
}
|
||||
@@ -1935,16 +1930,16 @@ var CustomizableUIInternal = {
|
||||
@@ -1927,16 +1922,16 @@ var CustomizableUIInternal = {
|
||||
elem.setAttribute("skipintoolbarset", "true");
|
||||
}
|
||||
}
|
||||
@@ -116,7 +116,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa
|
||||
// Handle initial state of vertical tabs.
|
||||
if (isVerticalTabs) {
|
||||
// Show the vertical tabs toolbar
|
||||
@@ -2186,6 +2181,10 @@ var CustomizableUIInternal = {
|
||||
@@ -2178,6 +2173,10 @@ var CustomizableUIInternal = {
|
||||
* The identifier string of the area that aNode is being inserted into.
|
||||
*/
|
||||
insertWidgetBefore(aNode, aNextNode, aContainer, aAreaId) {
|
||||
@@ -127,7 +127,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa
|
||||
this.notifyDOMChange(aNode, aNextNode, aContainer, false, () => {
|
||||
this.setLocationAttributes(aNode, aAreaId);
|
||||
aContainer.insertBefore(aNode, aNextNode);
|
||||
@@ -4541,7 +4540,7 @@ var CustomizableUIInternal = {
|
||||
@@ -4533,7 +4532,7 @@ var CustomizableUIInternal = {
|
||||
* For all registered areas, builds those areas to reflect the current
|
||||
* placement state of all widgets.
|
||||
*/
|
||||
@@ -136,7 +136,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa
|
||||
for (let [areaId, areaNodes] of gBuildAreas) {
|
||||
let placements = gPlacements.get(areaId);
|
||||
let isFirstChangedToolbar = true;
|
||||
@@ -4552,7 +4551,7 @@ var CustomizableUIInternal = {
|
||||
@@ -4544,7 +4543,7 @@ var CustomizableUIInternal = {
|
||||
if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) {
|
||||
let defaultCollapsed = area.get("defaultCollapsed");
|
||||
let win = areaNode.ownerGlobal;
|
||||
@@ -145,7 +145,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa
|
||||
win.setToolbarVisibility(
|
||||
areaNode,
|
||||
typeof defaultCollapsed == "string"
|
||||
@@ -5843,6 +5842,7 @@ export var CustomizableUI = {
|
||||
@@ -5835,6 +5834,7 @@ export var CustomizableUI = {
|
||||
unregisterArea(aName, aDestroyPlacements) {
|
||||
CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements);
|
||||
},
|
||||
@@ -153,7 +153,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa
|
||||
/**
|
||||
* Add a widget to an area.
|
||||
* If the area to which you try to add is not known to CustomizableUI,
|
||||
@@ -7866,7 +7866,7 @@ class OverflowableToolbar {
|
||||
@@ -7858,7 +7858,7 @@ class OverflowableToolbar {
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
@@ -162,7 +162,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa
|
||||
if (child != aExceptChild) {
|
||||
sum += getInlineSize(child);
|
||||
}
|
||||
@@ -7890,11 +7890,11 @@ class OverflowableToolbar {
|
||||
@@ -7882,11 +7882,11 @@ class OverflowableToolbar {
|
||||
parseFloat(style.paddingLeft) -
|
||||
parseFloat(style.paddingRight) -
|
||||
toolbarChildrenWidth;
|
||||
@@ -176,7 +176,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa
|
||||
});
|
||||
|
||||
lazy.log.debug(
|
||||
@@ -7909,7 +7909,14 @@ class OverflowableToolbar {
|
||||
@@ -7901,7 +7901,14 @@ class OverflowableToolbar {
|
||||
Math.max(targetWidth, targetChildrenWidth)
|
||||
);
|
||||
totalAvailWidth = Math.ceil(totalAvailWidth);
|
||||
@@ -192,7 +192,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa
|
||||
return { isOverflowing, targetContentWidth, totalAvailWidth };
|
||||
}
|
||||
|
||||
@@ -7970,7 +7977,11 @@ class OverflowableToolbar {
|
||||
@@ -7962,7 +7969,11 @@ class OverflowableToolbar {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -205,7 +205,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa
|
||||
lazy.log.debug(
|
||||
`Need ${minSize} but width is ${totalAvailWidth} so bailing`
|
||||
);
|
||||
@@ -8003,7 +8014,7 @@ class OverflowableToolbar {
|
||||
@@ -7995,7 +8006,7 @@ class OverflowableToolbar {
|
||||
}
|
||||
}
|
||||
if (!inserted) {
|
||||
@@ -214,7 +214,7 @@ index d9a059f608779fea7cd8c595a432f6fe95183e0c..c359e5115b315dbb4b14e07ab34526aa
|
||||
}
|
||||
child.removeAttribute("cui-anchorid");
|
||||
child.removeAttribute("overflowedItem");
|
||||
@@ -8348,7 +8359,7 @@ class OverflowableToolbar {
|
||||
@@ -8340,7 +8351,7 @@ class OverflowableToolbar {
|
||||
break;
|
||||
}
|
||||
case "mousedown": {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/customizableui/CustomizeMode.sys.mjs b/browser/components/customizableui/CustomizeMode.sys.mjs
|
||||
index fd3c54a1d80f5800ffd2dcaaf594eed4bd2d300c..3178bd28affd8bd2e18c347fde6c3ec00068710c 100644
|
||||
index 52e93e9d9d77f6e410d72bee707fccf26f728004..1142f096e1221213195453d60507ba1bd2f7aed9 100644
|
||||
--- a/browser/components/customizableui/CustomizeMode.sys.mjs
|
||||
+++ b/browser/components/customizableui/CustomizeMode.sys.mjs
|
||||
@@ -503,7 +503,7 @@ export class CustomizeMode {
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
diff --git a/browser/components/customizableui/ToolbarContextMenu.sys.mjs b/browser/components/customizableui/ToolbarContextMenu.sys.mjs
|
||||
index 95621ae202378fb1ebceca5623a98b790b9eb5ff..835b831fb4f005ae4be72ce0953ac9254e6b4891 100644
|
||||
index 5be4e8ea7867e93bda2cd3eb49d966ebd73dc786..650d0008e755583392e07f35bd8e541dff7c43c4 100644
|
||||
--- a/browser/components/customizableui/ToolbarContextMenu.sys.mjs
|
||||
+++ b/browser/components/customizableui/ToolbarContextMenu.sys.mjs
|
||||
@@ -242,9 +242,7 @@ export var ToolbarContextMenu = {
|
||||
@@ -246,10 +246,7 @@ export var ToolbarContextMenu = {
|
||||
// Show/hide sidebar and vertical tabs menu items
|
||||
let sidebarRevampEnabled = Services.prefs.getBoolPref("sidebar.revamp");
|
||||
let showSidebarActions =
|
||||
- ["tabbrowser-tabs", "sidebar-button"].includes(toolbarItem?.id) ||
|
||||
- toolbarItem?.localName == "toolbarspring" ||
|
||||
- isTitlebarSpacer;
|
||||
- isTitlebarSpacer ||
|
||||
- isMenuBarSpacer;
|
||||
+ false;
|
||||
|
||||
let toggleVerticalTabsItem = document.getElementById(
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/places/PlacesUIUtils.sys.mjs b/browser/components/places/PlacesUIUtils.sys.mjs
|
||||
index 86cc499f9b959ef87ab57fc4195e0c65f25e8c7c..a928ea83b9f4d0133238e744d2fb91318d36d4de 100644
|
||||
index 615efa4238a3c0084354383a128e0dd8712c720e..29e9dbe7039ba3dc1413da45908ca8418103f6e6 100644
|
||||
--- a/browser/components/places/PlacesUIUtils.sys.mjs
|
||||
+++ b/browser/components/places/PlacesUIUtils.sys.mjs
|
||||
@@ -60,6 +60,7 @@ class BookmarkState {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn
|
||||
index 65efb0666785cc79e58015e19ec55216bf4ec9c4..95941c52ffd4c9ee36f584413fb96d59721113db 100644
|
||||
index 7c5f6e9053f119a790f83a68c75ee11a6c172d98..cb0e1386318e8a8df24dfbbf8430d0a09fe07d16 100644
|
||||
--- a/browser/components/preferences/jar.mn
|
||||
+++ b/browser/components/preferences/jar.mn
|
||||
@@ -33,3 +33,5 @@ browser.jar:
|
||||
content/browser/preferences/widgets/setting-pane.mjs (widgets/setting-pane/setting-pane.mjs)
|
||||
@@ -37,3 +37,5 @@ browser.jar:
|
||||
content/browser/preferences/widgets/security-privacy-card.mjs (widgets/security-privacy/security-privacy-card/security-privacy-card.mjs)
|
||||
content/browser/preferences/widgets/security-privacy-card.css (widgets/security-privacy/security-privacy-card/security-privacy-card.css)
|
||||
content/browser/preferences/widgets/sync-device-name.mjs (widgets/sync-device-name/sync-device-name.mjs)
|
||||
+
|
||||
+ content/browser/preferences/zen-settings.js
|
||||
\ No newline at end of file
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml
|
||||
index ff577c035ff6128f7ae948bc810082c92b3a624c..40f94fff53c63bdff28eaa68f9b0736d53c5b4f8 100644
|
||||
index bfddd91e6b524f2ebced985f5d12a4963e5c6075..7e80c0a293aae6356e53d9c9760017290e97ffa0 100644
|
||||
--- a/browser/components/preferences/main.inc.xhtml
|
||||
+++ b/browser/components/preferences/main.inc.xhtml
|
||||
@@ -141,7 +141,8 @@
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
|
||||
index 46283d3eacfea0f419afa3bdfd2a51e411502a20..4fe229706eb0145a21042b8b3cca323682e89e76 100644
|
||||
index a184086f10d6a919c8125ab5d7728319256b3b73..7c826000ccdc8a55a12a08bdc2c547d886e5610c 100644
|
||||
--- a/browser/components/preferences/main.js
|
||||
+++ b/browser/components/preferences/main.js
|
||||
@@ -1117,6 +1117,11 @@ let SETTINGS_CONFIG = {
|
||||
@@ -14,7 +14,7 @@ index 46283d3eacfea0f419afa3bdfd2a51e411502a20..4fe229706eb0145a21042b8b3cca3236
|
||||
{
|
||||
id: "windowsLaunchOnLogin",
|
||||
l10nId: "windows-launch-on-login",
|
||||
@@ -1611,7 +1616,7 @@ function getBundleForLocales(newLocales) {
|
||||
@@ -1700,7 +1705,7 @@ function getBundleForLocales(newLocales) {
|
||||
])
|
||||
);
|
||||
return new Localization(
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
|
||||
index c949c1800cb4c200c273c4019a61553b0e236994..0846ab1a348d3c5904e967aeb36eb846ba3cffa9 100644
|
||||
index a0e16b375f0ad7ef58bf68d7574453ef37d4557f..2d5b5a0715b5ed8ebe592eebea0219a6cde17b52 100644
|
||||
--- a/browser/components/preferences/preferences.js
|
||||
+++ b/browser/components/preferences/preferences.js
|
||||
@@ -117,6 +117,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
|
||||
@@ -118,6 +118,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
|
||||
styleSheets: [
|
||||
"chrome://browser/skin/preferences/dialog.css",
|
||||
"chrome://browser/skin/preferences/preferences.css",
|
||||
@@ -10,7 +10,7 @@ index c949c1800cb4c200c273c4019a61553b0e236994..0846ab1a348d3c5904e967aeb36eb846
|
||||
],
|
||||
resizeCallback: async ({ title, frame }) => {
|
||||
// Search within main document and highlight matched keyword.
|
||||
@@ -224,6 +225,10 @@ function init_all() {
|
||||
@@ -225,6 +226,10 @@ function init_all() {
|
||||
register_module("paneSearch", gSearchPane);
|
||||
register_module("panePrivacy", gPrivacyPane);
|
||||
register_module("paneContainers", gContainersPane);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
|
||||
index 4500e3a3a7d54bd7647cd09ab0e11df782fb7a69..9506e860966e974b377b3e2e71c91f9d2c4a0c92 100644
|
||||
index 993554d64efa6ce39fbcc01d4676a69199e158ff..e69aec388162997ef7cb93481cfedb9d102b4fe0 100644
|
||||
--- a/browser/components/preferences/preferences.xhtml
|
||||
+++ b/browser/components/preferences/preferences.xhtml
|
||||
@@ -45,6 +45,8 @@
|
||||
@@ -11,7 +11,7 @@ index 4500e3a3a7d54bd7647cd09ab0e11df782fb7a69..9506e860966e974b377b3e2e71c91f9d
|
||||
<link rel="localization" href="branding/brand.ftl"/>
|
||||
<link rel="localization" href="browser/browser.ftl"/>
|
||||
<!-- Used by fontbuilder.js -->
|
||||
@@ -109,6 +111,11 @@
|
||||
@@ -113,6 +115,11 @@
|
||||
<hbox flex="1">
|
||||
|
||||
<vbox class="navigation">
|
||||
@@ -23,7 +23,7 @@ index 4500e3a3a7d54bd7647cd09ab0e11df782fb7a69..9506e860966e974b377b3e2e71c91f9d
|
||||
<!-- category list -->
|
||||
<richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label">
|
||||
<richlistitem id="category-general"
|
||||
@@ -121,6 +128,50 @@
|
||||
@@ -125,6 +132,50 @@
|
||||
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label>
|
||||
</richlistitem>
|
||||
|
||||
@@ -74,7 +74,7 @@ index 4500e3a3a7d54bd7647cd09ab0e11df782fb7a69..9506e860966e974b377b3e2e71c91f9d
|
||||
<richlistitem id="category-home"
|
||||
class="category"
|
||||
value="paneHome"
|
||||
@@ -232,11 +283,6 @@
|
||||
@@ -236,11 +287,6 @@
|
||||
<html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/>
|
||||
</hbox>
|
||||
</hbox>
|
||||
@@ -86,7 +86,7 @@ index 4500e3a3a7d54bd7647cd09ab0e11df782fb7a69..9506e860966e974b377b3e2e71c91f9d
|
||||
</hbox>
|
||||
</hbox>
|
||||
<vbox id="mainPrefPane">
|
||||
@@ -250,6 +296,10 @@
|
||||
@@ -254,6 +300,10 @@
|
||||
#include sync.inc.xhtml
|
||||
#include experimental.inc.xhtml
|
||||
#include moreFromMozilla.inc.xhtml
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/preferences/sync.inc.xhtml b/browser/components/preferences/sync.inc.xhtml
|
||||
index 31b95644f820eda3267d3b52913ed0845abc1c80..1c8869418f7c88ed33601860dafd2c4eb0d5731f 100644
|
||||
index 4ecdbdb129577165ed0df619577327f7610e138f..761a4d4f26a21ba555b7af180e8a6030615db500 100644
|
||||
--- a/browser/components/preferences/sync.inc.xhtml
|
||||
+++ b/browser/components/preferences/sync.inc.xhtml
|
||||
@@ -223,6 +223,10 @@
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/search/SearchOneOffs.sys.mjs b/browser/components/search/SearchOneOffs.sys.mjs
|
||||
index 3930862215a667e223f1bf6959dcf1c08421b37d..68d767b6d8490a374973eb86a032a6386879fd93 100644
|
||||
index 3e5b29bc0a740df503e69f811ef01de1d6f0340a..b1bcdfc8c1bba506370f1a05fb31630c64bbd6d3 100644
|
||||
--- a/browser/components/search/SearchOneOffs.sys.mjs
|
||||
+++ b/browser/components/search/SearchOneOffs.sys.mjs
|
||||
@@ -466,7 +466,7 @@ export class SearchOneOffs {
|
||||
@@ -473,7 +473,7 @@ export class SearchOneOffs {
|
||||
// For the search-bar, always show the one-off buttons where there is an
|
||||
// option to add an engine.
|
||||
let addEngineNeeded = isSearchBar && addEngines.length;
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
diff --git a/browser/components/sessionstore/SessionFile.sys.mjs b/browser/components/sessionstore/SessionFile.sys.mjs
|
||||
index 31140cb8be3b529a0952ca8dc55165690b0e2120..605c9e0aa84da0a2d3171a0573e8cd95e27bd0c4 100644
|
||||
--- a/browser/components/sessionstore/SessionFile.sys.mjs
|
||||
+++ b/browser/components/sessionstore/SessionFile.sys.mjs
|
||||
@@ -22,6 +22,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||
RunState: "resource:///modules/sessionstore/RunState.sys.mjs",
|
||||
SessionStore: "resource:///modules/sessionstore/SessionStore.sys.mjs",
|
||||
SessionWriter: "resource:///modules/sessionstore/SessionWriter.sys.mjs",
|
||||
+ ZenSessionStore: "resource:///modules/zen/ZenSessionManager.sys.mjs",
|
||||
});
|
||||
|
||||
const PREF_UPGRADE_BACKUP = "browser.sessionstore.upgradeBackup.latestBuildID";
|
||||
@@ -380,7 +381,7 @@ var SessionFileInternal = {
|
||||
this._readOrigin = result.origin;
|
||||
|
||||
result.noFilesFound = noFilesFound;
|
||||
-
|
||||
+ await lazy.ZenSessionStore.readFile();
|
||||
return result;
|
||||
},
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
diff --git a/browser/components/sessionstore/SessionSaver.sys.mjs b/browser/components/sessionstore/SessionSaver.sys.mjs
|
||||
index 9141793550f7c7ff6aa63d4c85bf571b4499e2d0..f00314ebf75ac826e1c9cca8af264ff8aae106c0 100644
|
||||
--- a/browser/components/sessionstore/SessionSaver.sys.mjs
|
||||
+++ b/browser/components/sessionstore/SessionSaver.sys.mjs
|
||||
@@ -20,6 +20,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||
SessionFile: "resource:///modules/sessionstore/SessionFile.sys.mjs",
|
||||
SessionStore: "resource:///modules/sessionstore/SessionStore.sys.mjs",
|
||||
sessionStoreLogger: "resource:///modules/sessionstore/SessionLogger.sys.mjs",
|
||||
+ ZenSessionStore: "resource:///modules/zen/ZenSessionManager.sys.mjs",
|
||||
});
|
||||
|
||||
/*
|
||||
@@ -305,6 +306,7 @@ var SessionSaverInternal = {
|
||||
this._maybeClearCookiesAndStorage(state);
|
||||
|
||||
Glean.sessionRestore.collectData.stopAndAccumulate(timerId);
|
||||
+ lazy.ZenSessionStore.saveState(state);
|
||||
return this._writeState(state);
|
||||
},
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
diff --git a/browser/components/sessionstore/SessionStartup.sys.mjs b/browser/components/sessionstore/SessionStartup.sys.mjs
|
||||
index be23213ae9ec7e59358a17276c6c3764d38d9996..ca5a8ccc916ceeab5140f1278d15233cefbe5815 100644
|
||||
--- a/browser/components/sessionstore/SessionStartup.sys.mjs
|
||||
+++ b/browser/components/sessionstore/SessionStartup.sys.mjs
|
||||
@@ -40,6 +40,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||
StartupPerformance:
|
||||
"resource:///modules/sessionstore/StartupPerformance.sys.mjs",
|
||||
sessionStoreLogger: "resource:///modules/sessionstore/SessionLogger.sys.mjs",
|
||||
+ ZenSessionStore: "resource:///modules/zen/ZenSessionManager.sys.mjs",
|
||||
});
|
||||
|
||||
const STATE_RUNNING_STR = "running";
|
||||
@@ -179,6 +180,8 @@ export var SessionStartup = {
|
||||
this._initialState = parsed;
|
||||
}
|
||||
|
||||
+ lazy.ZenSessionStore.onFileRead(this._initialState);
|
||||
+
|
||||
if (this._initialState == null) {
|
||||
// No valid session found.
|
||||
this._sessionType = this.NO_SESSION;
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0eeba2381c 100644
|
||||
index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..e1d95e97819718d70fab23850a8810dd216db7a8 100644
|
||||
--- a/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
+++ b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
@@ -127,6 +127,8 @@ const TAB_EVENTS = [
|
||||
@@ -11,7 +11,15 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
];
|
||||
|
||||
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||
@@ -1911,6 +1913,8 @@ var SessionStoreInternal = {
|
||||
@@ -196,6 +198,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||
TabStateCache: "resource:///modules/sessionstore/TabStateCache.sys.mjs",
|
||||
TabStateFlusher: "resource:///modules/sessionstore/TabStateFlusher.sys.mjs",
|
||||
setTimeout: "resource://gre/modules/Timer.sys.mjs",
|
||||
+ ZenSessionStore: "resource:///modules/zen/ZenSessionManager.sys.mjs",
|
||||
});
|
||||
|
||||
ChromeUtils.defineLazyGetter(lazy, "blankURI", () => {
|
||||
@@ -1911,6 +1914,8 @@ var SessionStoreInternal = {
|
||||
case "TabPinned":
|
||||
case "TabUnpinned":
|
||||
case "SwapDocShells":
|
||||
@@ -20,7 +28,18 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
this.saveStateDelayed(win);
|
||||
break;
|
||||
case "TabGroupCreate":
|
||||
@@ -2151,7 +2155,6 @@ var SessionStoreInternal = {
|
||||
@@ -2020,6 +2025,10 @@ var SessionStoreInternal = {
|
||||
this._windows[aWindow.__SSi].isTaskbarTab = true;
|
||||
}
|
||||
|
||||
+ if (aWindow.document.documentElement.hasAttribute("zen-unsynced-window")) {
|
||||
+ this._windows[aWindow.__SSi].isZenUnsynced = true;
|
||||
+ }
|
||||
+
|
||||
let tabbrowser = aWindow.gBrowser;
|
||||
|
||||
// add tab change listeners to all already existing tabs
|
||||
@@ -2151,7 +2160,6 @@ var SessionStoreInternal = {
|
||||
if (closedWindowState) {
|
||||
let newWindowState;
|
||||
if (
|
||||
@@ -28,7 +47,23 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
!lazy.SessionStartup.willRestore()
|
||||
) {
|
||||
// We want to split the window up into pinned tabs and unpinned tabs.
|
||||
@@ -2384,11 +2387,9 @@ var SessionStoreInternal = {
|
||||
@@ -2215,6 +2223,15 @@ var SessionStoreInternal = {
|
||||
});
|
||||
this._shouldRestoreLastSession = false;
|
||||
}
|
||||
+ else if (!aInitialState && isRegularWindow) {
|
||||
+ let windowPromises = [];
|
||||
+ for (let window of this._browserWindows) {
|
||||
+ windowPromises.push(lazy.TabStateFlusher.flushWindow(window));
|
||||
+ }
|
||||
+ Promise.all(windowPromises).finally(() => {
|
||||
+ lazy.ZenSessionStore.restoreNewWindow(aWindow, this);
|
||||
+ });
|
||||
+ }
|
||||
|
||||
if (this._restoreLastWindow && aWindow.toolbar.visible) {
|
||||
// always reset (if not a popup window)
|
||||
@@ -2384,11 +2401,9 @@ var SessionStoreInternal = {
|
||||
tabbrowser.selectedTab.label;
|
||||
}
|
||||
|
||||
@@ -40,7 +75,25 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
|
||||
// Store the window's close date to figure out when each individual tab
|
||||
// was closed. This timestamp should allow re-arranging data based on how
|
||||
@@ -3373,7 +3374,7 @@ var SessionStoreInternal = {
|
||||
@@ -2465,7 +2480,7 @@ var SessionStoreInternal = {
|
||||
// 2) Flush the window.
|
||||
// 3) When the flush is complete, revisit our decision to store the window
|
||||
// in _closedWindows, and add/remove as necessary.
|
||||
- if (!winData.isPrivate && !winData.isTaskbarTab) {
|
||||
+ if (!winData.isPrivate && !winData.isTaskbarTab && !winData.isZenUnsynced) {
|
||||
this.maybeSaveClosedWindow(winData, isLastWindow);
|
||||
}
|
||||
|
||||
@@ -2486,7 +2501,7 @@ var SessionStoreInternal = {
|
||||
|
||||
// Save non-private windows if they have at
|
||||
// least one saveable tab or are the last window.
|
||||
- if (!winData.isPrivate && !winData.isTaskbarTab) {
|
||||
+ if (!winData.isPrivate && !winData.isTaskbarTab && !winData.isZenUnsynced) {
|
||||
this.maybeSaveClosedWindow(winData, isLastWindow);
|
||||
|
||||
if (!isLastWindow && winData.closedId > -1) {
|
||||
@@ -3373,7 +3388,7 @@ var SessionStoreInternal = {
|
||||
if (!isPrivateWindow && tabState.isPrivate) {
|
||||
return;
|
||||
}
|
||||
@@ -49,12 +102,12 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -4089,6 +4090,12 @@ var SessionStoreInternal = {
|
||||
@@ -4089,6 +4104,12 @@ var SessionStoreInternal = {
|
||||
Math.min(tabState.index, tabState.entries.length)
|
||||
);
|
||||
tabState.pinned = false;
|
||||
+ tabState.zenEssential = false;
|
||||
+ tabState.zenPinnedId = null;
|
||||
+ tabState.zenSyncId = null;
|
||||
+ tabState.zenIsGlance = false;
|
||||
+ tabState.zenGlanceId = null;
|
||||
+ tabState.zenHasStaticLabel = false;
|
||||
@@ -62,7 +115,7 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
|
||||
if (inBackground === false) {
|
||||
aWindow.gBrowser.selectedTab = newTab;
|
||||
@@ -4525,6 +4532,7 @@ var SessionStoreInternal = {
|
||||
@@ -4525,6 +4546,7 @@ var SessionStoreInternal = {
|
||||
// Append the tab if we're opening into a different window,
|
||||
tabIndex: aSource == aTargetWindow ? pos : Infinity,
|
||||
pinned: state.pinned,
|
||||
@@ -70,7 +123,7 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
userContextId: state.userContextId,
|
||||
skipLoad: true,
|
||||
preferredRemoteType,
|
||||
@@ -5374,7 +5382,7 @@ var SessionStoreInternal = {
|
||||
@@ -5374,7 +5396,7 @@ var SessionStoreInternal = {
|
||||
|
||||
for (let i = tabbrowser.pinnedTabCount; i < tabbrowser.tabs.length; i++) {
|
||||
let tab = tabbrowser.tabs[i];
|
||||
@@ -79,7 +132,7 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
removableTabs.push(tab);
|
||||
}
|
||||
}
|
||||
@@ -5434,7 +5442,7 @@ var SessionStoreInternal = {
|
||||
@@ -5434,7 +5456,7 @@ var SessionStoreInternal = {
|
||||
}
|
||||
|
||||
let workspaceID = aWindow.getWorkspaceID();
|
||||
@@ -88,7 +141,16 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
winData.workspaceID = workspaceID;
|
||||
}
|
||||
},
|
||||
@@ -5625,11 +5633,12 @@ var SessionStoreInternal = {
|
||||
@@ -5483,7 +5505,7 @@ var SessionStoreInternal = {
|
||||
|
||||
// collect the data for all windows
|
||||
for (ix in this._windows) {
|
||||
- if (this._windows[ix]._restoring || this._windows[ix].isTaskbarTab) {
|
||||
+ if (this._windows[ix]._restoring || this._windows[ix].isTaskbarTab || this._windows[ix].isZenUnsynced) {
|
||||
// window data is still in _statesToRestore
|
||||
continue;
|
||||
}
|
||||
@@ -5625,11 +5647,12 @@ var SessionStoreInternal = {
|
||||
}
|
||||
|
||||
let tabbrowser = aWindow.gBrowser;
|
||||
@@ -102,7 +164,7 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
// update the internal state data for this window
|
||||
for (let tab of tabs) {
|
||||
if (tab == aWindow.FirefoxViewHandler.tab) {
|
||||
@@ -5640,6 +5649,7 @@ var SessionStoreInternal = {
|
||||
@@ -5640,6 +5663,7 @@ var SessionStoreInternal = {
|
||||
tabsData.push(tabData);
|
||||
}
|
||||
|
||||
@@ -110,7 +172,7 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
// update tab group state for this window
|
||||
winData.groups = [];
|
||||
for (let tabGroup of aWindow.gBrowser.tabGroups) {
|
||||
@@ -5652,7 +5662,7 @@ var SessionStoreInternal = {
|
||||
@@ -5652,7 +5676,7 @@ var SessionStoreInternal = {
|
||||
// a window is closed, point to the first item in the tab strip instead (it will never be the Firefox View tab,
|
||||
// since it's only inserted into the tab strip after it's selected).
|
||||
if (aWindow.FirefoxViewHandler.tab?.selected) {
|
||||
@@ -119,7 +181,7 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
winData.title = tabbrowser.tabs[0].label;
|
||||
}
|
||||
winData.selected = selectedIndex;
|
||||
@@ -5764,8 +5774,8 @@ var SessionStoreInternal = {
|
||||
@@ -5765,8 +5789,8 @@ var SessionStoreInternal = {
|
||||
// selectTab represents.
|
||||
let selectTab = 0;
|
||||
if (overwriteTabs) {
|
||||
@@ -130,7 +192,7 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
selectTab = Math.min(selectTab, winData.tabs.length);
|
||||
}
|
||||
|
||||
@@ -5808,6 +5818,8 @@ var SessionStoreInternal = {
|
||||
@@ -5809,6 +5833,8 @@ var SessionStoreInternal = {
|
||||
winData.tabs,
|
||||
winData.groups ?? []
|
||||
);
|
||||
@@ -139,7 +201,7 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
this._log.debug(
|
||||
`restoreWindow, createTabsForSessionRestore returned ${tabs.length} tabs`
|
||||
);
|
||||
@@ -6371,6 +6383,25 @@ var SessionStoreInternal = {
|
||||
@@ -6372,6 +6398,25 @@ var SessionStoreInternal = {
|
||||
|
||||
// Most of tabData has been restored, now continue with restoring
|
||||
// attributes that may trigger external events.
|
||||
@@ -153,8 +215,8 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
+ if (tabData.zenHasStaticLabel) {
|
||||
+ tab.setAttribute("zen-has-static-label", "true");
|
||||
+ }
|
||||
+ if (tabData.zenPinnedId) {
|
||||
+ tab.setAttribute("zen-pin-id", tabData.zenPinnedId);
|
||||
+ if (tabData.zenSyncId) {
|
||||
+ tab.setAttribute("id", tabData.zenSyncId);
|
||||
+ }
|
||||
+ if (tabData.zenDefaultUserContextId) {
|
||||
+ tab.setAttribute("zenDefaultUserContextId", true);
|
||||
@@ -165,7 +227,7 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
|
||||
if (tabData.pinned) {
|
||||
tabbrowser.pinTab(tab);
|
||||
@@ -7289,7 +7320,7 @@ var SessionStoreInternal = {
|
||||
@@ -7290,7 +7335,7 @@ var SessionStoreInternal = {
|
||||
|
||||
let groupsToSave = new Map();
|
||||
for (let tIndex = 0; tIndex < window.tabs.length; ) {
|
||||
@@ -174,3 +236,12 @@ index 1cdbc0f41bf5b55dfbbd850cb618c6d870f7a261..4eac2fed26d779908107ef60f1c2bd0e
|
||||
// Adjust window.selected
|
||||
if (tIndex + 1 < window.selected) {
|
||||
window.selected -= 1;
|
||||
@@ -7305,7 +7350,7 @@ var SessionStoreInternal = {
|
||||
);
|
||||
// We don't want to increment tIndex here.
|
||||
continue;
|
||||
- } else if (window.tabs[tIndex].groupId) {
|
||||
+ } else if (window.tabs[tIndex].groupId && false) {
|
||||
// Convert any open groups into saved groups.
|
||||
let groupStateToSave = window.groups.find(
|
||||
groupState => groupState.id == window.tabs[tIndex].groupId
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs
|
||||
index 82721356d191055bec0d4b0ca49e481221988801..1ea5c394c704da295149443d7794961a12f2060b 100644
|
||||
index 82721356d191055bec0d4b0ca49e481221988801..e1d2c5ca0cbe5431df01f8d6411f88e3325e0ee9 100644
|
||||
--- a/browser/components/sessionstore/TabState.sys.mjs
|
||||
+++ b/browser/components/sessionstore/TabState.sys.mjs
|
||||
@@ -85,7 +85,22 @@ class _TabState {
|
||||
@@ -85,7 +85,23 @@ class _TabState {
|
||||
tabData.groupId = tab.group.id;
|
||||
}
|
||||
|
||||
+ tabData.zenWorkspace = tab.getAttribute("zen-workspace-id");
|
||||
+ tabData.zenPinnedId = tab.getAttribute("zen-pin-id");
|
||||
+ tabData.zenSyncId = tab.getAttribute("id");
|
||||
+ tabData.zenEssential = tab.getAttribute("zen-essential");
|
||||
+ tabData.pinned = tabData.pinned || tabData.zenEssential;
|
||||
+ tabData.zenDefaultUserContextId = tab.getAttribute("zenDefaultUserContextId");
|
||||
@@ -17,6 +17,7 @@ index 82721356d191055bec0d4b0ca49e481221988801..1ea5c394c704da295149443d7794961a
|
||||
+ tabData.zenHasStaticLabel = tab.hasAttribute("zen-has-static-label");
|
||||
+ tabData.zenGlanceId = tab.getAttribute("glance-id");
|
||||
+ tabData.zenIsGlance = tab.hasAttribute("zen-glance-tab");
|
||||
+ tabData._zenIsActiveTab = tab._zenContentsVisible;
|
||||
+
|
||||
tabData.searchMode = tab.ownerGlobal.gURLBar.getSearchMode(browser, true);
|
||||
+ if (tabData.searchMode?.source === tab.ownerGlobal.UrlbarUtils.RESULT_SOURCE.ZEN_ACTIONS) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/TabUnloader.sys.mjs b/browser/components/tabbrowser/TabUnloader.sys.mjs
|
||||
index 0c62cdf29a72a7518cc54c014b5042f9695311eb..d5ac63d5005065863391e415f7072145d3247cad 100644
|
||||
index 2a3fcbe9dfb6328cabba891697990e2467973f6e..22fdaaefa71b3c37cbccbd7ae4db044b1057f1f2 100644
|
||||
--- a/browser/components/tabbrowser/TabUnloader.sys.mjs
|
||||
+++ b/browser/components/tabbrowser/TabUnloader.sys.mjs
|
||||
@@ -52,7 +52,7 @@ let CRITERIA_WEIGHT = 1;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/drag-and-drop.js b/browser/components/tabbrowser/content/drag-and-drop.js
|
||||
index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812307b9a04 100644
|
||||
index 97b931c3c7385a52d20204369fcf6d6999053687..bc49f4f5a90638d725eca016d00f30d9548dce83 100644
|
||||
--- a/browser/components/tabbrowser/content/drag-and-drop.js
|
||||
+++ b/browser/components/tabbrowser/content/drag-and-drop.js
|
||||
@@ -32,6 +32,9 @@
|
||||
@@ -12,7 +12,7 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
if (isTab(element)) {
|
||||
return element;
|
||||
}
|
||||
@@ -118,6 +121,10 @@
|
||||
@@ -112,6 +115,10 @@
|
||||
}
|
||||
|
||||
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
|
||||
@@ -23,9 +23,9 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
if (
|
||||
(dropEffect == "move" || dropEffect == "copy") &&
|
||||
document == draggedTab.ownerDocument &&
|
||||
@@ -272,6 +279,18 @@
|
||||
@@ -266,6 +273,18 @@
|
||||
|
||||
this.#tabDropIndicator.hidden = true;
|
||||
this._tabDropIndicator.hidden = true;
|
||||
event.stopPropagation();
|
||||
+ if (draggedTab?.hasAttribute("zen-has-splitted")) {
|
||||
+ draggedTab.removeAttribute("zen-has-splitted");
|
||||
@@ -42,7 +42,7 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
if (draggedTab && dropEffect == "copy") {
|
||||
let duplicatedDraggedTab;
|
||||
let duplicatedTabs = [];
|
||||
@@ -297,8 +316,9 @@
|
||||
@@ -291,8 +310,9 @@
|
||||
let translateOffsetY = oldTranslateY % tabHeight;
|
||||
let newTranslateX = oldTranslateX - translateOffsetX;
|
||||
let newTranslateY = oldTranslateY - translateOffsetY;
|
||||
@@ -52,21 +52,21 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
|
||||
+ let essential = draggedTab.hasAttribute("zen-essential");
|
||||
|
||||
if (this.#isContainerVerticalPinnedGrid(draggedTab)) {
|
||||
if (this._isContainerVerticalPinnedGrid(draggedTab)) {
|
||||
// Update both translate axis for pinned vertical expanded tabs
|
||||
@@ -314,8 +334,8 @@
|
||||
@@ -308,8 +328,8 @@
|
||||
}
|
||||
} else {
|
||||
let tabs = this.#tabbrowserTabs.ariaFocusableItems.slice(
|
||||
let tabs = this._tabbrowserTabs.ariaFocusableItems.slice(
|
||||
- isPinned ? 0 : numPinned,
|
||||
- isPinned ? numPinned : undefined
|
||||
+ isPinned ? (essential ? 0 : gBrowser._numZenEssentials) : numPinned,
|
||||
+ isPinned ? (essential ? gBrowser._numZenEssentials : numPinned) : undefined
|
||||
);
|
||||
let size = this.#tabbrowserTabs.verticalMode ? "height" : "width";
|
||||
let screenAxis = this.#tabbrowserTabs.verticalMode
|
||||
@@ -368,11 +388,13 @@
|
||||
this.#dragToPinPromoCard,
|
||||
let size = this._tabbrowserTabs.verticalMode ? "height" : "width";
|
||||
let screenAxis = this._tabbrowserTabs.verticalMode
|
||||
@@ -362,11 +382,13 @@
|
||||
this._dragToPinPromoCard,
|
||||
];
|
||||
let shouldPin =
|
||||
+ false &&
|
||||
@@ -78,16 +78,16 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
+ false &&
|
||||
isTab(draggedTab) &&
|
||||
draggedTab.pinned &&
|
||||
this.#tabbrowserTabs.arrowScrollbox.contains(event.target);
|
||||
@@ -390,6 +412,7 @@
|
||||
this._tabbrowserTabs.arrowScrollbox.contains(event.target);
|
||||
@@ -384,6 +406,7 @@
|
||||
(oldTranslateY && oldTranslateY != newTranslateY);
|
||||
} else if (this.#tabbrowserTabs.verticalMode) {
|
||||
} else if (this._tabbrowserTabs.verticalMode) {
|
||||
shouldTranslate &&= oldTranslateY && oldTranslateY != newTranslateY;
|
||||
+ shouldTranslate = false;
|
||||
} else {
|
||||
shouldTranslate &&= oldTranslateX && oldTranslateX != newTranslateX;
|
||||
}
|
||||
@@ -446,7 +469,7 @@
|
||||
@@ -440,7 +463,7 @@
|
||||
item.removeAttribute("tabdrop-samewindow");
|
||||
resolve();
|
||||
};
|
||||
@@ -96,18 +96,18 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
postTransitionCleanup();
|
||||
} else {
|
||||
let onTransitionEnd = transitionendEvent => {
|
||||
@@ -586,6 +609,7 @@
|
||||
@@ -581,6 +604,7 @@
|
||||
|
||||
let nextItem = this.#tabbrowserTabs.ariaFocusableItems[newIndex];
|
||||
let nextItem = this._tabbrowserTabs.ariaFocusableItems[newIndex];
|
||||
let tabGroup = isTab(nextItem) && nextItem.group;
|
||||
+ if (gZenViewSplitter.handleTabDrop(event, urls, replace, inBackground)) return;
|
||||
gBrowser.loadTabs(urls, {
|
||||
inBackground,
|
||||
replace,
|
||||
@@ -623,7 +647,16 @@
|
||||
this.#expandGroupOnDrop(draggedTab);
|
||||
@@ -618,7 +642,16 @@
|
||||
this._expandGroupOnDrop(draggedTab);
|
||||
}
|
||||
this.#resetTabsAfterDrop(draggedTab.ownerDocument);
|
||||
this._resetTabsAfterDrop(draggedTab.ownerDocument);
|
||||
-
|
||||
+ if (!dt.mozUserCancelled && dt.dropEffect == "none" && !this._isCustomizing) {
|
||||
+ const moved = gZenViewSplitter.moveTabToSplitView(event, draggedTab);
|
||||
@@ -122,8 +122,8 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
if (
|
||||
dt.mozUserCancelled ||
|
||||
dt.dropEffect != "none" ||
|
||||
@@ -827,7 +860,10 @@
|
||||
#getDragTarget(event, { ignoreSides = false } = {}) {
|
||||
@@ -822,7 +855,10 @@
|
||||
_getDragTarget(event, { ignoreSides = false } = {}) {
|
||||
let { target } = event;
|
||||
while (target) {
|
||||
- if (isTab(target) || isTabGroupLabel(target)) {
|
||||
@@ -134,7 +134,7 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
break;
|
||||
}
|
||||
target = target.parentNode;
|
||||
@@ -844,14 +880,17 @@
|
||||
@@ -839,14 +875,17 @@
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -144,17 +144,17 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
return target;
|
||||
}
|
||||
|
||||
#isContainerVerticalPinnedGrid(tab) {
|
||||
_isContainerVerticalPinnedGrid(tab) {
|
||||
return (
|
||||
this.#tabbrowserTabs.verticalMode &&
|
||||
this._tabbrowserTabs.verticalMode &&
|
||||
- tab.pinned &&
|
||||
- this.#tabbrowserTabs.hasAttribute("expanded") &&
|
||||
- this._tabbrowserTabs.hasAttribute("expanded") &&
|
||||
+ tab.hasAttribute("zen-essential") &&
|
||||
+ (this.#tabbrowserTabs.hasAttribute("expanded") || document.documentElement.hasAttribute("zen-sidebar-expanded")) &&
|
||||
!this.#tabbrowserTabs.expandOnHover
|
||||
+ (this._tabbrowserTabs.hasAttribute("expanded") || document.documentElement.hasAttribute("zen-sidebar-expanded")) &&
|
||||
!this._tabbrowserTabs.expandOnHover
|
||||
);
|
||||
}
|
||||
@@ -882,7 +921,8 @@
|
||||
@@ -877,7 +916,8 @@
|
||||
isTabGroupLabel(draggedTab) &&
|
||||
draggedTab._dragData?.expandGroupOnDrop
|
||||
) {
|
||||
@@ -164,19 +164,19 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
}
|
||||
}
|
||||
|
||||
@@ -947,10 +987,7 @@
|
||||
if (this.#isContainerVerticalPinnedGrid(tab)) {
|
||||
@@ -942,10 +982,7 @@
|
||||
if (this._isContainerVerticalPinnedGrid(tab)) {
|
||||
// In expanded vertical mode, the max number of pinned tabs per row is dynamic
|
||||
// Set this before adjusting dragged tab's position
|
||||
- let pinnedTabs = this.#tabbrowserTabs.visibleTabs.slice(
|
||||
- let pinnedTabs = this._tabbrowserTabs.visibleTabs.slice(
|
||||
- 0,
|
||||
- gBrowser.pinnedTabCount
|
||||
- );
|
||||
+ let pinnedTabs = this.#tabbrowserTabs.ariaFocusableItems.slice(0, gBrowser._numZenEssentials);
|
||||
+ let pinnedTabs = this._tabbrowserTabs.ariaFocusableItems.slice(0, gBrowser._numZenEssentials);
|
||||
let tabsPerRow = 0;
|
||||
let position = RTL_UI
|
||||
? window.windowUtils.getBoundsWithoutFlushing(
|
||||
@@ -1117,7 +1154,7 @@
|
||||
@@ -1112,7 +1149,7 @@
|
||||
let dropEffect = this.getDropEffectForTabDrag(event);
|
||||
let isMovingInTabStrip = !fromTabList && dropEffect == "move";
|
||||
let collapseTabGroupDuringDrag =
|
||||
@@ -184,17 +184,17 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
+ isMovingInTabStrip && isTabGroupLabel(tab) && (!tab.group.collapsed || tab.group.hasAttribute("has-active"));
|
||||
|
||||
tab._dragData = {
|
||||
offsetX: this.#tabbrowserTabs.verticalMode
|
||||
@@ -1127,7 +1164,7 @@
|
||||
offsetX: this._tabbrowserTabs.verticalMode
|
||||
@@ -1122,7 +1159,7 @@
|
||||
? event.screenY - window.screenY - tabOffset
|
||||
: event.screenY - window.screenY,
|
||||
scrollPos:
|
||||
- this.#tabbrowserTabs.verticalMode && tab.pinned
|
||||
+ this.#tabbrowserTabs.verticalMode && tab.pinned && false
|
||||
? this.#tabbrowserTabs.pinnedTabsContainer.scrollPosition
|
||||
: this.#tabbrowserTabs.arrowScrollbox.scrollPosition,
|
||||
- this._tabbrowserTabs.verticalMode && tab.pinned
|
||||
+ this._tabbrowserTabs.verticalMode && tab.pinned && false
|
||||
? this._tabbrowserTabs.pinnedTabsContainer.scrollPosition
|
||||
: this._tabbrowserTabs.arrowScrollbox.scrollPosition,
|
||||
screenX: event.screenX,
|
||||
@@ -1156,6 +1193,7 @@
|
||||
@@ -1149,6 +1186,7 @@
|
||||
|
||||
if (collapseTabGroupDuringDrag) {
|
||||
tab.group.collapsed = true;
|
||||
@@ -202,10 +202,10 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1174,6 +1212,16 @@
|
||||
when the tab is first selected to be dragged.
|
||||
*/
|
||||
#updateTabStylesOnDrag(tab) {
|
||||
@@ -1173,6 +1211,16 @@
|
||||
if (tabStripItemElement.hasAttribute("dragtarget")) {
|
||||
return;
|
||||
}
|
||||
+ let { movingTabs: zenMovingTabs } = tab._dragData;
|
||||
+ for (let movingTab of zenMovingTabs.slice(zenMovingTabs.findIndex(t => t._tPos == tab._tPos))) {
|
||||
+ if (isTabGroupLabel(tab)) {
|
||||
@@ -218,16 +218,16 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
+ return;
|
||||
let isPinned = tab.pinned;
|
||||
let numPinned = gBrowser.pinnedTabCount;
|
||||
let allTabs = this.#tabbrowserTabs.ariaFocusableItems;
|
||||
let allTabs = this._tabbrowserTabs.ariaFocusableItems;
|
||||
@@ -1624,10 +1672,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
- let tabs = this.#tabbrowserTabs.visibleTabs.slice(
|
||||
- let tabs = this._tabbrowserTabs.visibleTabs.slice(
|
||||
- 0,
|
||||
- gBrowser.pinnedTabCount
|
||||
- );
|
||||
+ let tabs = this.#tabbrowserTabs.ariaFocusableItems.slice(0, gBrowser._numZenEssentials);
|
||||
+ let tabs = this._tabbrowserTabs.ariaFocusableItems.slice(0, gBrowser._numZenEssentials);
|
||||
|
||||
let directionX = screenX > dragData.animLastScreenX;
|
||||
let directionY = screenY > dragData.animLastScreenY;
|
||||
@@ -252,7 +252,7 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
translateY = Math.min(Math.max(translateY, firstBoundY), lastBoundY);
|
||||
|
||||
@@ -1833,13 +1880,18 @@
|
||||
this.#clearDragOverGroupingTimer();
|
||||
this._clearDragOverGroupingTimer();
|
||||
this.#clearPinnedDropIndicatorTimer();
|
||||
|
||||
- let isPinned = draggedTab.pinned;
|
||||
@@ -261,7 +261,7 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
|
||||
+ let essential = draggedTab.hasAttribute("zen-essential");
|
||||
+ const isDraggingFolder = isTabGroupLabel(draggedTab) && draggedTab.group?.isZenFolder;
|
||||
let allTabs = this.#tabbrowserTabs.ariaFocusableItems;
|
||||
let allTabs = this._tabbrowserTabs.ariaFocusableItems;
|
||||
let tabs = allTabs.slice(
|
||||
- isPinned ? 0 : numPinned,
|
||||
- isPinned ? numPinned : undefined
|
||||
@@ -272,15 +272,15 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
+ draggedTab = draggedTab.group.labelElement;
|
||||
+ }
|
||||
|
||||
if (this.#rtlMode) {
|
||||
if (this._rtlMode) {
|
||||
tabs.reverse();
|
||||
@@ -1854,7 +1906,7 @@
|
||||
let translateAxis = this.#tabbrowserTabs.verticalMode
|
||||
let translateAxis = this._tabbrowserTabs.verticalMode
|
||||
? "translateY"
|
||||
: "translateX";
|
||||
- let { width: tabWidth, height: tabHeight } = bounds(draggedTab);
|
||||
+ let { width: tabWidth, height: tabHeight } = bounds(draggedTab.group?.hasAttribute("split-view-group") ? draggedTab.group : draggedTab);
|
||||
let tabSize = this.#tabbrowserTabs.verticalMode ? tabHeight : tabWidth;
|
||||
let tabSize = this._tabbrowserTabs.verticalMode ? tabHeight : tabWidth;
|
||||
let translateX = event.screenX - dragData.screenX;
|
||||
let translateY = event.screenY - dragData.screenY;
|
||||
@@ -1870,6 +1922,12 @@
|
||||
@@ -297,12 +297,12 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
let lastMovingTabScreen = endEdge(lastMovingTab);
|
||||
let firstMovingTabScreen = firstMovingTab[screenAxis];
|
||||
@@ -1884,6 +1942,13 @@
|
||||
let endBound = this.#rtlMode
|
||||
? endEdge(this.#tabbrowserTabs) - lastMovingTabScreen
|
||||
let endBound = this._rtlMode
|
||||
? endEdge(this._tabbrowserTabs) - lastMovingTabScreen
|
||||
: periphery[screenAxis] - 1 - lastMovingTabScreen;
|
||||
+ {
|
||||
+ let firstTab = tabs.at(this.#rtlMode ? -1 : 0);
|
||||
+ let lastTab = tabs.at(this.#rtlMode ? 0 : -1);
|
||||
+ let firstTab = tabs.at(this._rtlMode ? -1 : 0);
|
||||
+ let lastTab = tabs.at(this._rtlMode ? 0 : -1);
|
||||
+ startBound = firstTab[screenAxis] - firstMovingTabScreen;
|
||||
+ endBound = endEdge(lastTab) - lastMovingTabScreen;
|
||||
+ endBound = gZenPinnedTabManager.getLastTabBound(endBound, lastTab, isDraggingFolder);
|
||||
@@ -342,7 +342,7 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
: dropElement.elementIndex < numPinned;
|
||||
- if (isOutOfBounds) {
|
||||
- // Drop after last pinned tab
|
||||
- dropElement = this.#tabbrowserTabs.ariaFocusableItems[numPinned - 1];
|
||||
- dropElement = this._tabbrowserTabs.ariaFocusableItems[numPinned - 1];
|
||||
- dropBefore = false;
|
||||
- }
|
||||
}
|
||||
@@ -351,7 +351,7 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
- gBrowser._tabGroupsEnabled &&
|
||||
- isTab(draggedTab) &&
|
||||
- !isPinned &&
|
||||
- (!numPinned || newDropElementIndex > numPinned)
|
||||
- (!numPinned || newDropElementIndex >= numPinned)
|
||||
- ) {
|
||||
+ if (isTab(draggedTab) || isTabGroupLabel(draggedTab)) {
|
||||
let dragOverGroupingThreshold = 1 - moveOverThreshold;
|
||||
@@ -390,8 +390,8 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
+ colorCode
|
||||
+ ));
|
||||
}
|
||||
this.#setDragOverGroupColor(colorCode);
|
||||
this.#tabbrowserTabs.toggleAttribute(
|
||||
this._setDragOverGroupColor(colorCode);
|
||||
this._tabbrowserTabs.toggleAttribute(
|
||||
@@ -2324,10 +2395,11 @@
|
||||
dragData.dropBefore = dropBefore;
|
||||
dragData.animDropElementIndex = newDropElementIndex;
|
||||
@@ -417,8 +417,8 @@ index c97c661656868bc7faaf7c66c9702eea056aafe1..3a2b4bd1a017697539a3b81432199812
|
||||
this.#setMovingTabMode(false);
|
||||
+ gZenFolders.highlightGroupOnDragOver(null);
|
||||
|
||||
for (let item of this.#tabbrowserTabs.ariaFocusableItems) {
|
||||
this.#resetGroupTarget(item);
|
||||
for (let item of this._tabbrowserTabs.ariaFocusableItems) {
|
||||
this._resetGroupTarget(item);
|
||||
@@ -2457,7 +2531,7 @@
|
||||
tab.style.left = "";
|
||||
tab.style.top = "";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
|
||||
index 4c1a48424316b29d27ae2bc8b64004df41c87bb6..f1ff9bf0947127a8e9115357cedac577b5fad08c 100644
|
||||
index 2dacb325190b6ae42ebeb3e9f0e862dc690ecdca..23b134a8ba674978182415a8bac926f7600f564a 100644
|
||||
--- a/browser/components/tabbrowser/content/tab.js
|
||||
+++ b/browser/components/tabbrowser/content/tab.js
|
||||
@@ -21,6 +21,7 @@
|
||||
@@ -78,7 +78,7 @@ index 4c1a48424316b29d27ae2bc8b64004df41c87bb6..f1ff9bf0947127a8e9115357cedac577
|
||||
}
|
||||
|
||||
get hidden() {
|
||||
@@ -297,7 +310,7 @@
|
||||
@@ -305,7 +318,7 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -87,21 +87,21 @@ index 4c1a48424316b29d27ae2bc8b64004df41c87bb6..f1ff9bf0947127a8e9115357cedac577
|
||||
}
|
||||
|
||||
get lastAccessed() {
|
||||
@@ -374,8 +387,11 @@
|
||||
@@ -382,7 +395,12 @@
|
||||
}
|
||||
|
||||
get group() {
|
||||
- if (this.parentElement?.tagName == "tab-group") {
|
||||
- return this.parentElement;
|
||||
- return this.closest("tab-group");
|
||||
+ if (typeof gBrowser === "undefined") {
|
||||
+ return null;
|
||||
+ }
|
||||
+ if (gBrowser.isTabGroup(this.parentElement?.parentElement)) {
|
||||
+ return this.parentElement.parentElement;
|
||||
}
|
||||
return null;
|
||||
+ }
|
||||
}
|
||||
@@ -470,6 +486,8 @@
|
||||
|
||||
get splitview() {
|
||||
@@ -473,6 +491,8 @@
|
||||
this.style.MozUserFocus = "ignore";
|
||||
} else if (
|
||||
event.target.classList.contains("tab-close-button") ||
|
||||
@@ -110,7 +110,7 @@ index 4c1a48424316b29d27ae2bc8b64004df41c87bb6..f1ff9bf0947127a8e9115357cedac577
|
||||
event.target.classList.contains("tab-icon-overlay") ||
|
||||
event.target.classList.contains("tab-audio-button")
|
||||
) {
|
||||
@@ -524,6 +542,10 @@
|
||||
@@ -527,6 +547,10 @@
|
||||
this.style.MozUserFocus = "";
|
||||
}
|
||||
|
||||
@@ -121,15 +121,7 @@ index 4c1a48424316b29d27ae2bc8b64004df41c87bb6..f1ff9bf0947127a8e9115357cedac577
|
||||
on_click(event) {
|
||||
if (event.button != 0) {
|
||||
return;
|
||||
@@ -572,6 +594,7 @@
|
||||
)
|
||||
);
|
||||
} else {
|
||||
+ gZenPinnedTabManager._removePinnedAttributes(this, true);
|
||||
gBrowser.removeTab(this, {
|
||||
animate: true,
|
||||
triggeringEvent: event,
|
||||
@@ -584,6 +607,14 @@
|
||||
@@ -587,6 +611,14 @@
|
||||
// (see tabbrowser-tabs 'click' handler).
|
||||
gBrowser.tabContainer._blockDblClick = true;
|
||||
}
|
||||
@@ -144,7 +136,7 @@ index 4c1a48424316b29d27ae2bc8b64004df41c87bb6..f1ff9bf0947127a8e9115357cedac577
|
||||
}
|
||||
|
||||
on_dblclick(event) {
|
||||
@@ -607,6 +638,8 @@
|
||||
@@ -610,6 +642,8 @@
|
||||
animate: true,
|
||||
triggeringEvent: event,
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e6923fe5f 100644
|
||||
index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..9a619171c7f1f7ba43c2c661bdad370f83733bf0 100644
|
||||
--- a/browser/components/tabbrowser/content/tabbrowser.js
|
||||
+++ b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
@@ -386,6 +386,7 @@
|
||||
@@ -10,7 +10,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
const browsers = [];
|
||||
if (this.#activeSplitView) {
|
||||
for (const tab of this.#activeSplitView.tabs) {
|
||||
@@ -450,15 +451,64 @@
|
||||
@@ -450,15 +451,66 @@
|
||||
return this.tabContainer.visibleTabs;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
+ return this.#handleTabMove(...args);
|
||||
+ }
|
||||
+
|
||||
+ get zenTabProgressListener() { return TabProgressListener; }
|
||||
+
|
||||
+ get _numVisiblePinTabsWithoutCollapsed() {
|
||||
+ let i = 0;
|
||||
+ for (let item of this.tabContainer.ariaFocusableItems) {
|
||||
@@ -77,7 +79,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
set selectedTab(val) {
|
||||
if (
|
||||
gSharedTabWarning.willShowSharedTabWarning(val) ||
|
||||
@@ -613,6 +663,7 @@
|
||||
@@ -613,6 +665,7 @@
|
||||
this.tabpanels.appendChild(panel);
|
||||
|
||||
let tab = this.tabs[0];
|
||||
@@ -85,7 +87,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
tab.linkedPanel = uniqueId;
|
||||
this._selectedTab = tab;
|
||||
this._selectedBrowser = browser;
|
||||
@@ -898,13 +949,17 @@
|
||||
@@ -898,13 +951,17 @@
|
||||
}
|
||||
|
||||
this.showTab(aTab);
|
||||
@@ -104,7 +106,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
|
||||
aTab.setAttribute("pinned", "true");
|
||||
this._updateTabBarForPinnedTabs();
|
||||
@@ -917,11 +972,15 @@
|
||||
@@ -917,11 +974,15 @@
|
||||
}
|
||||
|
||||
this.#handleTabMove(aTab, () => {
|
||||
@@ -121,7 +123,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
});
|
||||
|
||||
aTab.style.marginInlineStart = "";
|
||||
@@ -1098,6 +1157,8 @@
|
||||
@@ -1098,6 +1159,8 @@
|
||||
|
||||
let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"];
|
||||
|
||||
@@ -130,7 +132,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
if (
|
||||
aIconURL &&
|
||||
!LOCAL_PROTOCOLS.some(protocol => aIconURL.startsWith(protocol))
|
||||
@@ -1107,6 +1168,9 @@
|
||||
@@ -1107,6 +1170,9 @@
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -140,7 +142,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
|
||||
let browser = this.getBrowserForTab(aTab);
|
||||
browser.mIconURL = aIconURL;
|
||||
@@ -1379,7 +1443,6 @@
|
||||
@@ -1379,7 +1445,6 @@
|
||||
|
||||
// Preview mode should not reset the owner
|
||||
if (!this._previewMode && !oldTab.selected) {
|
||||
@@ -148,7 +150,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
}
|
||||
|
||||
let lastRelatedTab = this._lastRelatedTabMap.get(oldTab);
|
||||
@@ -1470,6 +1533,7 @@
|
||||
@@ -1470,6 +1535,7 @@
|
||||
if (!this._previewMode) {
|
||||
newTab.recordTimeFromUnloadToReload();
|
||||
newTab.updateLastAccessed();
|
||||
@@ -156,7 +158,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
oldTab.updateLastAccessed();
|
||||
// if this is the foreground window, update the last-seen timestamps.
|
||||
if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) {
|
||||
@@ -1622,6 +1686,9 @@
|
||||
@@ -1622,6 +1688,9 @@
|
||||
}
|
||||
|
||||
let activeEl = document.activeElement;
|
||||
@@ -166,17 +168,20 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
// If focus is on the old tab, move it to the new tab.
|
||||
if (activeEl == oldTab) {
|
||||
newTab.focus();
|
||||
@@ -1945,7 +2012,8 @@
|
||||
@@ -1945,7 +2014,11 @@
|
||||
}
|
||||
|
||||
_setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) {
|
||||
- if (!aLabel || aLabel.includes("about:reader?")) {
|
||||
+ if (!aTab._zenContentsVisible && !aTab._labelIsInitialTitle) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ gZenPinnedTabManager.onTabLabelChanged(aTab);
|
||||
+ if (!aLabel || aLabel.includes("about:reader?") || aTab.hasAttribute("zen-has-static-label")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2053,7 +2121,7 @@
|
||||
@@ -2053,7 +2126,7 @@
|
||||
newIndex = this.selectedTab._tPos + 1;
|
||||
}
|
||||
|
||||
@@ -185,7 +190,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
if (this.isTabGroupLabel(targetTab)) {
|
||||
throw new Error(
|
||||
"Replacing a tab group label with a tab is not supported"
|
||||
@@ -2328,6 +2396,7 @@
|
||||
@@ -2328,6 +2401,7 @@
|
||||
uriIsAboutBlank,
|
||||
userContextId,
|
||||
skipLoad,
|
||||
@@ -193,7 +198,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
} = {}) {
|
||||
let b = document.createXULElement("browser");
|
||||
// Use the JSM global to create the permanentKey, so that if the
|
||||
@@ -2401,8 +2470,7 @@
|
||||
@@ -2401,8 +2475,7 @@
|
||||
// we use a different attribute name for this?
|
||||
b.setAttribute("name", name);
|
||||
}
|
||||
@@ -203,7 +208,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
b.setAttribute("transparent", "true");
|
||||
}
|
||||
|
||||
@@ -2567,7 +2635,7 @@
|
||||
@@ -2567,7 +2640,7 @@
|
||||
|
||||
let panel = this.getPanel(browser);
|
||||
let uniqueId = this._generateUniquePanelID();
|
||||
@@ -212,7 +217,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
aTab.linkedPanel = uniqueId;
|
||||
|
||||
// Inject the <browser> into the DOM if necessary.
|
||||
@@ -2626,8 +2694,8 @@
|
||||
@@ -2626,8 +2699,8 @@
|
||||
// If we transitioned from one browser to two browsers, we need to set
|
||||
// hasSiblings=false on both the existing browser and the new browser.
|
||||
if (this.tabs.length == 2) {
|
||||
@@ -223,7 +228,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
} else {
|
||||
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
|
||||
}
|
||||
@@ -2814,7 +2882,6 @@
|
||||
@@ -2814,7 +2887,6 @@
|
||||
this.selectedTab = this.addTrustedTab(BROWSER_NEW_TAB_URL, {
|
||||
tabIndex: tab._tPos + 1,
|
||||
userContextId: tab.userContextId,
|
||||
@@ -231,16 +236,17 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
focusUrlBar: true,
|
||||
});
|
||||
resolve(this.selectedBrowser);
|
||||
@@ -2923,6 +2990,8 @@
|
||||
@@ -2923,6 +2995,9 @@
|
||||
schemelessInput,
|
||||
hasValidUserGestureActivation = false,
|
||||
textDirectiveUserActivation = false,
|
||||
+ _forZenEmptyTab,
|
||||
+ essential,
|
||||
+ zenWorkspaceId,
|
||||
} = {}
|
||||
) {
|
||||
// all callers of addTab that pass a params object need to pass
|
||||
@@ -2933,10 +3002,17 @@
|
||||
@@ -2933,10 +3008,17 @@
|
||||
);
|
||||
}
|
||||
|
||||
@@ -258,7 +264,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
// If we're opening a foreground tab, set the owner by default.
|
||||
ownerTab ??= inBackground ? null : this.selectedTab;
|
||||
|
||||
@@ -2944,6 +3020,7 @@
|
||||
@@ -2944,6 +3026,7 @@
|
||||
if (this.selectedTab.owner) {
|
||||
this.selectedTab.owner = null;
|
||||
}
|
||||
@@ -266,14 +272,16 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
|
||||
// Find the tab that opened this one, if any. This is used for
|
||||
// determining positioning, and inherited attributes such as the
|
||||
@@ -2996,6 +3073,19 @@
|
||||
@@ -2996,6 +3079,21 @@
|
||||
noInitialLabel,
|
||||
skipBackgroundNotify,
|
||||
});
|
||||
+ if (hasZenDefaultUserContextId) {
|
||||
+ t.setAttribute("zenDefaultUserContextId", "true");
|
||||
+ }
|
||||
+ if (zenForcedWorkspaceId !== undefined) {
|
||||
+ if (zenWorkspaceId) {
|
||||
+ t.setAttribute("zen-workspace-id", zenWorkspaceId);
|
||||
+ } else if (zenForcedWorkspaceId !== undefined) {
|
||||
+ t.setAttribute("zen-workspace-id", zenForcedWorkspaceId);
|
||||
+ t.setAttribute("change-workspace", "")
|
||||
+ }
|
||||
@@ -286,7 +294,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
if (insertTab) {
|
||||
// Insert the tab into the tab container in the correct position.
|
||||
this.#insertTabAtIndex(t, {
|
||||
@@ -3004,6 +3094,7 @@
|
||||
@@ -3004,6 +3102,7 @@
|
||||
ownerTab,
|
||||
openerTab,
|
||||
pinned,
|
||||
@@ -294,7 +302,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
bulkOrderedOpen,
|
||||
tabGroup: tabGroup ?? openerTab?.group,
|
||||
});
|
||||
@@ -3022,6 +3113,7 @@
|
||||
@@ -3022,6 +3121,7 @@
|
||||
openWindowInfo,
|
||||
skipLoad,
|
||||
triggeringRemoteType,
|
||||
@@ -302,7 +310,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
}));
|
||||
|
||||
if (focusUrlBar) {
|
||||
@@ -3146,6 +3238,12 @@
|
||||
@@ -3146,6 +3246,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -315,7 +323,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
// Additionally send pinned tab events
|
||||
if (pinned) {
|
||||
this.#notifyPinnedStatus(t);
|
||||
@@ -3330,10 +3428,10 @@
|
||||
@@ -3349,10 +3455,10 @@
|
||||
isAdoptingGroup = false,
|
||||
isUserTriggered = false,
|
||||
telemetryUserCreateSource = "unknown",
|
||||
@@ -327,7 +335,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
}
|
||||
|
||||
if (!color) {
|
||||
@@ -3354,9 +3452,14 @@
|
||||
@@ -3373,9 +3479,14 @@
|
||||
label,
|
||||
isAdoptingGroup
|
||||
);
|
||||
@@ -344,7 +352,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
);
|
||||
group.addTabs(tabs);
|
||||
|
||||
@@ -3477,7 +3580,7 @@
|
||||
@@ -3496,7 +3607,7 @@
|
||||
}
|
||||
|
||||
this.#handleTabMove(tab, () =>
|
||||
@@ -353,7 +361,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
);
|
||||
}
|
||||
|
||||
@@ -3679,6 +3782,7 @@
|
||||
@@ -3698,6 +3809,7 @@
|
||||
openWindowInfo,
|
||||
skipLoad,
|
||||
triggeringRemoteType,
|
||||
@@ -361,7 +369,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
}
|
||||
) {
|
||||
// If we don't have a preferred remote type (or it is `NOT_REMOTE`), and
|
||||
@@ -3748,6 +3852,7 @@
|
||||
@@ -3767,6 +3879,7 @@
|
||||
openWindowInfo,
|
||||
name,
|
||||
skipLoad,
|
||||
@@ -369,7 +377,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
});
|
||||
}
|
||||
|
||||
@@ -3935,7 +4040,7 @@
|
||||
@@ -3955,7 +4068,7 @@
|
||||
// Add a new tab if needed.
|
||||
if (!tab) {
|
||||
let createLazyBrowser =
|
||||
@@ -378,7 +386,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
|
||||
let url = "about:blank";
|
||||
if (tabData.entries?.length) {
|
||||
@@ -3972,8 +4077,10 @@
|
||||
@@ -3992,8 +4105,10 @@
|
||||
insertTab: false,
|
||||
skipLoad: true,
|
||||
preferredRemoteType,
|
||||
@@ -390,7 +398,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
if (select) {
|
||||
tabToSelect = tab;
|
||||
}
|
||||
@@ -3985,7 +4092,8 @@
|
||||
@@ -4005,7 +4120,8 @@
|
||||
this.pinTab(tab);
|
||||
// Then ensure all the tab open/pinning information is sent.
|
||||
this._fireTabOpen(tab, {});
|
||||
@@ -400,7 +408,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
let { groupId } = tabData;
|
||||
const tabGroup = tabGroupWorkingData.get(groupId);
|
||||
// if a tab refers to a tab group we don't know, skip any group
|
||||
@@ -3999,7 +4107,10 @@
|
||||
@@ -4019,7 +4135,10 @@
|
||||
tabGroup.stateData.id,
|
||||
tabGroup.stateData.color,
|
||||
tabGroup.stateData.collapsed,
|
||||
@@ -412,7 +420,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
);
|
||||
tabsFragment.appendChild(tabGroup.node);
|
||||
}
|
||||
@@ -4044,9 +4155,23 @@
|
||||
@@ -4064,9 +4183,23 @@
|
||||
// to remove the old selected tab.
|
||||
if (tabToSelect) {
|
||||
let leftoverTab = this.selectedTab;
|
||||
@@ -428,15 +436,15 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
+ gZenWorkspaces._initialTab._shouldRemove = true;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
+ else {
|
||||
+ gZenWorkspaces._tabToRemoveForEmpty = this.selectedTab;
|
||||
}
|
||||
+ }
|
||||
+ this._hasAlreadyInitializedZenSessionStore = true;
|
||||
|
||||
if (tabs.length > 1 || !tabs[0].selected) {
|
||||
this._updateTabsAfterInsert();
|
||||
@@ -4237,11 +4362,14 @@
|
||||
@@ -4257,11 +4390,14 @@
|
||||
if (ownerTab) {
|
||||
tab.owner = ownerTab;
|
||||
}
|
||||
@@ -452,7 +460,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
if (
|
||||
!bulkOrderedOpen &&
|
||||
((openerTab &&
|
||||
@@ -4253,7 +4381,7 @@
|
||||
@@ -4273,7 +4409,7 @@
|
||||
let lastRelatedTab =
|
||||
openerTab && this._lastRelatedTabMap.get(openerTab);
|
||||
let previousTab = lastRelatedTab || openerTab || this.selectedTab;
|
||||
@@ -461,7 +469,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
tabGroup = previousTab.group;
|
||||
}
|
||||
if (
|
||||
@@ -4264,7 +4392,7 @@
|
||||
@@ -4284,7 +4420,7 @@
|
||||
) {
|
||||
elementIndex = Infinity;
|
||||
} else if (previousTab.visible) {
|
||||
@@ -470,7 +478,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
} else if (previousTab == FirefoxViewHandler.tab) {
|
||||
elementIndex = 0;
|
||||
}
|
||||
@@ -4292,14 +4420,14 @@
|
||||
@@ -4312,14 +4448,14 @@
|
||||
}
|
||||
// Ensure index is within bounds.
|
||||
if (tab.pinned) {
|
||||
@@ -489,7 +497,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
|
||||
if (pinned && !itemAfter?.pinned) {
|
||||
itemAfter = null;
|
||||
@@ -4310,7 +4438,7 @@
|
||||
@@ -4330,7 +4466,7 @@
|
||||
|
||||
this.tabContainer._invalidateCachedTabs();
|
||||
|
||||
@@ -498,7 +506,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
if (this.isTab(itemAfter) && itemAfter.group == tabGroup) {
|
||||
// Place at the front of, or between tabs in, the same tab group
|
||||
this.tabContainer.insertBefore(tab, itemAfter);
|
||||
@@ -4338,7 +4466,11 @@
|
||||
@@ -4358,7 +4494,11 @@
|
||||
const tabContainer = pinned
|
||||
? this.tabContainer.pinnedTabsContainer
|
||||
: this.tabContainer;
|
||||
@@ -510,7 +518,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
}
|
||||
|
||||
this._updateTabsAfterInsert();
|
||||
@@ -4346,6 +4478,7 @@
|
||||
@@ -4366,6 +4506,7 @@
|
||||
if (pinned) {
|
||||
this._updateTabBarForPinnedTabs();
|
||||
}
|
||||
@@ -518,17 +526,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
|
||||
TabBarVisibility.update();
|
||||
}
|
||||
@@ -4635,6 +4768,9 @@
|
||||
return;
|
||||
}
|
||||
|
||||
+ for (let tab of selectedTabs) {
|
||||
+ gZenPinnedTabManager._removePinnedAttributes(tab, true);
|
||||
+ }
|
||||
this.removeTabs(selectedTabs, { isUserTriggered, telemetrySource });
|
||||
}
|
||||
|
||||
@@ -4896,6 +5032,7 @@
|
||||
@@ -4916,6 +5057,7 @@
|
||||
telemetrySource,
|
||||
} = {}
|
||||
) {
|
||||
@@ -536,7 +534,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs
|
||||
// can be considered equivalent to closing the window.
|
||||
if (
|
||||
@@ -4985,6 +5122,7 @@
|
||||
@@ -5005,6 +5147,7 @@
|
||||
if (lastToClose) {
|
||||
this.removeTab(lastToClose, aParams);
|
||||
}
|
||||
@@ -544,7 +542,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
@@ -5023,6 +5161,12 @@
|
||||
@@ -5043,6 +5186,12 @@
|
||||
aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start();
|
||||
}
|
||||
|
||||
@@ -557,7 +555,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
// Handle requests for synchronously removing an already
|
||||
// asynchronously closing tab.
|
||||
if (!animate && aTab.closing) {
|
||||
@@ -5037,6 +5181,9 @@
|
||||
@@ -5057,6 +5206,9 @@
|
||||
// state).
|
||||
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
|
||||
let isLastTab = this.#isLastTabInWindow(aTab);
|
||||
@@ -567,7 +565,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
if (
|
||||
!this._beginRemoveTab(aTab, {
|
||||
closeWindowFastpath: true,
|
||||
@@ -5085,7 +5232,13 @@
|
||||
@@ -5105,7 +5257,13 @@
|
||||
// We're not animating, so we can cancel the animation stopwatch.
|
||||
Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId);
|
||||
aTab._closeTimeAnimTimerId = null;
|
||||
@@ -582,7 +580,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -5219,7 +5372,7 @@
|
||||
@@ -5239,7 +5397,7 @@
|
||||
closeWindowWithLastTab != null
|
||||
? closeWindowWithLastTab
|
||||
: !window.toolbar.visible ||
|
||||
@@ -591,7 +589,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
|
||||
if (closeWindow) {
|
||||
// We've already called beforeunload on all the relevant tabs if we get here,
|
||||
@@ -5243,6 +5396,7 @@
|
||||
@@ -5263,6 +5421,7 @@
|
||||
|
||||
newTab = true;
|
||||
}
|
||||
@@ -599,7 +597,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
aTab._endRemoveArgs = [closeWindow, newTab];
|
||||
|
||||
// swapBrowsersAndCloseOther will take care of closing the window without animation.
|
||||
@@ -5283,13 +5437,7 @@
|
||||
@@ -5303,13 +5462,7 @@
|
||||
aTab._mouseleave();
|
||||
|
||||
if (newTab) {
|
||||
@@ -614,7 +612,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
} else {
|
||||
TabBarVisibility.update();
|
||||
}
|
||||
@@ -5422,6 +5570,7 @@
|
||||
@@ -5442,6 +5595,7 @@
|
||||
this.tabs[i]._tPos = i;
|
||||
}
|
||||
|
||||
@@ -622,7 +620,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
if (!this._windowIsClosing) {
|
||||
// update tab close buttons state
|
||||
this.tabContainer._updateCloseButtons();
|
||||
@@ -5643,6 +5792,7 @@
|
||||
@@ -5663,6 +5817,7 @@
|
||||
}
|
||||
|
||||
let excludeTabs = new Set(aExcludeTabs);
|
||||
@@ -630,7 +628,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
|
||||
// If this tab has a successor, it should be selectable, since
|
||||
// hiding or closing a tab removes that tab as a successor.
|
||||
@@ -5655,13 +5805,13 @@
|
||||
@@ -5675,13 +5830,13 @@
|
||||
!excludeTabs.has(aTab.owner) &&
|
||||
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
|
||||
) {
|
||||
@@ -646,7 +644,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
);
|
||||
|
||||
let tab = this.tabContainer.findNextTab(aTab, {
|
||||
@@ -5677,7 +5827,7 @@
|
||||
@@ -5697,7 +5852,7 @@
|
||||
}
|
||||
|
||||
if (tab) {
|
||||
@@ -655,7 +653,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
}
|
||||
|
||||
// If no qualifying visible tab was found, see if there is a tab in
|
||||
@@ -5698,7 +5848,7 @@
|
||||
@@ -5718,7 +5873,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
@@ -664,7 +662,47 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
}
|
||||
|
||||
_blurTab(aTab) {
|
||||
@@ -6104,10 +6254,10 @@
|
||||
@@ -5729,7 +5884,7 @@
|
||||
* @returns {boolean}
|
||||
* False if swapping isn't permitted, true otherwise.
|
||||
*/
|
||||
- swapBrowsersAndCloseOther(aOurTab, aOtherTab) {
|
||||
+ swapBrowsersAndCloseOther(aOurTab, aOtherTab, zenCloseOther = true) {
|
||||
// Do not allow transfering a private tab to a non-private window
|
||||
// and vice versa.
|
||||
if (
|
||||
@@ -5783,6 +5938,7 @@
|
||||
// fire the beforeunload event in the process. Close the other
|
||||
// window if this was its last tab.
|
||||
if (
|
||||
+ zenCloseOther &&
|
||||
!remoteBrowser._beginRemoveTab(aOtherTab, {
|
||||
adoptedByTab: aOurTab,
|
||||
closeWindowWithLastTab: true,
|
||||
@@ -5794,7 +5950,7 @@
|
||||
// If this is the last tab of the window, hide the window
|
||||
// immediately without animation before the docshell swap, to avoid
|
||||
// about:blank being painted.
|
||||
- let [closeWindow] = aOtherTab._endRemoveArgs;
|
||||
+ let [closeWindow] = !zenCloseOther ? [false] : aOtherTab._endRemoveArgs;
|
||||
if (closeWindow) {
|
||||
let win = aOtherTab.ownerGlobal;
|
||||
win.windowUtils.suppressAnimation(true);
|
||||
@@ -5918,11 +6074,13 @@
|
||||
}
|
||||
|
||||
// Finish tearing down the tab that's going away.
|
||||
+ if (zenCloseOther) {
|
||||
if (closeWindow) {
|
||||
aOtherTab.ownerGlobal.close();
|
||||
} else {
|
||||
remoteBrowser._endRemoveTab(aOtherTab);
|
||||
}
|
||||
+ }
|
||||
|
||||
this.setTabTitle(aOurTab);
|
||||
|
||||
@@ -6124,10 +6282,10 @@
|
||||
SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
|
||||
}
|
||||
|
||||
@@ -677,15 +715,27 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
aTab.selected ||
|
||||
aTab.closing ||
|
||||
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
|
||||
@@ -6166,6 +6316,7 @@
|
||||
@@ -6185,7 +6343,8 @@
|
||||
*
|
||||
* @param {MozTabbrowserTab|MozTabbrowserTabGroup|MozTabbrowserTabGroup.labelElement} aTab
|
||||
*/
|
||||
replaceTabWithWindow(aTab, aOptions) {
|
||||
- replaceTabWithWindow(aTab, aOptions) {
|
||||
+ replaceTabWithWindow(aTab, aOptions, zenForceSync = false) {
|
||||
+ if (!this.isTab(aTab)) return; // TODO: Handle tab groups
|
||||
if (this.tabs.length == 1) {
|
||||
return null;
|
||||
}
|
||||
@@ -6299,7 +6450,7 @@
|
||||
@@ -6213,7 +6372,8 @@
|
||||
AppConstants.BROWSER_CHROME_URL,
|
||||
"_blank",
|
||||
options,
|
||||
- aTab
|
||||
+ aTab,
|
||||
+ zenForceSync ? "zen-synced" : "zen-unsynced"
|
||||
);
|
||||
}
|
||||
|
||||
@@ -6319,7 +6479,7 @@
|
||||
* `true` if element is a `<tab-group>`
|
||||
*/
|
||||
isTabGroup(element) {
|
||||
@@ -694,7 +744,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -6375,8 +6526,8 @@
|
||||
@@ -6404,8 +6564,8 @@
|
||||
}
|
||||
|
||||
// Don't allow mixing pinned and unpinned tabs.
|
||||
@@ -705,7 +755,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
} else {
|
||||
tabIndex = Math.max(tabIndex, this.pinnedTabCount);
|
||||
}
|
||||
@@ -6402,10 +6553,16 @@
|
||||
@@ -6431,10 +6591,16 @@
|
||||
this.#handleTabMove(
|
||||
element,
|
||||
() => {
|
||||
@@ -724,7 +774,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
if (neighbor && this.isTab(element) && tabIndex > element._tPos) {
|
||||
neighbor.after(element);
|
||||
} else {
|
||||
@@ -6463,23 +6620,28 @@
|
||||
@@ -6492,23 +6658,28 @@
|
||||
#moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) {
|
||||
if (this.isTabGroupLabel(targetElement)) {
|
||||
targetElement = targetElement.group;
|
||||
@@ -759,7 +809,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
} else if (!element.pinned && targetElement && targetElement.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
|
||||
@@ -6492,14 +6654,34 @@
|
||||
@@ -6521,14 +6692,34 @@
|
||||
// move the tab group right before the first unpinned tab.
|
||||
// 4. Moving a tab group and the first unpinned tab is grouped:
|
||||
// move the tab group right before the first unpinned tab's tab group.
|
||||
@@ -795,7 +845,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
element.pinned
|
||||
? this.tabContainer.pinnedTabsContainer
|
||||
: this.tabContainer;
|
||||
@@ -6508,7 +6690,7 @@
|
||||
@@ -6537,7 +6728,7 @@
|
||||
element,
|
||||
() => {
|
||||
if (moveBefore) {
|
||||
@@ -804,7 +854,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
} else if (targetElement) {
|
||||
targetElement.after(element);
|
||||
} else {
|
||||
@@ -6580,10 +6762,10 @@
|
||||
@@ -6607,10 +6798,10 @@
|
||||
* @param {TabMetricsContext} [metricsContext]
|
||||
*/
|
||||
moveTabToGroup(aTab, aGroup, metricsContext) {
|
||||
@@ -817,7 +867,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
return;
|
||||
}
|
||||
if (aTab.group && aTab.group.id === aGroup.id) {
|
||||
@@ -6613,6 +6795,7 @@
|
||||
@@ -6656,6 +6847,7 @@
|
||||
|
||||
let state = {
|
||||
tabIndex: tab._tPos,
|
||||
@@ -825,7 +875,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
};
|
||||
if (tab.visible) {
|
||||
state.elementIndex = tab.elementIndex;
|
||||
@@ -6639,7 +6822,7 @@
|
||||
@@ -6682,7 +6874,7 @@
|
||||
let changedTabGroup =
|
||||
previousTabState.tabGroupId != currentTabState.tabGroupId;
|
||||
|
||||
@@ -834,7 +884,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
tab.dispatchEvent(
|
||||
new CustomEvent("TabMove", {
|
||||
bubbles: true,
|
||||
@@ -6676,6 +6859,10 @@
|
||||
@@ -6723,6 +6915,10 @@
|
||||
|
||||
moveActionCallback();
|
||||
|
||||
@@ -845,7 +895,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
// Clear tabs cache after moving nodes because the order of tabs may have
|
||||
// changed.
|
||||
this.tabContainer._invalidateCachedTabs();
|
||||
@@ -7576,7 +7763,7 @@
|
||||
@@ -7623,7 +7819,7 @@
|
||||
// preventDefault(). It will still raise the window if appropriate.
|
||||
break;
|
||||
}
|
||||
@@ -854,7 +904,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
window.focus();
|
||||
aEvent.preventDefault();
|
||||
break;
|
||||
@@ -7593,7 +7780,6 @@
|
||||
@@ -7640,7 +7836,6 @@
|
||||
}
|
||||
case "TabGroupCollapse":
|
||||
aEvent.target.tabs.forEach(tab => {
|
||||
@@ -862,7 +912,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
});
|
||||
break;
|
||||
case "TabGroupCreateByUser":
|
||||
@@ -8542,6 +8728,7 @@
|
||||
@@ -8589,6 +8784,7 @@
|
||||
aWebProgress.isTopLevel
|
||||
) {
|
||||
this.mTab.setAttribute("busy", "true");
|
||||
@@ -870,7 +920,7 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
gBrowser._tabAttrModified(this.mTab, ["busy"]);
|
||||
this.mTab._notselectedsinceload = !this.mTab.selected;
|
||||
}
|
||||
@@ -9543,7 +9730,7 @@ var TabContextMenu = {
|
||||
@@ -9623,7 +9819,7 @@ var TabContextMenu = {
|
||||
);
|
||||
contextUnpinSelectedTabs.hidden =
|
||||
!this.contextTab.pinned || !this.multiselected;
|
||||
@@ -879,11 +929,3 @@ index c0eafd4faf8d57b8486c5bf8917375850ec8147e..cead9e6e52f7354e20b8b64ad06a075e
|
||||
// Build Ask Chat items
|
||||
TabContextMenu.GenAI.buildTabMenu(
|
||||
document.getElementById("context_askChat"),
|
||||
@@ -9863,6 +10050,7 @@ var TabContextMenu = {
|
||||
)
|
||||
);
|
||||
} else {
|
||||
+ gZenPinnedTabManager._removePinnedAttributes(this.contextTab, true);
|
||||
gBrowser.removeTab(this.contextTab, {
|
||||
animate: true,
|
||||
...gBrowser.TabMetrics.userTriggeredContext(
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js
|
||||
index aa8b22c558f9dbc0b0b1e63993477b9126fb6821..feb90bb75b78e2513362679a5b5da41fbf97ac20 100644
|
||||
index 394b2af2e187b82bb3e98ebcdc6e66b63036e20d..4757555c7654a14578a5d057323057ebc71c2f5f 100644
|
||||
--- a/browser/components/tabbrowser/content/tabgroup.js
|
||||
+++ b/browser/components/tabbrowser/content/tabgroup.js
|
||||
@@ -14,11 +14,11 @@
|
||||
@@ -87,7 +87,7 @@ index aa8b22c558f9dbc0b0b1e63993477b9126fb6821..feb90bb75b78e2513362679a5b5da41f
|
||||
|
||||
resetDefaultGroupName = () => {
|
||||
this.#defaultGroupName = "";
|
||||
@@ -227,7 +248,10 @@
|
||||
@@ -211,7 +232,10 @@
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -99,7 +99,7 @@ index aa8b22c558f9dbc0b0b1e63993477b9126fb6821..feb90bb75b78e2513362679a5b5da41f
|
||||
}
|
||||
|
||||
get color() {
|
||||
@@ -321,6 +345,9 @@
|
||||
@@ -305,6 +329,9 @@
|
||||
}
|
||||
|
||||
set collapsed(val) {
|
||||
@@ -109,7 +109,7 @@ index aa8b22c558f9dbc0b0b1e63993477b9126fb6821..feb90bb75b78e2513362679a5b5da41f
|
||||
if (!!val == this.collapsed) {
|
||||
return;
|
||||
}
|
||||
@@ -406,7 +433,6 @@
|
||||
@@ -391,7 +418,6 @@
|
||||
tabGroupName,
|
||||
})
|
||||
.then(result => {
|
||||
@@ -117,11 +117,14 @@ index aa8b22c558f9dbc0b0b1e63993477b9126fb6821..feb90bb75b78e2513362679a5b5da41f
|
||||
});
|
||||
}
|
||||
|
||||
@@ -425,7 +451,57 @@
|
||||
@@ -466,13 +492,57 @@
|
||||
* @returns {MozTabbrowserTab[]}
|
||||
*/
|
||||
get tabs() {
|
||||
- return Array.from(this.children).filter(node => node.matches("tab"));
|
||||
- let childrenArray = Array.from(this.children);
|
||||
- for (let i = childrenArray.length - 1; i >= 0; i--) {
|
||||
- if (childrenArray[i].tagName == "tab-split-view-wrapper") {
|
||||
- childrenArray.splice(i, 1, ...childrenArray[i].tabs);
|
||||
+ // add other group tabs if they are under this group
|
||||
+ let childs = Array.from(this.querySelector(".tab-group-container")?.children ?? []);
|
||||
+ const tabsCollect = [];
|
||||
@@ -166,8 +169,9 @@ index aa8b22c558f9dbc0b0b1e63993477b9126fb6821..feb90bb75b78e2513362679a5b5da41f
|
||||
+ currentGroup = currentGroup?.group;
|
||||
+ if (currentGroup.collapsed) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
}
|
||||
- return childrenArray.filter(node => node.matches("tab"));
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
@@ -176,7 +180,7 @@ index aa8b22c558f9dbc0b0b1e63993477b9126fb6821..feb90bb75b78e2513362679a5b5da41f
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -506,7 +582,6 @@
|
||||
@@ -553,7 +623,6 @@
|
||||
addTabs(tabs, metricsContext) {
|
||||
for (let tab of tabs) {
|
||||
if (tab.pinned) {
|
||||
@@ -184,7 +188,7 @@ index aa8b22c558f9dbc0b0b1e63993477b9126fb6821..feb90bb75b78e2513362679a5b5da41f
|
||||
}
|
||||
let tabToMove =
|
||||
this.ownerGlobal === tab.ownerGlobal
|
||||
@@ -569,7 +644,7 @@
|
||||
@@ -616,7 +685,7 @@
|
||||
*/
|
||||
on_click(event) {
|
||||
let isToggleElement =
|
||||
@@ -193,7 +197,7 @@ index aa8b22c558f9dbc0b0b1e63993477b9126fb6821..feb90bb75b78e2513362679a5b5da41f
|
||||
event.target === this.#overflowCountLabel;
|
||||
if (isToggleElement && event.button === 0) {
|
||||
event.preventDefault();
|
||||
@@ -638,5 +713,6 @@
|
||||
@@ -687,5 +756,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
|
||||
index 258b9627aaa8a1d26e8aeb987a0b4c67bc1b7abc..6d334761033a0654f28fd417193d2ac2a736d9f8 100644
|
||||
index 6b6c04599fe80983d13d2069ca62b99d8ad70271..a765f2decc3a565226ac8793422474052f476573 100644
|
||||
--- a/browser/components/tabbrowser/content/tabs.js
|
||||
+++ b/browser/components/tabbrowser/content/tabs.js
|
||||
@@ -411,7 +411,7 @@
|
||||
@@ -436,7 +436,7 @@
|
||||
// and we're not hitting the scroll buttons.
|
||||
if (
|
||||
event.button != 0 ||
|
||||
@@ -11,7 +11,7 @@ index 258b9627aaa8a1d26e8aeb987a0b4c67bc1b7abc..6d334761033a0654f28fd417193d2ac2
|
||||
event.composedTarget.localName == "toolbarbutton"
|
||||
) {
|
||||
return;
|
||||
@@ -492,7 +492,6 @@
|
||||
@@ -517,7 +517,6 @@
|
||||
});
|
||||
}
|
||||
} else if (isTabGroupLabel(event.target)) {
|
||||
@@ -19,7 +19,7 @@ index 258b9627aaa8a1d26e8aeb987a0b4c67bc1b7abc..6d334761033a0654f28fd417193d2ac2
|
||||
} else if (
|
||||
event.originalTarget.closest("scrollbox") &&
|
||||
!Services.prefs.getBoolPref(
|
||||
@@ -528,6 +527,9 @@
|
||||
@@ -553,6 +552,9 @@
|
||||
}
|
||||
|
||||
on_keydown(event) {
|
||||
@@ -29,15 +29,15 @@ index 258b9627aaa8a1d26e8aeb987a0b4c67bc1b7abc..6d334761033a0654f28fd417193d2ac2
|
||||
let { altKey, shiftKey } = event;
|
||||
let [accel, nonAccel] =
|
||||
AppConstants.platform == "macosx"
|
||||
@@ -720,7 +722,6 @@
|
||||
|
||||
this.toggleAttribute("overflow", true);
|
||||
@@ -747,7 +749,6 @@
|
||||
this._updateCloseButtons();
|
||||
- this._handleTabSelect(true);
|
||||
|
||||
if (!this.#animatingGroups.size) {
|
||||
- this._handleTabSelect(true);
|
||||
}
|
||||
|
||||
document
|
||||
.getElementById("tab-preview-panel")
|
||||
@@ -780,7 +781,7 @@
|
||||
@@ -808,7 +809,7 @@
|
||||
}
|
||||
|
||||
get newTabButton() {
|
||||
@@ -46,7 +46,7 @@ index 258b9627aaa8a1d26e8aeb987a0b4c67bc1b7abc..6d334761033a0654f28fd417193d2ac2
|
||||
}
|
||||
|
||||
get verticalMode() {
|
||||
@@ -796,6 +797,7 @@
|
||||
@@ -824,6 +825,7 @@
|
||||
}
|
||||
|
||||
get overflowing() {
|
||||
@@ -54,7 +54,7 @@ index 258b9627aaa8a1d26e8aeb987a0b4c67bc1b7abc..6d334761033a0654f28fd417193d2ac2
|
||||
return this.hasAttribute("overflow");
|
||||
}
|
||||
|
||||
@@ -809,29 +811,54 @@
|
||||
@@ -837,29 +839,54 @@
|
||||
if (pinnedChildren?.at(-1)?.id == "pinned-tabs-container-periphery") {
|
||||
pinnedChildren.pop();
|
||||
}
|
||||
@@ -119,7 +119,7 @@ index 258b9627aaa8a1d26e8aeb987a0b4c67bc1b7abc..6d334761033a0654f28fd417193d2ac2
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -898,17 +925,10 @@
|
||||
@@ -926,17 +953,10 @@
|
||||
|
||||
let elementIndex = 0;
|
||||
|
||||
@@ -139,7 +139,7 @@ index 258b9627aaa8a1d26e8aeb987a0b4c67bc1b7abc..6d334761033a0654f28fd417193d2ac2
|
||||
if (isTab(child) && child.visible) {
|
||||
child.elementIndex = elementIndex++;
|
||||
focusableItems.push(child);
|
||||
@@ -916,11 +936,13 @@
|
||||
@@ -944,11 +964,13 @@
|
||||
child.labelElement.elementIndex = elementIndex++;
|
||||
focusableItems.push(child.labelElement);
|
||||
|
||||
@@ -154,7 +154,7 @@ index 258b9627aaa8a1d26e8aeb987a0b4c67bc1b7abc..6d334761033a0654f28fd417193d2ac2
|
||||
} else if (child.tagName == "tab-split-view-wrapper") {
|
||||
let visibleTabsInSplitView = child.tabs.filter(tab => tab.visible);
|
||||
visibleTabsInSplitView.forEach(tab => {
|
||||
@@ -964,6 +986,7 @@
|
||||
@@ -992,6 +1014,7 @@
|
||||
_invalidateCachedTabs() {
|
||||
this.#allTabs = null;
|
||||
this._invalidateCachedVisibleTabs();
|
||||
@@ -162,7 +162,7 @@ index 258b9627aaa8a1d26e8aeb987a0b4c67bc1b7abc..6d334761033a0654f28fd417193d2ac2
|
||||
}
|
||||
|
||||
_invalidateCachedVisibleTabs() {
|
||||
@@ -1067,7 +1090,7 @@
|
||||
@@ -1095,7 +1118,7 @@
|
||||
|
||||
if (node == null) {
|
||||
// We have a container for non-tab elements at the end of the scrollbox.
|
||||
@@ -171,7 +171,7 @@ index 258b9627aaa8a1d26e8aeb987a0b4c67bc1b7abc..6d334761033a0654f28fd417193d2ac2
|
||||
}
|
||||
|
||||
node.before(tab);
|
||||
@@ -1162,7 +1185,7 @@
|
||||
@@ -1193,7 +1216,7 @@
|
||||
// There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and
|
||||
// for when the tab strip is overflowed (which is shared by vertical and horizontal tabs);
|
||||
// Attach the long click popup to all of them.
|
||||
@@ -180,7 +180,7 @@ index 258b9627aaa8a1d26e8aeb987a0b4c67bc1b7abc..6d334761033a0654f28fd417193d2ac2
|
||||
const newTab2 = this.newTabButton;
|
||||
const newTabVertical = document.getElementById(
|
||||
"vertical-tabs-newtab-button"
|
||||
@@ -1263,8 +1286,10 @@
|
||||
@@ -1294,8 +1317,10 @@
|
||||
*/
|
||||
_handleTabSelect(aInstant) {
|
||||
let selectedTab = this.selectedItem;
|
||||
@@ -191,7 +191,7 @@ index 258b9627aaa8a1d26e8aeb987a0b4c67bc1b7abc..6d334761033a0654f28fd417193d2ac2
|
||||
selectedTab._notselectedsinceload = false;
|
||||
}
|
||||
|
||||
@@ -1273,7 +1298,7 @@
|
||||
@@ -1304,7 +1329,7 @@
|
||||
* @param {boolean} [shouldScrollInstantly=false]
|
||||
*/
|
||||
#ensureTabIsVisible(tab, shouldScrollInstantly = false) {
|
||||
@@ -200,7 +200,7 @@ index 258b9627aaa8a1d26e8aeb987a0b4c67bc1b7abc..6d334761033a0654f28fd417193d2ac2
|
||||
if (arrowScrollbox?.overflowing) {
|
||||
arrowScrollbox.ensureElementIsVisible(tab, shouldScrollInstantly);
|
||||
}
|
||||
@@ -1406,7 +1431,7 @@
|
||||
@@ -1437,7 +1462,7 @@
|
||||
}
|
||||
|
||||
_notifyBackgroundTab(aTab) {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarController.sys.mjs b/browser/components/urlbar/UrlbarController.sys.mjs
|
||||
index 880f65b493ba5e9b9750e84c2ba5d08b99e3dad9..c4a495887926fc6f13312a29998d03bfe907f0e2 100644
|
||||
index 09c1a7d4e156fe5e606f097277420333efe88976..f31e183e7b92c616d81dae509ef0448c4d507cc7 100644
|
||||
--- a/browser/components/urlbar/UrlbarController.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarController.sys.mjs
|
||||
@@ -299,7 +299,6 @@ export class UrlbarController {
|
||||
@@ -296,7 +296,6 @@ export class UrlbarController {
|
||||
const isMac = AppConstants.platform == "macosx";
|
||||
// Handle readline/emacs-style navigation bindings on Mac.
|
||||
if (
|
||||
@@ -10,7 +10,7 @@ index 880f65b493ba5e9b9750e84c2ba5d08b99e3dad9..c4a495887926fc6f13312a29998d03bf
|
||||
this.view.isOpen &&
|
||||
event.ctrlKey &&
|
||||
(event.key == "n" || event.key == "p")
|
||||
@@ -443,6 +442,8 @@ export class UrlbarController {
|
||||
@@ -445,6 +444,8 @@ export class UrlbarController {
|
||||
});
|
||||
}
|
||||
event.preventDefault();
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs
|
||||
index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d21420357586fb7f14 100644
|
||||
index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f5f45accf 100644
|
||||
--- a/browser/components/urlbar/UrlbarInput.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarInput.sys.mjs
|
||||
@@ -84,6 +84,13 @@ ChromeUtils.defineLazyGetter(lazy, "logger", () =>
|
||||
lazy.UrlbarUtils.getLogger({ prefix: "Input" })
|
||||
);
|
||||
@@ -68,6 +68,13 @@ const lazy = XPCOMUtils.declareLazy({
|
||||
logger: () => lazy.UrlbarUtils.getLogger({ prefix: "Input" }),
|
||||
});
|
||||
|
||||
+XPCOMUtils.defineLazyPreferenceGetter(
|
||||
+ lazy,
|
||||
@@ -16,7 +16,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
const DEFAULT_FORM_HISTORY_NAME = "searchbar-history";
|
||||
|
||||
const UNLIMITED_MAX_RESULTS = 99;
|
||||
@@ -454,7 +461,16 @@ export class UrlbarInput {
|
||||
@@ -445,7 +452,16 @@ export class UrlbarInput {
|
||||
// See _on_select(). HTMLInputElement.select() dispatches a "select"
|
||||
// event but does not set the primary selection.
|
||||
this._suppressPrimaryAdjustment = true;
|
||||
@@ -33,7 +33,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
this._suppressPrimaryAdjustment = false;
|
||||
}
|
||||
|
||||
@@ -530,6 +546,10 @@ export class UrlbarInput {
|
||||
@@ -521,6 +537,10 @@ export class UrlbarInput {
|
||||
hideSearchTerms = false,
|
||||
isSameDocument = false
|
||||
) {
|
||||
@@ -41,10 +41,10 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (!this.isAddressbar) {
|
||||
if (!this.#isAddressbar) {
|
||||
throw new Error(
|
||||
"Cannot set URI for UrlbarInput that is not an address bar"
|
||||
@@ -807,8 +827,16 @@ export class UrlbarInput {
|
||||
@@ -798,8 +818,16 @@ export class UrlbarInput {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -62,7 +62,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1224,7 +1252,11 @@ export class UrlbarInput {
|
||||
@@ -1215,7 +1243,11 @@ export class UrlbarInput {
|
||||
}
|
||||
|
||||
if (!this.#providesSearchMode(result)) {
|
||||
@@ -75,7 +75,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
}
|
||||
|
||||
if (isCanonized) {
|
||||
@@ -2347,6 +2379,32 @@ export class UrlbarInput {
|
||||
@@ -2335,6 +2367,32 @@ export class UrlbarInput {
|
||||
await this.#updateLayoutBreakoutDimensions();
|
||||
}
|
||||
|
||||
@@ -108,7 +108,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
startLayoutExtend() {
|
||||
if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) {
|
||||
// Do not expand if the Urlbar does not support being expanded or it is
|
||||
@@ -2361,6 +2419,13 @@ export class UrlbarInput {
|
||||
@@ -2349,6 +2407,13 @@ export class UrlbarInput {
|
||||
|
||||
this.setAttribute("breakout-extend", "true");
|
||||
|
||||
@@ -122,7 +122,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
// Enable the animation only after the first extend call to ensure it
|
||||
// doesn't run when opening a new window.
|
||||
if (!this.hasAttribute("breakout-extend-animate")) {
|
||||
@@ -2380,6 +2445,24 @@ export class UrlbarInput {
|
||||
@@ -2368,6 +2433,24 @@ export class UrlbarInput {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -147,7 +147,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
this.removeAttribute("breakout-extend");
|
||||
this.#updateTextboxPosition();
|
||||
}
|
||||
@@ -2410,7 +2493,7 @@ export class UrlbarInput {
|
||||
@@ -2398,7 +2481,7 @@ export class UrlbarInput {
|
||||
forceUnifiedSearchButtonAvailable = false
|
||||
) {
|
||||
let prevState = this.getAttribute("pageproxystate");
|
||||
@@ -156,7 +156,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
this.setAttribute("pageproxystate", state);
|
||||
this._inputContainer.setAttribute("pageproxystate", state);
|
||||
this._identityBox?.setAttribute("pageproxystate", state);
|
||||
@@ -2646,10 +2729,12 @@ export class UrlbarInput {
|
||||
@@ -2635,10 +2718,12 @@ export class UrlbarInput {
|
||||
return;
|
||||
}
|
||||
this.textbox.style.top = px(
|
||||
@@ -169,7 +169,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2709,9 +2794,10 @@ export class UrlbarInput {
|
||||
@@ -2698,9 +2783,10 @@ export class UrlbarInput {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -181,7 +181,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
);
|
||||
this.textbox.style.setProperty(
|
||||
"--urlbar-height",
|
||||
@@ -3144,6 +3230,7 @@ export class UrlbarInput {
|
||||
@@ -3134,6 +3220,7 @@ export class UrlbarInput {
|
||||
}
|
||||
|
||||
_toggleActionOverride(event) {
|
||||
@@ -189,24 +189,26 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
if (
|
||||
event.keyCode == KeyEvent.DOM_VK_SHIFT ||
|
||||
event.keyCode == KeyEvent.DOM_VK_ALT ||
|
||||
@@ -3248,7 +3335,7 @@ export class UrlbarInput {
|
||||
@@ -3237,8 +3324,8 @@ export class UrlbarInput {
|
||||
if (!this.#isAddressbar) {
|
||||
return val;
|
||||
}
|
||||
let trimmedValue = lazy.UrlbarPrefs.get("trimURLs")
|
||||
- let trimmedValue = lazy.UrlbarPrefs.get("trimURLs")
|
||||
- ? lazy.BrowserUIUtils.trimURL(val)
|
||||
+ let trimmedValue = lazy.UrlbarPrefs.get("trimURLs") && this._zenTrimURL
|
||||
+ ? this._zenTrimURL(val)
|
||||
: val;
|
||||
// Only trim value if the directionality doesn't change to RTL and we're not
|
||||
// showing a strikeout https protocol.
|
||||
@@ -3552,6 +3639,7 @@ export class UrlbarInput {
|
||||
@@ -3544,6 +3631,7 @@ export class UrlbarInput {
|
||||
resultDetails = null,
|
||||
browser = this.window.gBrowser.selectedBrowser
|
||||
) {
|
||||
+ openUILinkWhere = this.window.gZenUIManager.getOpenUILinkWhere(url, browser, openUILinkWhere);
|
||||
if (this.isAddressbar) {
|
||||
if (this.#isAddressbar) {
|
||||
this.#prepareAddressbarLoad(
|
||||
url,
|
||||
@@ -3659,6 +3747,10 @@ export class UrlbarInput {
|
||||
@@ -3651,6 +3739,10 @@ export class UrlbarInput {
|
||||
}
|
||||
reuseEmpty = true;
|
||||
}
|
||||
@@ -217,7 +219,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
if (
|
||||
where == "tab" &&
|
||||
reuseEmpty &&
|
||||
@@ -3666,6 +3758,9 @@ export class UrlbarInput {
|
||||
@@ -3658,6 +3750,9 @@ export class UrlbarInput {
|
||||
) {
|
||||
where = "current";
|
||||
}
|
||||
@@ -227,7 +229,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
return where;
|
||||
}
|
||||
|
||||
@@ -3923,6 +4018,7 @@ export class UrlbarInput {
|
||||
@@ -3909,6 +4004,7 @@ export class UrlbarInput {
|
||||
this.setResultForCurrentValue(null);
|
||||
this.handleCommand();
|
||||
this.controller.clearLastQueryContextCache();
|
||||
@@ -235,7 +237,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
|
||||
this._suppressStartQuery = false;
|
||||
});
|
||||
@@ -3930,7 +4026,6 @@ export class UrlbarInput {
|
||||
@@ -3916,7 +4012,6 @@ export class UrlbarInput {
|
||||
contextMenu.addEventListener("popupshowing", () => {
|
||||
// Close the results pane when the input field contextual menu is open,
|
||||
// because paste and go doesn't want a result selection.
|
||||
@@ -243,7 +245,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
|
||||
let controller =
|
||||
this.document.commandDispatcher.getControllerForCommand("cmd_paste");
|
||||
@@ -4040,7 +4135,11 @@ export class UrlbarInput {
|
||||
@@ -4026,7 +4121,11 @@ export class UrlbarInput {
|
||||
if (!engineName && !source && !this.hasAttribute("searchmode")) {
|
||||
return;
|
||||
}
|
||||
@@ -256,7 +258,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
if (this._searchModeIndicatorTitle) {
|
||||
this._searchModeIndicatorTitle.textContent = "";
|
||||
this._searchModeIndicatorTitle.removeAttribute("data-l10n-id");
|
||||
@@ -4351,6 +4450,7 @@ export class UrlbarInput {
|
||||
@@ -4338,6 +4437,7 @@ export class UrlbarInput {
|
||||
|
||||
this.document.l10n.setAttributes(
|
||||
this.inputField,
|
||||
@@ -264,7 +266,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
l10nId,
|
||||
l10nId == "urlbar-placeholder-with-name" ? { name } : undefined
|
||||
);
|
||||
@@ -4462,6 +4562,11 @@ export class UrlbarInput {
|
||||
@@ -4449,6 +4549,11 @@ export class UrlbarInput {
|
||||
}
|
||||
|
||||
_on_click(event) {
|
||||
@@ -276,7 +278,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
if (
|
||||
event.target == this.inputField ||
|
||||
event.target == this._inputContainer
|
||||
@@ -4534,7 +4639,7 @@ export class UrlbarInput {
|
||||
@@ -4521,7 +4626,7 @@ export class UrlbarInput {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -285,7 +287,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
this.view.autoOpen({ event });
|
||||
} else {
|
||||
if (this._untrimOnFocusAfterKeydown) {
|
||||
@@ -4574,9 +4679,16 @@ export class UrlbarInput {
|
||||
@@ -4561,9 +4666,16 @@ export class UrlbarInput {
|
||||
}
|
||||
|
||||
_on_mousedown(event) {
|
||||
@@ -303,7 +305,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
|
||||
if (
|
||||
event.target != this.inputField &&
|
||||
@@ -4587,6 +4699,10 @@ export class UrlbarInput {
|
||||
@@ -4574,6 +4686,10 @@ export class UrlbarInput {
|
||||
|
||||
this.focusedViaMousedown = !this.focused;
|
||||
this._preventClickSelectsAll = this.focused;
|
||||
@@ -314,7 +316,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
|
||||
// Keep the focus status, since the attribute may be changed
|
||||
// upon calling this.focus().
|
||||
@@ -4622,7 +4738,7 @@ export class UrlbarInput {
|
||||
@@ -4609,7 +4725,7 @@ export class UrlbarInput {
|
||||
}
|
||||
// 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.
|
||||
@@ -323,7 +325,7 @@ index 4b7232f3261f8589b734c2238170e6968d7ea0bf..d8c0b404724e9b0dc2b5a2d214203575
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -4939,7 +5055,7 @@ export class UrlbarInput {
|
||||
@@ -4930,7 +5046,7 @@ export class UrlbarInput {
|
||||
// When we are in actions search mode we can show more results so
|
||||
// increase the limit.
|
||||
let maxResults =
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarPrefs.sys.mjs b/browser/components/urlbar/UrlbarPrefs.sys.mjs
|
||||
index 531cecb9da3465d392ea82248e6ebb3fe6476b47..f3cce2a66bb8465ae022df0c1b9823e7e88cba21 100644
|
||||
index 0cc0db4889d66872bce2aa775a79a4c68e8cec51..604106e328843b3a6eb0922cc8663474ddb008f4 100644
|
||||
--- a/browser/components/urlbar/UrlbarPrefs.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarPrefs.sys.mjs
|
||||
@@ -731,6 +731,7 @@ function makeResultGroups({ showSearchSuggestionsFirst }) {
|
||||
@@ -763,6 +763,7 @@ function makeResultGroups({ showSearchSuggestionsFirst }) {
|
||||
*/
|
||||
let rootGroup = {
|
||||
children: [
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs b/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs
|
||||
index 91abb674d26dc7e2a919c94087b180a6148248fd..80551acd18228f19cb179f71adc4f58bc893ac14 100644
|
||||
index 4db61038e5e476bad3a61dbdb707e5222c1f08f8..9eca13d9cfac3b762917aaaa942267effb743cf7 100644
|
||||
--- a/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs
|
||||
@@ -44,11 +44,13 @@ function defaultQuery(conditions = "") {
|
||||
@@ -45,11 +45,13 @@ function defaultQuery(conditions = "") {
|
||||
let query = `
|
||||
SELECT h.url, h.title, ${SQL_BOOKMARK_TAGS_FRAGMENT}, h.id, t.open_count,
|
||||
${lazy.PAGES_FRECENCY_FIELD} AS frecency, t.userContextId,
|
||||
@@ -17,7 +17,7 @@ index 91abb674d26dc7e2a919c94087b180a6148248fd..80551acd18228f19cb179f71adc4f58b
|
||||
WHERE (
|
||||
(:switchTabsEnabled AND t.open_count > 0) OR
|
||||
${lazy.PAGES_FRECENCY_FIELD} <> 0
|
||||
@@ -62,7 +64,7 @@ function defaultQuery(conditions = "") {
|
||||
@@ -63,7 +65,7 @@ function defaultQuery(conditions = "") {
|
||||
:matchBehavior, :searchBehavior, NULL)
|
||||
ELSE
|
||||
AUTOCOMPLETE_MATCH(:searchString, h.url,
|
||||
@@ -26,7 +26,7 @@ index 91abb674d26dc7e2a919c94087b180a6148248fd..80551acd18228f19cb179f71adc4f58b
|
||||
h.visit_count, h.typed,
|
||||
0, t.open_count,
|
||||
:matchBehavior, :searchBehavior, NULL)
|
||||
@@ -1126,11 +1128,13 @@ Search.prototype = {
|
||||
@@ -1176,11 +1178,13 @@ class Search {
|
||||
? lazy.PlacesUtils.toDate(lastVisitPRTime).getTime()
|
||||
: undefined;
|
||||
let tabGroup = row.getResultByName("groupId");
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
|
||||
index b864cf9a9159d1f4e162ff5e8895a2bc95dee881..b30ee47b4f6d9025648ca5d93ee79f993cb6f4c2 100644
|
||||
index 15dd29152cf349b5ed23f1bae0a74a8d7dbe4c3d..f44f5dd87f778f432b0028969ca5732305c98915 100644
|
||||
--- a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
|
||||
@@ -873,6 +873,7 @@ export class Query {
|
||||
@@ -883,6 +883,7 @@ export class Query {
|
||||
if (
|
||||
result.heuristic &&
|
||||
this.context.searchMode &&
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarResult.sys.mjs b/browser/components/urlbar/UrlbarResult.sys.mjs
|
||||
index 0882c0a01d17184cadb56aa1236ca97adf7f866b..4a5842eda6280205b96f9aee9b6f3b49fac7077c 100644
|
||||
index 99f331b2c6e4f8eda1bda02cbc6bc6d3f9f4a572..d504632a3f689aefb7d22b863649cb1a8bb3c6a4 100644
|
||||
--- a/browser/components/urlbar/UrlbarResult.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarResult.sys.mjs
|
||||
@@ -172,6 +172,10 @@ export class UrlbarResult {
|
||||
@@ -179,6 +179,10 @@ export class UrlbarResult {
|
||||
return this.#heuristic;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarUtils.sys.mjs b/browser/components/urlbar/UrlbarUtils.sys.mjs
|
||||
index 079c9f18550b54b2a1cc030174849896fd23234e..605bb3433b61443037659d126ba17b033e5a4394 100644
|
||||
index 7e9ede3dae5c2099c45e0221ad1cb8ebd622fc39..f82db27dbd07961ad6af7dbe2cb5d79e5f7a9828 100644
|
||||
--- a/browser/components/urlbar/UrlbarUtils.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarUtils.sys.mjs
|
||||
@@ -77,6 +77,7 @@ export var UrlbarUtils = {
|
||||
@@ -79,6 +79,7 @@ export var UrlbarUtils = {
|
||||
RESTRICT_SEARCH_KEYWORD: "restrictSearchKeyword",
|
||||
SUGGESTED_INDEX: "suggestedIndex",
|
||||
TAIL_SUGGESTION: "tailSuggestion",
|
||||
@@ -10,7 +10,7 @@ index 079c9f18550b54b2a1cc030174849896fd23234e..605bb3433b61443037659d126ba17b03
|
||||
}),
|
||||
|
||||
// Defines provider types.
|
||||
@@ -136,6 +137,7 @@ export var UrlbarUtils = {
|
||||
@@ -138,6 +139,7 @@ export var UrlbarUtils = {
|
||||
OTHER_NETWORK: 6,
|
||||
ADDON: 7,
|
||||
ACTIONS: 8,
|
||||
@@ -18,7 +18,7 @@ index 079c9f18550b54b2a1cc030174849896fd23234e..605bb3433b61443037659d126ba17b03
|
||||
}),
|
||||
|
||||
// Per-result exposure telemetry.
|
||||
@@ -547,6 +549,8 @@ export var UrlbarUtils = {
|
||||
@@ -549,6 +551,8 @@ export var UrlbarUtils = {
|
||||
return this.RESULT_GROUP.HEURISTIC_FALLBACK;
|
||||
case "UrlbarProviderHistoryUrlHeuristic":
|
||||
return this.RESULT_GROUP.HEURISTIC_HISTORY_URL;
|
||||
|
||||
@@ -1,10 +1,28 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
|
||||
index beff1d41e47efad09256459589176d96c69f7a8a..c850dad31454d61c4edb6e183db07b2d51fb9fc8 100644
|
||||
index 307b3cac259c05e616cf7d5eb1ce50a146550cd9..72252a6363154b6c5f926bf2acf3282e8396d2ad 100644
|
||||
--- a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
|
||||
@@ -585,6 +585,7 @@ export class UrlbarValueFormatter {
|
||||
this.window.requestAnimationFrame(() => {
|
||||
if (instance == this._resizeInstance) {
|
||||
@@ -76,7 +76,7 @@ export class UrlbarValueFormatter {
|
||||
if (this.#updateInstance != instance) {
|
||||
return;
|
||||
}
|
||||
- this.#formattingApplied = this.#formatURL() || this.#formatSearchAlias();
|
||||
+ this.#formattingApplied = this._formatURL() || this.#formatSearchAlias();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -370,7 +370,7 @@ export class UrlbarValueFormatter {
|
||||
* @returns {boolean}
|
||||
* True if formatting was applied and false if not.
|
||||
*/
|
||||
- #formatURL() {
|
||||
+ _formatURL() {
|
||||
let urlMetaData = this.#getUrlMetaData();
|
||||
if (!urlMetaData) {
|
||||
return false;
|
||||
@@ -639,6 +639,7 @@ export class UrlbarValueFormatter {
|
||||
this.#window.requestAnimationFrame(() => {
|
||||
if (instance == this.#resizeInstance) {
|
||||
this.#ensureFormattedHostVisible();
|
||||
+ this._formatURL();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs
|
||||
index 38e4987dc906cf3c668995aab79fc15a02834677..de9d69a4faab3cfa249de41ef573ae2ef873b348 100644
|
||||
index c58bc4871fbfb5ca924df822a09d783f21db616a..68fd73055d30ec4f4128fb8639369f07b167955a 100644
|
||||
--- a/browser/components/urlbar/UrlbarView.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarView.sys.mjs
|
||||
@@ -620,7 +620,7 @@ export class UrlbarView {
|
||||
@@ -11,7 +11,7 @@ index 38e4987dc906cf3c668995aab79fc15a02834677..de9d69a4faab3cfa249de41ef573ae2e
|
||||
// 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
|
||||
// when the view opens that can be perceived as flicker.
|
||||
@@ -2751,6 +2751,8 @@ export class UrlbarView {
|
||||
@@ -2855,6 +2855,8 @@ export class UrlbarView {
|
||||
if (row?.hasAttribute("row-selectable")) {
|
||||
row?.toggleAttribute("selected", true);
|
||||
}
|
||||
@@ -20,7 +20,7 @@ index 38e4987dc906cf3c668995aab79fc15a02834677..de9d69a4faab3cfa249de41ef573ae2e
|
||||
if (element != row) {
|
||||
row?.toggleAttribute("descendant-selected", true);
|
||||
}
|
||||
@@ -3232,7 +3234,7 @@ export class UrlbarView {
|
||||
@@ -3336,7 +3338,7 @@ export class UrlbarView {
|
||||
}
|
||||
|
||||
#enableOrDisableRowWrap() {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
|
||||
index 7e50d7f5512cb4304d6fd2ecb6952fbff0b8f98e..ba09805f07b754b4b36d5a650252d5578184d031 100644
|
||||
index bd453da1b0eca276f319aadf451258e7db021365..da64e88eb58ba1b15c31034684f9d259339f4438 100644
|
||||
--- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs
|
||||
+++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
|
||||
@@ -250,7 +250,7 @@ export const PREFS_CONFIG = new Map([
|
||||
@@ -251,7 +251,7 @@ export const PREFS_CONFIG = new Map([
|
||||
"showSponsoredTopSites",
|
||||
{
|
||||
title: "Show sponsored top sites",
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
|
||||
index bb06e9224a4e195122d8a47ccf97c3481342cf86..959862e95ec00c7dc18256bd2572c1d7285415d4 100644
|
||||
index 6bb2e64906d6fe173c9129dd9c9c80b5323416b1..9f1fb4764c8c13a02cf0d384cfa71cc16e3c8701 100644
|
||||
--- a/browser/installer/package-manifest.in
|
||||
+++ b/browser/installer/package-manifest.in
|
||||
@@ -372,17 +372,17 @@ bin/libfreebl_64int_3.so
|
||||
@@ -373,17 +373,17 @@ bin/libfreebl_64int_3.so
|
||||
; [MaintenanceService]
|
||||
;
|
||||
#ifdef MOZ_MAINTENANCE_SERVICE
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/installer/windows/nsis/defines.nsi.in b/browser/installer/windows/nsis/defines.nsi.in
|
||||
index 51743f6157d69e9303ed480254c199791f1a4db8..2e113512c2f0b094aa50a4f0499607ad9eb7eaf8 100644
|
||||
index c6bb41695d70d17e5691e0d1856b79f7111d5026..8a9393a79a60aca23f80fc989fe2ae333ba54e39 100644
|
||||
--- a/browser/installer/windows/nsis/defines.nsi.in
|
||||
+++ b/browser/installer/windows/nsis/defines.nsi.in
|
||||
@@ -90,7 +90,7 @@
|
||||
@@ -11,7 +11,7 @@ index 51743f6157d69e9303ed480254c199791f1a4db8..2e113512c2f0b094aa50a4f0499607ad
|
||||
|
||||
# ARCH is used when it is necessary to differentiate the x64 registry keys from
|
||||
# the x86 registry keys (e.g. the uninstall registry key).
|
||||
@@ -153,7 +153,7 @@ VIAddVersionKey "ProductVersion" "${AppVersion}"
|
||||
@@ -152,7 +152,7 @@ VIAddVersionKey "ProductVersion" "${AppVersion}"
|
||||
!define APPROXIMATE_REQUIRED_SPACE_MB "145"
|
||||
|
||||
# Constants for parts of the telemetry submission URL
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/installer/windows/nsis/installer.nsi b/browser/installer/windows/nsis/installer.nsi
|
||||
index 4ecf1ea7e325b23a901ec75687c6b959085c8207..28c4b462dab0c4830a4bfb4c9cdf82a8aa919456 100755
|
||||
index e877b4b8a8cc6fc233025d0b58de50a68ecb9fd9..9d7d9064d0b4c62a3de3b81e852b2b49170bf8a3 100755
|
||||
--- a/browser/installer/windows/nsis/installer.nsi
|
||||
+++ b/browser/installer/windows/nsis/installer.nsi
|
||||
@@ -842,7 +842,7 @@ Section "-InstallEndCleanup"
|
||||
@@ -836,7 +836,7 @@ Section "-InstallEndCleanup"
|
||||
; When we're using the GUI, .onGUIEnd sends the ping, but of course that isn't
|
||||
; invoked when we're running silently.
|
||||
${If} ${Silent}
|
||||
@@ -11,7 +11,7 @@ index 4ecf1ea7e325b23a901ec75687c6b959085c8207..28c4b462dab0c4830a4bfb4c9cdf82a8
|
||||
${EndIf}
|
||||
SectionEnd
|
||||
|
||||
@@ -1970,5 +1970,5 @@ FunctionEnd
|
||||
@@ -1964,5 +1964,5 @@ FunctionEnd
|
||||
|
||||
Function .onGUIEnd
|
||||
${OnEndCommon}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
diff --git a/browser/installer/windows/nsis/uninstaller.nsi b/browser/installer/windows/nsis/uninstaller.nsi
|
||||
old mode 100755
|
||||
new mode 100644
|
||||
index fd104f8ab0bd51d6a99c121b60e2695a54b0dfd0..9b117e5a1f5e8adac7d22cd65154529418fd2e5b
|
||||
index 4eecccea6e053073fafad35cc97b326f7d0f5162..e4d077415294d456539637868144331ea9a46753
|
||||
--- a/browser/installer/windows/nsis/uninstaller.nsi
|
||||
+++ b/browser/installer/windows/nsis/uninstaller.nsi
|
||||
@@ -519,6 +519,7 @@ Section "Uninstall"
|
||||
@@ -514,6 +514,7 @@ Section "Uninstall"
|
||||
${un.RegCleanFileHandler} ".svg" "FirefoxHTML-$AppUserModelID"
|
||||
${un.RegCleanFileHandler} ".webp" "FirefoxHTML-$AppUserModelID"
|
||||
${un.RegCleanFileHandler} ".avif" "FirefoxHTML-$AppUserModelID"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/modules/URILoadingHelper.sys.mjs b/browser/modules/URILoadingHelper.sys.mjs
|
||||
index 04d0b47099648cfd00e72ef260d44628718809ee..49cd0215778a33a80d1f45b8e2701410d016a5a3 100644
|
||||
index a3a84f96e54e5b74ad15f3825b380c30c117695f..ca702841c1df404a6f270ac08f962c8a225549d8 100644
|
||||
--- a/browser/modules/URILoadingHelper.sys.mjs
|
||||
+++ b/browser/modules/URILoadingHelper.sys.mjs
|
||||
@@ -541,7 +541,7 @@ export const URILoadingHelper = {
|
||||
@@ -542,7 +542,7 @@ export const URILoadingHelper = {
|
||||
// page. If a load request bounces off for the currently selected tab,
|
||||
// we'll open a new tab instead.
|
||||
let tab = w.gBrowser.getTabForBrowser(targetBrowser);
|
||||
@@ -11,7 +11,7 @@ index 04d0b47099648cfd00e72ef260d44628718809ee..49cd0215778a33a80d1f45b8e2701410
|
||||
where = "tab";
|
||||
targetBrowser = null;
|
||||
} else if (
|
||||
@@ -971,7 +971,7 @@ export const URILoadingHelper = {
|
||||
@@ -972,7 +972,7 @@ export const URILoadingHelper = {
|
||||
ignoreQueryString || replaceQueryString,
|
||||
ignoreFragmentWhenComparing
|
||||
);
|
||||
@@ -20,7 +20,7 @@ index 04d0b47099648cfd00e72ef260d44628718809ee..49cd0215778a33a80d1f45b8e2701410
|
||||
for (let i = 0; i < browsers.length; i++) {
|
||||
let browser = browsers[i];
|
||||
let browserCompare = cleanURL(
|
||||
@@ -1017,7 +1017,7 @@ export const URILoadingHelper = {
|
||||
@@ -1018,7 +1018,7 @@ export const URILoadingHelper = {
|
||||
}
|
||||
|
||||
if (!doAdopt) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css
|
||||
index b0ec88f361399cea255ef8fb6c7f2b87779a8e04..5b0d0bd663c309be3ddd0e946e1681b66938ee4d 100644
|
||||
index 646cf238ebfbd5ac1826cf47f578f66aa020199f..ba5a1950f683c4d8cb836ee9cd466c0b446f2241 100644
|
||||
--- a/browser/themes/linux/browser.css
|
||||
+++ b/browser/themes/linux/browser.css
|
||||
@@ -14,7 +14,6 @@
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/themes/osx/browser.css b/browser/themes/osx/browser.css
|
||||
index 0a15e3d60d408f119bd03007567d5dd1fa178c36..443901657296d0d15a95e1d39e826b1c008aac4d 100644
|
||||
index 79f62b14809196e6ac073b8e560331e96be5d990..dcec04606e78c66673fb602b6a986321d20e1d4c 100644
|
||||
--- a/browser/themes/osx/browser.css
|
||||
+++ b/browser/themes/osx/browser.css
|
||||
@@ -38,7 +38,7 @@
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
.titlebar-buttonbox {
|
||||
&:-moz-locale-dir(ltr) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/shared/browser-shared.css b/browser/themes/shared/browser-shared.css
|
||||
index 2b013ee77bb50db11e73152bd0265dd86e40b726..dc0ba2c8651470bcd81439953adbaca26a4a5b8c 100644
|
||||
index 3cecc295f3ac764ed07094021372d35107df78ed..760f8bdcff87a6b803b115b249269438a27f8d80 100644
|
||||
--- a/browser/themes/shared/browser-shared.css
|
||||
+++ b/browser/themes/shared/browser-shared.css
|
||||
@@ -102,7 +102,7 @@ body {
|
||||
@@ -20,7 +20,7 @@ index 2b013ee77bb50db11e73152bd0265dd86e40b726..dc0ba2c8651470bcd81439953adbaca2
|
||||
}
|
||||
|
||||
/* Themes define a set of toolbox foreground and background colors which we
|
||||
@@ -282,13 +280,13 @@ body {
|
||||
@@ -281,13 +279,13 @@ body {
|
||||
|
||||
@media (-moz-platform: macos) and (not (-moz-mac-rtl)) {
|
||||
&:-moz-locale-dir(ltr) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/shared/identity-block/identity-block.css b/browser/themes/shared/identity-block/identity-block.css
|
||||
index d542e962d42b17140888e299ed43a838047ee48c..806bc4f9d7b7557abf316a84858046e04c4f7ff5 100644
|
||||
index 34e9206ff45592db2b1b24568f1f6f1bf16b4c3a..6fa3f13dd18f90bcc0c715c4896617fdfce4887e 100644
|
||||
--- a/browser/themes/shared/identity-block/identity-block.css
|
||||
+++ b/browser/themes/shared/identity-block/identity-block.css
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn
|
||||
index 6085ce0614c9ea7d650c9526b295953f46b30cb6..06b4af758d9ae033dd0b7436f08e6748047c8bbe 100644
|
||||
index ff198352720d7935b497e43f3e6b8ca04905e885..63e09db981a7ae35b1bb2c610133f624e8f61b74 100644
|
||||
--- a/browser/themes/shared/jar.inc.mn
|
||||
+++ b/browser/themes/shared/jar.inc.mn
|
||||
@@ -317,3 +317,5 @@
|
||||
@@ -323,3 +323,5 @@
|
||||
|
||||
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)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/shared/tabbrowser/content-area.css b/browser/themes/shared/tabbrowser/content-area.css
|
||||
index db68a04d85c12a383ed33b459b9c8d942fe916f7..2941cf4010e24b31a3d9b2194fe9536f23063dbd 100644
|
||||
index 55f33b3f630ca0eea7e4bde19f9875802c8aec78..f11fdaab05baf85fe2b56fa07442ded3c9641abc 100644
|
||||
--- a/browser/themes/shared/tabbrowser/content-area.css
|
||||
+++ b/browser/themes/shared/tabbrowser/content-area.css
|
||||
@@ -140,7 +140,6 @@
|
||||
@@ -10,7 +10,7 @@ index db68a04d85c12a383ed33b459b9c8d942fe916f7..2941cf4010e24b31a3d9b2194fe9536f
|
||||
}
|
||||
|
||||
browser[type="content"] {
|
||||
@@ -323,7 +322,7 @@
|
||||
@@ -377,7 +376,7 @@ split-view-footer {
|
||||
|
||||
.dialogStack {
|
||||
z-index: var(--browser-stack-z-index-dialog-stack);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/shared/tabbrowser/ctrlTab.css b/browser/themes/shared/tabbrowser/ctrlTab.css
|
||||
index 259e11f3c9a761e158dc32a3ecb9ee90c11d27c6..c5e30314090fe8f33b37c809bcf871c7b8c4d3da 100644
|
||||
index ffda4922c675f6159c825334cba9d49658d316ba..7b3d4d2b5c6d732a1d0074e05cc48131fe57c630 100644
|
||||
--- a/browser/themes/shared/tabbrowser/ctrlTab.css
|
||||
+++ b/browser/themes/shared/tabbrowser/ctrlTab.css
|
||||
@@ -11,6 +11,7 @@
|
||||
@@ -8,5 +8,5 @@ index 259e11f3c9a761e158dc32a3ecb9ee90c11d27c6..c5e30314090fe8f33b37c809bcf871c7
|
||||
-moz-window-shadow: none;
|
||||
+ --panel-shadow-margin: 0;
|
||||
@media not (-moz-platform: macos) {
|
||||
font-weight: bold;
|
||||
font-weight: var(--font-weight-bold);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css
|
||||
index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2bff889716 100644
|
||||
index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..f8e108d2c1c71070375fdae12df432311b0081e1 100644
|
||||
--- a/browser/themes/shared/tabbrowser/tabs.css
|
||||
+++ b/browser/themes/shared/tabbrowser/tabs.css
|
||||
@@ -21,7 +21,7 @@
|
||||
@@ -23,7 +23,7 @@ index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2b
|
||||
--tab-selected-bgcolor: var(--toolbar-bgcolor);
|
||||
--tab-selected-color-scheme: var(--toolbar-color-scheme);
|
||||
&[lwt-tab-selected="light"] {
|
||||
@@ -267,7 +267,6 @@
|
||||
@@ -285,7 +285,6 @@
|
||||
}
|
||||
|
||||
:root:not([uidensity="compact"], [sidebar-expand-on-hover]) &[pinned] {
|
||||
@@ -31,7 +31,7 @@ index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2b
|
||||
}
|
||||
|
||||
&:is([selected], [multiselected]) {
|
||||
@@ -281,6 +280,7 @@
|
||||
@@ -299,6 +298,7 @@
|
||||
border-radius: inherit;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
@@ -39,7 +39,7 @@ index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2b
|
||||
|
||||
&::before {
|
||||
position: absolute;
|
||||
@@ -480,14 +480,11 @@
|
||||
@@ -498,14 +498,11 @@
|
||||
.tab-icon-image {
|
||||
-moz-context-properties: fill, stroke;
|
||||
fill: currentColor;
|
||||
@@ -55,7 +55,7 @@ index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2b
|
||||
opacity: 0.5;
|
||||
/* Fade the favicon out */
|
||||
transition-property: filter, opacity;
|
||||
@@ -504,10 +501,6 @@
|
||||
@@ -522,10 +519,6 @@
|
||||
/* stylelint-disable-next-line media-query-no-invalid */
|
||||
@media -moz-pref("browser.tabs.fadeOutExplicitlyUnloadedTabs") {
|
||||
&[pending][discarded] {
|
||||
@@ -66,7 +66,7 @@ index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2b
|
||||
opacity: 0.5;
|
||||
/* Fade the favicon out */
|
||||
transition-property: filter, opacity;
|
||||
@@ -575,7 +568,7 @@
|
||||
@@ -593,7 +586,7 @@
|
||||
z-index: 1; /* Overlay tab title */
|
||||
|
||||
#tabbrowser-tabs[orient="vertical"] & {
|
||||
@@ -75,7 +75,7 @@ index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2b
|
||||
}
|
||||
|
||||
&[crashed] {
|
||||
@@ -583,7 +576,7 @@
|
||||
@@ -601,7 +594,7 @@
|
||||
}
|
||||
|
||||
#tabbrowser-tabs[orient="vertical"]:not([expanded]) &:not([crashed]),
|
||||
@@ -84,7 +84,7 @@ index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2b
|
||||
&[soundplaying] {
|
||||
list-style-image: url("chrome://browser/skin/tabbrowser/tab-audio-playing-small.svg");
|
||||
}
|
||||
@@ -640,7 +633,7 @@
|
||||
@@ -658,7 +651,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2b
|
||||
&[crashed] {
|
||||
display: revert;
|
||||
}
|
||||
@@ -741,7 +734,7 @@
|
||||
@@ -759,7 +752,7 @@
|
||||
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. */
|
||||
#tabbrowser-tabs[orient="horizontal"] &:not([pinned]):not([crashed]),
|
||||
@@ -102,7 +102,7 @@ index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2b
|
||||
&:is([soundplaying], [muted], [activemedia-blocked]) {
|
||||
display: flex;
|
||||
}
|
||||
@@ -1245,7 +1238,7 @@ tab-group {
|
||||
@@ -1446,7 +1439,7 @@ tab-group {
|
||||
}
|
||||
|
||||
#tabbrowser-tabs[orient="vertical"][expanded] {
|
||||
@@ -111,7 +111,7 @@ index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2b
|
||||
&[movingtab][movingtab-addToGroup]:not([movingtab-group], [movingtab-ungroup]) .tabbrowser-tab:is(:active, [multiselected]) {
|
||||
margin-inline-start: var(--space-medium);
|
||||
}
|
||||
@@ -1692,7 +1685,7 @@ tab-group {
|
||||
@@ -1893,7 +1886,7 @@ tab-group {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,7 +120,7 @@ index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2b
|
||||
#vertical-tabs-newtab-button {
|
||||
appearance: none;
|
||||
min-height: var(--tab-min-height);
|
||||
@@ -1703,7 +1696,7 @@ tab-group {
|
||||
@@ -1904,7 +1897,7 @@ tab-group {
|
||||
margin-inline: var(--tab-inner-inline-margin);
|
||||
|
||||
#tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text {
|
||||
@@ -129,7 +129,7 @@ index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2b
|
||||
}
|
||||
|
||||
&:hover {
|
||||
@@ -1727,7 +1720,7 @@ tab-group {
|
||||
@@ -1928,7 +1921,7 @@ tab-group {
|
||||
* 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.
|
||||
*/
|
||||
@@ -138,7 +138,7 @@ index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2b
|
||||
margin-block: var(--tab-block-margin);
|
||||
}
|
||||
|
||||
@@ -1915,7 +1908,6 @@ tab-group {
|
||||
@@ -2116,7 +2109,6 @@ tab-group {
|
||||
|
||||
&:not([expanded]) {
|
||||
.tabbrowser-tab[pinned] {
|
||||
@@ -146,7 +146,7 @@ index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2b
|
||||
}
|
||||
|
||||
.tab-background {
|
||||
@@ -1955,8 +1947,8 @@ tab-group {
|
||||
@@ -2156,8 +2148,8 @@ tab-group {
|
||||
display: block;
|
||||
position: absolute;
|
||||
inset: auto;
|
||||
@@ -157,7 +157,7 @@ index 13edfa4a6975828ab8dbdce15215f2e4ee548249..9fc2cd93235eb14d8d8d5a7611ec8f2b
|
||||
|
||||
&:-moz-window-inactive {
|
||||
background-image:
|
||||
@@ -2075,7 +2067,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
|
||||
@@ -2276,7 +2268,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
|
||||
list-style-image: url(chrome://global/skin/icons/plus.svg);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css
|
||||
index 15dcfbc95afab9f28bd58379da0ef3e24d1b4595..73827cc5cffe47099feea36cbeffb547e955b37e 100644
|
||||
index 45a87b96db14f64e0d8a3a3aae07f76c8f7e765f..d75f61cb2d27205aa2c47cf902d38e26098fbf2c 100644
|
||||
--- a/browser/themes/shared/urlbar-searchbar.css
|
||||
+++ b/browser/themes/shared/urlbar-searchbar.css
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/shared/urlbarView.css b/browser/themes/shared/urlbarView.css
|
||||
index e0a05846eb0a329fc58b660f806912a1afe7c6c9..0d02e227a84ff4229104dd9cf9cd20f50a8d136c 100644
|
||||
index d59a4e8514c3e8f16c2512abacf8e95d7e7255c5..5c226bed71203dc39723f07107b3de89e0d1776f 100644
|
||||
--- a/browser/themes/shared/urlbarView.css
|
||||
+++ b/browser/themes/shared/urlbarView.css
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
@@ -692,6 +692,10 @@
|
||||
list-style-image: url('container-tab.svg') !important;
|
||||
}
|
||||
|
||||
#PanelUI-zen-gradient-generator-color-toggle-algo {
|
||||
list-style-image: url('algorithm.svg');
|
||||
}
|
||||
|
||||
#appMenuClearRecentHistory {
|
||||
list-style-image: url('edit-delete.svg') !important;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
#ifdef XP_WIN
|
||||
* skin/classic/browser/zen-icons/algorithm.svg (../shared/zen-icons/lin/algorithm.svg)
|
||||
* skin/classic/browser/zen-icons/arrow-down.svg (../shared/zen-icons/lin/arrow-down.svg)
|
||||
* skin/classic/browser/zen-icons/arrow-left.svg (../shared/zen-icons/lin/arrow-left.svg)
|
||||
* skin/classic/browser/zen-icons/arrow-right.svg (../shared/zen-icons/lin/arrow-right.svg)
|
||||
@@ -131,6 +132,7 @@
|
||||
* skin/classic/browser/zen-icons/zoom-out.svg (../shared/zen-icons/lin/zoom-out.svg)
|
||||
#endif
|
||||
#ifdef XP_MACOSX
|
||||
* skin/classic/browser/zen-icons/algorithm.svg (../shared/zen-icons/lin/algorithm.svg)
|
||||
* skin/classic/browser/zen-icons/arrow-down.svg (../shared/zen-icons/lin/arrow-down.svg)
|
||||
* skin/classic/browser/zen-icons/arrow-left.svg (../shared/zen-icons/lin/arrow-left.svg)
|
||||
* skin/classic/browser/zen-icons/arrow-right.svg (../shared/zen-icons/lin/arrow-right.svg)
|
||||
@@ -259,6 +261,7 @@
|
||||
* skin/classic/browser/zen-icons/zoom-out.svg (../shared/zen-icons/lin/zoom-out.svg)
|
||||
#endif
|
||||
#ifdef XP_LINUX
|
||||
* skin/classic/browser/zen-icons/algorithm.svg (../shared/zen-icons/lin/algorithm.svg)
|
||||
* skin/classic/browser/zen-icons/arrow-down.svg (../shared/zen-icons/lin/arrow-down.svg)
|
||||
* skin/classic/browser/zen-icons/arrow-left.svg (../shared/zen-icons/lin/arrow-left.svg)
|
||||
* skin/classic/browser/zen-icons/arrow-right.svg (../shared/zen-icons/lin/arrow-right.svg)
|
||||
|
||||
5
src/browser/themes/shared/zen-icons/lin/algorithm.svg
Normal file
5
src/browser/themes/shared/zen-icons/lin/algorithm.svg
Normal 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 xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><g stroke-linecap="round" stroke-width="1.5" fill="none" stroke="context-fill" stroke-opacity="context-fill-opacity" stroke-linejoin="round" class="nc-icon-wrapper"><path d="M4.75 15.25C5.99264 15.25 7 14.2426 7 13C7 11.7574 5.99264 10.75 4.75 10.75C3.50736 10.75 2.5 11.7574 2.5 13C2.5 14.2426 3.50736 15.25 4.75 15.25Z"/><path d="M13.25 15.25C14.4926 15.25 15.5 14.2426 15.5 13C15.5 11.7574 14.4926 10.75 13.25 10.75C12.0074 10.75 11 11.7574 11 13C11 14.2426 12.0074 15.25 13.25 15.25Z"/><path d="M9 7.25C10.2426 7.25 11.25 6.24264 11.25 5C11.25 3.75736 10.2426 2.75 9 2.75C7.75736 2.75 6.75 3.75736 6.75 5C6.75 6.24264 7.75736 7.25 9 7.25Z"/></g></svg>
|
||||
@@ -2,4 +2,4 @@
|
||||
# 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 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="18px" height="18px" viewBox="0 0 18 18"><path d="M17.25,8.25h-1.292c-.146-1.369-.69-2.619-1.512-3.637l1.583-1.583c.293-.293,.293-.768,0-1.061s-.767-.294-1.061,0l-1.583,1.583c-1.018-.821-2.268-1.365-3.636-1.511V.75c0-.414-.336-.75-.75-.75s-.75,.336-.75,.75v1.292c-1.368,.146-2.618,.69-3.636,1.511l-1.583-1.583c-.293-.293-.768-.293-1.061,0s-.293,.768,0,1.061l1.583,1.583c-.821,1.018-1.365,2.268-1.511,3.637H.75c-.414,0-.75,.336-.75,.75s.336,.75,.75,.75h1.292c.146,1.369,.69,2.619,1.511,3.637l-1.583,1.583c-.293,.293-.293,.768,0,1.061,.146,.146,.338,.22,.53,.22,.191,0,.384-.073,.53-.22l1.583-1.583c1.018,.821,2.268,1.365,3.636,1.511v1.292c0,.414,.336,.75,.75,.75s.75-.336,.75-.75v-1.292c1.368-.146,2.618-.69,3.636-1.511l1.583,1.583c.146,.146,.338,.22,.53,.22s.384-.073,.53-.22c.293-.293,.293-.768,0-1.061l-1.583-1.583c.821-1.018,1.365-2.268,1.512-3.637h1.292c.414,0,.75-.336,.75-.75s-.336-.75-.75-.75Zm-11.25,1.75c-.552,0-1-.448-1-1s.448-1,1-1,1,.448,1,1-.448,1-1,1Zm3,2c-.828,0-1.5-.672-1.5-1.5,0-.276,.224-.5,.5-.5h2c.276,0,.5,.224,.5,.5,0,.828-.672,1.5-1.5,1.5Zm2-3c0-.552,.448-1,1-1s1,.448,1,1-.448,1-1,1-1-.448-1-1Z" fill="currentColor"></path></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="18px" height="18px" viewBox="0 0 18 18"><path d="M17.25,8.25h-1.292c-.146-1.369-.69-2.619-1.512-3.637l1.583-1.583c.293-.293,.293-.768,0-1.061s-.767-.294-1.061,0l-1.583,1.583c-1.018-.821-2.268-1.365-3.636-1.511V.75c0-.414-.336-.75-.75-.75s-.75,.336-.75,.75v1.292c-1.368,.146-2.618,.69-3.636,1.511l-1.583-1.583c-.293-.293-.768-.293-1.061,0s-.293,.768,0,1.061l1.583,1.583c-.821,1.018-1.365,2.268-1.511,3.637H.75c-.414,0-.75,.336-.75,.75s.336,.75,.75,.75h1.292c.146,1.369,.69,2.619,1.511,3.637l-1.583,1.583c-.293,.293-.293,.768,0,1.061,.146,.146,.338,.22,.53,.22,.191,0,.384-.073,.53-.22l1.583-1.583c1.018,.821,2.268,1.365,3.636,1.511v1.292c0,.414,.336,.75,.75,.75s.75-.336,.75-.75v-1.292c1.368-.146,2.618-.69,3.636-1.511l1.583,1.583c.146,.146,.338,.22,.53,.22s.384-.073,.53-.22c.293-.293,.293-.768,0-1.061l-1.583-1.583c.821-1.018,1.365-2.268,1.512-3.637h1.292c.414,0,.75-.336,.75-.75s-.336-.75-.75-.75Zm-11.25,1.75c-.552,0-1-.448-1-1s.448-1,1-1,1,.448,1,1-.448,1-1,1Zm3,2c-.828,0-1.5-.672-1.5-1.5,0-.276,.224-.5,.5-.5h2c.276,0,.5,.224,.5,.5,0,.828-.672,1.5-1.5,1.5Zm2-3c0-.552,.448-1,1-1s1,.448,1,1-.448,1-1,1-1-.448-1-1Z" fill="context-fill"></path></svg>
|
||||
@@ -2,4 +2,4 @@
|
||||
# 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 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="18px" height="18px" viewBox="0 0 18 18"><path d="M16.705,10.223c-.246-.183-.578-.197-.838-.037-.868,.532-1.859,.813-2.867,.813-3.033,0-5.5-2.467-5.5-5.5,0-1.146,.354-2.247,1.023-3.186,.177-.249,.186-.581,.021-.839-.164-.258-.467-.386-.77-.334C3.994,1.847,1.25,5.152,1.25,9c0,4.411,3.589,8,8,8,3.638,0,6.819-2.461,7.735-5.986,.077-.296-.034-.609-.28-.791Z" fill="currentColor"></path><path d="M12.743,4.492l-.946-.315-.316-.947c-.102-.306-.609-.306-.711,0l-.316,.947-.946,.315c-.153,.051-.257,.194-.257,.356s.104,.305,.257,.356l.946,.315,.316,.947c.051,.153,.194,.256,.355,.256s.305-.104,.355-.256l.316-.947,.946-.315c.153-.051,.257-.194,.257-.356s-.104-.305-.257-.356Z" fill="currentColor" data-color="color-2"></path><circle cx="14.25" cy="7.75" r=".75" fill="currentColor" data-color="color-2"></circle></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="18px" height="18px" viewBox="0 0 18 18"><path d="M16.705,10.223c-.246-.183-.578-.197-.838-.037-.868,.532-1.859,.813-2.867,.813-3.033,0-5.5-2.467-5.5-5.5,0-1.146,.354-2.247,1.023-3.186,.177-.249,.186-.581,.021-.839-.164-.258-.467-.386-.77-.334C3.994,1.847,1.25,5.152,1.25,9c0,4.411,3.589,8,8,8,3.638,0,6.819-2.461,7.735-5.986,.077-.296-.034-.609-.28-.791Z" fill="context-fill"></path><path d="M12.743,4.492l-.946-.315-.316-.947c-.102-.306-.609-.306-.711,0l-.316,.947-.946,.315c-.153,.051-.257,.194-.257,.356s.104,.305,.257,.356l.946,.315,.316,.947c.051,.153,.194,.256,.355,.256s.305-.104,.355-.256l.316-.947,.946-.315c.153-.051,.257-.194,.257-.356s-.104-.305-.257-.356Z" fill="currentColor" data-color="color-2"></path><circle cx="14.25" cy="7.75" r=".75" fill="currentColor" data-color="color-2"></circle></svg>
|
||||
@@ -2,4 +2,4 @@
|
||||
# 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 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="18px" height="18px" viewBox="0 0 18 18"><path d="M3.025,5.623c.068,.204,.26,.342,.475,.342s.406-.138,.475-.342l.421-1.263,1.263-.421c.204-.068,.342-.259,.342-.474s-.138-.406-.342-.474l-1.263-.421-.421-1.263c-.137-.408-.812-.408-.949,0l-.421,1.263-1.263,.421c-.204,.068-.342,.259-.342,.474s.138,.406,.342,.474l1.263,.421,.421,1.263Z" fill="currentColor" data-color="color-2"></path><path d="M16.525,8.803l-4.535-1.793-1.793-4.535c-.227-.572-1.168-.572-1.395,0l-1.793,4.535-4.535,1.793c-.286,.113-.475,.39-.475,.697s.188,.584,.475,.697l4.535,1.793,1.793,4.535c.113,.286,.39,.474,.697,.474s.584-.188,.697-.474l1.793-4.535,4.535-1.793c.286-.113,.475-.39,.475-.697s-.188-.584-.475-.697Z" fill="currentColor"></path></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="18px" height="18px" viewBox="0 0 18 18"><path d="M3.025,5.623c.068,.204,.26,.342,.475,.342s.406-.138,.475-.342l.421-1.263,1.263-.421c.204-.068,.342-.259,.342-.474s-.138-.406-.342-.474l-1.263-.421-.421-1.263c-.137-.408-.812-.408-.949,0l-.421,1.263-1.263,.421c-.204,.068-.342,.259-.342,.474s.138,.406,.342,.474l1.263,.421,.421,1.263Z" fill="context-fill" data-color="color-2"></path><path d="M16.525,8.803l-4.535-1.793-1.793-4.535c-.227-.572-1.168-.572-1.395,0l-1.793,4.535-4.535,1.793c-.286,.113-.475,.39-.475,.697s.188,.584,.475,.697l4.535,1.793,1.793,4.535c.113,.286,.39,.474,.697,.474s.584-.188,.697-.474l1.793-4.535,4.535-1.793c.286-.113,.475-.39,.475-.697s-.188-.584-.475-.697Z" fill="currentColor"></path></svg>
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css
|
||||
index e1a79cd22180738d2ca16e9a6c5591499d337325..d36996359bfa4dd7d98c4f5aeb192c7b144339bb 100644
|
||||
index b114781254018a27cd559c28d5d469fbab8673b5..79e6e21dd6e0a63237850bd315558540f050793c 100644
|
||||
--- a/browser/themes/windows/browser.css
|
||||
+++ b/browser/themes/windows/browser.css
|
||||
@@ -31,7 +31,6 @@
|
||||
@@ -39,7 +39,6 @@
|
||||
/* stylelint-disable-next-line media-query-no-invalid */
|
||||
@media -moz-pref("widget.windows.mica.toplevel-backdrop", 2) {
|
||||
/* For acrylic, do the same we do for popups to guarantee some contrast */
|
||||
@@ -10,7 +10,7 @@ index e1a79cd22180738d2ca16e9a6c5591499d337325..d36996359bfa4dd7d98c4f5aeb192c7b
|
||||
}
|
||||
|
||||
/* Using a semitransparent background preserves the tinting from the backdrop.
|
||||
@@ -60,14 +59,13 @@
|
||||
@@ -68,14 +67,13 @@
|
||||
}
|
||||
|
||||
/* This is needed for Windows 10, see bug 1961257 */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/devtools/server/actors/animation-type-longhand.js b/devtools/server/actors/animation-type-longhand.js
|
||||
index a0026f953e8383741221d60ed5c02d0c12740f09..fd5c49d0b8997f29d3dee8dc23e2c373341eb972 100644
|
||||
index 76c58a23422b923e191870f27090c7fc6d63884e..b19f47d31195774cec2c7e67903c892aa1329f3d 100644
|
||||
--- a/devtools/server/actors/animation-type-longhand.js
|
||||
+++ b/devtools/server/actors/animation-type-longhand.js
|
||||
@@ -342,6 +342,7 @@ exports.ANIMATION_TYPE_FOR_LONGHANDS = [
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/devtools/startup/DevToolsStartup.sys.mjs b/devtools/startup/DevToolsStartup.sys.mjs
|
||||
index 7d26af162be5620649ff36d7cf7d3835a8ac7a20..c0fbd46c22f1eacc82058919714174d15e8106f1 100644
|
||||
index 50fd07c1365ad25dc31c806f11751368f0d27a46..e26e90ece2d5dc42312f95661b5a38eec3556986 100644
|
||||
--- a/devtools/startup/DevToolsStartup.sys.mjs
|
||||
+++ b/devtools/startup/DevToolsStartup.sys.mjs
|
||||
@@ -816,6 +816,7 @@ DevToolsStartup.prototype = {
|
||||
@@ -829,6 +829,7 @@ DevToolsStartup.prototype = {
|
||||
// account (see bug 832984).
|
||||
const mainKeyset = doc.getElementById("mainKeyset");
|
||||
mainKeyset.parentNode.insertBefore(keyset, mainKeyset);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/docshell/base/nsAboutRedirector.cpp b/docshell/base/nsAboutRedirector.cpp
|
||||
index 625640eef45baba74255c00c603f0834e1f0aa2c..8b7893cf3848edf9121f7cbefcc3a1c76894fa37 100644
|
||||
index 49779b7cc79a602e764c8346e17a02310808aab8..1b1000cf7177bd83ca6d6c484a1c3b48c7216fc9 100644
|
||||
--- a/docshell/base/nsAboutRedirector.cpp
|
||||
+++ b/docshell/base/nsAboutRedirector.cpp
|
||||
@@ -118,7 +118,7 @@ static const RedirEntry kRedirMap[] = {
|
||||
@@ -117,7 +117,7 @@ static const RedirEntry kRedirMap[] = {
|
||||
{"crashes", "chrome://global/content/crashes.html",
|
||||
nsIAboutModule::IS_SECURE_CHROME_UI},
|
||||
#endif
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp
|
||||
index 55d24fe16311a286813f7668a227d2ef0cc7e5d7..1a7c2352daf1e04e38a8fb81f80a1f9a58ba2cb5 100644
|
||||
index 5a890d76ef8398c1a8dc6d84a6c43ec7e2b7c39e..aa25c68e36010004b95c14b8a8a88ca7e85de84d 100644
|
||||
--- a/dom/base/Document.cpp
|
||||
+++ b/dom/base/Document.cpp
|
||||
@@ -465,6 +465,7 @@
|
||||
@@ -461,6 +461,7 @@
|
||||
#include "prtime.h"
|
||||
#include "prtypes.h"
|
||||
#include "xpcpublic.h"
|
||||
@@ -10,7 +10,7 @@ index 55d24fe16311a286813f7668a227d2ef0cc7e5d7..1a7c2352daf1e04e38a8fb81f80a1f9a
|
||||
|
||||
// clang-format off
|
||||
#include "mozilla/Encoding.h"
|
||||
@@ -3442,6 +3443,10 @@ void Document::FillStyleSetUserAndUASheets() {
|
||||
@@ -3446,6 +3447,10 @@ void Document::FillStyleSetUserAndUASheets() {
|
||||
for (StyleSheet* sheet : *sheetService->UserStyleSheets()) {
|
||||
styleSet.AppendStyleSheet(*sheet);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/dom/base/use_counter_metrics.yaml b/dom/base/use_counter_metrics.yaml
|
||||
index 81d73c33af8c95e6f687c05354fb8a0e894dcd44..775742e1e4f84618dce45cbcb14229dc6c4f2b64 100644
|
||||
index 0635fe4dc5bf231300c1b53b093e2200c4fde134..c1d868cb7ebcf322885d562217ff9c03b16f7119 100644
|
||||
--- a/dom/base/use_counter_metrics.yaml
|
||||
+++ b/dom/base/use_counter_metrics.yaml
|
||||
@@ -21086,6 +21086,22 @@ use.counter.css.page:
|
||||
@@ -21154,6 +21154,22 @@ use.counter.css.page:
|
||||
send_in_pings:
|
||||
- use-counters
|
||||
|
||||
@@ -25,7 +25,7 @@ index 81d73c33af8c95e6f687c05354fb8a0e894dcd44..775742e1e4f84618dce45cbcb14229dc
|
||||
css_transform_origin:
|
||||
type: counter
|
||||
description: >
|
||||
@@ -33056,6 +33072,22 @@ use.counter.css.doc:
|
||||
@@ -33124,6 +33140,22 @@ use.counter.css.doc:
|
||||
send_in_pings:
|
||||
- use-counters
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/dom/media/mediacontrol/MediaStatusManager.cpp b/dom/media/mediacontrol/MediaStatusManager.cpp
|
||||
index 9d62b302fb519df9c00e26e8876dc6adcbc0b448..ece3509d2a99dee1cf7c22749b38959340c85976 100644
|
||||
index c1282b8b1d99327df972c8f0aa848816fcbc4b2b..acaaff389838886267f96993a7f0d27950f08624 100644
|
||||
--- a/dom/media/mediacontrol/MediaStatusManager.cpp
|
||||
+++ b/dom/media/mediacontrol/MediaStatusManager.cpp
|
||||
@@ -427,7 +427,8 @@ void MediaStatusManager::UpdateGuessedPositionState(
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/dom/media/mediaelement/HTMLMediaElement.cpp b/dom/media/mediaelement/HTMLMediaElement.cpp
|
||||
index 3cb7a43dd9535ccf6ffaa60df39b487f07760208..ed3632e9f38ee88df39500356777ae5b3ba7202a 100644
|
||||
index f26c8c26354fd65ebf2c5f4797cb2bd200f764e6..90e0b81b471d8bfa0140fa3c7996f7b796564d50 100644
|
||||
--- a/dom/media/mediaelement/HTMLMediaElement.cpp
|
||||
+++ b/dom/media/mediaelement/HTMLMediaElement.cpp
|
||||
@@ -453,6 +453,7 @@ class HTMLMediaElement::MediaControlKeyListener final
|
||||
@@ -451,6 +451,7 @@ class HTMLMediaElement::MediaControlKeyListener final
|
||||
// audible state. Therefore, in that case we would noitfy the audible state
|
||||
// when media starts playing.
|
||||
if (mState == MediaPlaybackState::ePlayed) {
|
||||
@@ -10,7 +10,7 @@ index 3cb7a43dd9535ccf6ffaa60df39b487f07760208..ed3632e9f38ee88df39500356777ae5b
|
||||
NotifyAudibleStateChanged(mIsOwnerAudible
|
||||
? MediaAudibleState::eAudible
|
||||
: MediaAudibleState::eInaudible);
|
||||
@@ -7234,6 +7235,9 @@ void HTMLMediaElement::FireTimeUpdate(TimeupdateType aType) {
|
||||
@@ -7232,6 +7233,9 @@ void HTMLMediaElement::FireTimeUpdate(TimeupdateType aType) {
|
||||
QueueTask(std::move(runner));
|
||||
mQueueTimeUpdateRunnerTime = TimeStamp::Now();
|
||||
mLastCurrentTime = CurrentTime();
|
||||
|
||||
91
src/firefox-patches/147_windows_border_fix_1.patch
Normal file
91
src/firefox-patches/147_windows_border_fix_1.patch
Normal file
@@ -0,0 +1,91 @@
|
||||
From 433cc8224790300fdabe76bd225b644c1812da34 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= <emilio@crisal.io>
|
||||
Date: Thu, 27 Nov 2025 15:28:12 +0000
|
||||
Subject: [PATCH] Bug 1993474 - Ensure our WNDPROC has precedence over
|
||||
WinAppSDK's. r=gstoll,win-reviewers
|
||||
|
||||
See the comment for reasoning. WM_NCCALCSIZE wasn't getting called, and
|
||||
we rely on that to get the right client area on things like maximized
|
||||
windows.
|
||||
|
||||
Differential Revision: https://phabricator.services.mozilla.com/D274281
|
||||
---
|
||||
widget/windows/nsWindow.cpp | 32 ++++++++++++++++++++++----------
|
||||
widget/windows/nsWindow.h | 2 ++
|
||||
2 files changed, 24 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp
|
||||
index 0b98d157097da..b357df236cfcd 100644
|
||||
--- a/widget/windows/nsWindow.cpp
|
||||
+++ b/widget/windows/nsWindow.cpp
|
||||
@@ -1520,12 +1520,31 @@ DWORD nsWindow::WindowExStyle() {
|
||||
*
|
||||
**************************************************************/
|
||||
|
||||
+bool nsWindow::ShouldAssociateWithWinAppSDK() const {
|
||||
+ // We currently don't need any SDK functionality for for PiP windows,
|
||||
+ // and using the SDK on these windows causes them to go under the
|
||||
+ // taskbar (bug 1995838).
|
||||
+ //
|
||||
+ // TODO(emilio): That might not be true anymore after bug 1993474,
|
||||
+ // consider re-testing and removing that special-case.
|
||||
+ return IsTopLevelWidget() && !mIsPIPWindow;
|
||||
+}
|
||||
+
|
||||
bool nsWindow::AssociateWithNativeWindow() {
|
||||
if (!mWnd || !IsWindow(mWnd)) {
|
||||
NS_ERROR("Invalid window handle");
|
||||
return false;
|
||||
}
|
||||
|
||||
+ if (ShouldAssociateWithWinAppSDK()) {
|
||||
+ // Make sure to call this here to associate our window with the
|
||||
+ // Windows App SDK _before_ setting our WNDPROC, if needed.
|
||||
+ // This is important because the SDKs WNDPROC might handle messages like
|
||||
+ // WM_NCCALCSIZE without calling into us, and that can cause sizing issues,
|
||||
+ // see bug 1993474.
|
||||
+ WindowsUIUtils::SetIsTitlebarCollapsed(mWnd, mCustomNonClient);
|
||||
+ }
|
||||
+
|
||||
// Connect the this pointer to the native window handle.
|
||||
// This should be done before SetWindowLongPtrW, because nsWindow::WindowProc
|
||||
// uses WinUtils::GetNSWindowPtr internally.
|
||||
@@ -1552,12 +1571,7 @@ void nsWindow::DissociateFromNativeWindow() {
|
||||
DebugOnly<WNDPROC> wndProcBeforeDissociate =
|
||||
reinterpret_cast<WNDPROC>(::SetWindowLongPtrW(
|
||||
mWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(*mPrevWndProc)));
|
||||
- // If we've used the Windows App SDK to remove the minimize/maximize/close
|
||||
- // entries from the titlebar, then the Windows App SDK sets its own WNDPROC
|
||||
- // own the window, so this assertion would fail. But we only do this if
|
||||
- // Mica is available.
|
||||
- NS_ASSERTION(WinUtils::MicaAvailable() ||
|
||||
- wndProcBeforeDissociate == nsWindow::WindowProc,
|
||||
+ NS_ASSERTION(wndProcBeforeDissociate == nsWindow::WindowProc,
|
||||
"Unstacked an unexpected native window procedure");
|
||||
|
||||
WinUtils::SetNSWindowPtr(mWnd, nullptr);
|
||||
@@ -2835,9 +2849,7 @@ void nsWindow::SetCustomTitlebar(bool aCustomTitlebar) {
|
||||
mCustomNonClientMetrics = {};
|
||||
ResetLayout();
|
||||
}
|
||||
- // Not needed for PiP windows, and using the Windows App SDK on
|
||||
- // these windows causes them to go under the taskbar (bug 1995838)
|
||||
- if (!mPIPWindow) {
|
||||
+ if (ShouldAssociateWithWinAppSDK()) {
|
||||
WindowsUIUtils::SetIsTitlebarCollapsed(mWnd, mCustomNonClient);
|
||||
}
|
||||
}
|
||||
diff --git a/widget/windows/nsWindow.h b/widget/windows/nsWindow.h
|
||||
index 20f016757dfee..2756b248368a3 100644
|
||||
--- a/widget/windows/nsWindow.h
|
||||
+++ b/widget/windows/nsWindow.h
|
||||
@@ -335,6 +335,8 @@ class nsWindow final : public nsIWidget {
|
||||
|
||||
bool IsRTL() const { return mIsRTL; }
|
||||
|
||||
+ bool ShouldAssociateWithWinAppSDK() const;
|
||||
+
|
||||
/**
|
||||
* AssociateDefaultIMC() associates or disassociates the default IMC for
|
||||
* the window.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user