mirror of
https://github.com/zen-browser/desktop.git
synced 2025-09-05 19:08:18 +00:00
Compare commits
19 Commits
4a5141c15c
...
280500cdf6
Author | SHA1 | Date | |
---|---|---|---|
![]() |
280500cdf6 | ||
![]() |
982ef2d355 | ||
![]() |
d2e8f00e3f | ||
![]() |
9e4cd6e68b | ||
![]() |
c9171b9972 | ||
![]() |
eedc5b7307 | ||
![]() |
f9452241a3 | ||
![]() |
6e9be15dac | ||
![]() |
07381c9a7a | ||
![]() |
bd4f5cee31 | ||
![]() |
0a8ebf9950 | ||
![]() |
73c5bc61fc | ||
![]() |
7253b8fa9d | ||
![]() |
42ebc081a8 | ||
![]() |
6e5502628e | ||
![]() |
b204671931 | ||
![]() |
d035348896 | ||
![]() |
72433745bc | ||
![]() |
2436ada221 |
@@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both =
|
||||
.label = Amaga les dues
|
||||
.accesskey = H
|
||||
zen-toolbar-context-new-folder =
|
||||
.label = New Folder
|
||||
.label = Carpeta nova
|
||||
.accesskey = N
|
||||
sidebar-zen-expand =
|
||||
.label = Expandeix la barra lateral
|
||||
|
@@ -15,7 +15,7 @@ zen-folders-panel-change-folder-space =
|
||||
zen-folders-panel-change-icon-folder =
|
||||
.label = Změnit ikonu
|
||||
zen-folders-unload-all-tooltip =
|
||||
.tooltiptext = Unload all tabs in this folder
|
||||
.tooltiptext = Uspat všechny panely v této složce
|
||||
zen-folders-unload-folder =
|
||||
.label = Unload All Tabs
|
||||
.label = Uspat všechny panely
|
||||
zen-folders-search-no-results = Žádný panel neodpovídá tomuto hledání 🤔
|
||||
|
@@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both =
|
||||
.label = Skrýt obojí
|
||||
.accesskey = H
|
||||
zen-toolbar-context-new-folder =
|
||||
.label = New Folder
|
||||
.label = Nová složka
|
||||
.accesskey = N
|
||||
sidebar-zen-expand =
|
||||
.label = Zvětšit boční panel
|
||||
|
@@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both =
|
||||
.label = Beide ausblenden
|
||||
.accesskey = H
|
||||
zen-toolbar-context-new-folder =
|
||||
.label = New Folder
|
||||
.label = Neuer Ordner
|
||||
.accesskey = N
|
||||
sidebar-zen-expand =
|
||||
.label = Seitenleiste erweitern
|
||||
|
@@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both =
|
||||
.label = Ocultar ambas
|
||||
.accesskey = H
|
||||
zen-toolbar-context-new-folder =
|
||||
.label = New Folder
|
||||
.label = Nueva carpeta
|
||||
.accesskey = N
|
||||
sidebar-zen-expand =
|
||||
.label = Expandir barra lateral
|
||||
|
@@ -47,7 +47,7 @@ zen-look-and-feel-compact-toolbar-themed =
|
||||
zen-look-and-feel-compact-sidebar-themed =
|
||||
.label = Kasuta kompaktsel külgribal teema poolt küljendatud tausta
|
||||
zen-workspace-continue-where-left-off =
|
||||
.label = Continue where you left off
|
||||
.label = Jätka sealt, kus eelmine kord pooleli jäi
|
||||
pane-zen-pinned-tab-manager-title = Püsikaardid
|
||||
zen-pinned-tab-manager-header = Püsikaartide üldised sätted
|
||||
zen-pinned-tab-manager-description = Halda püsikaartide täiendavat käitumist
|
||||
@@ -94,29 +94,29 @@ zen-vertical-tabs-expand-tabs-header = Kuidas kaarte laiendatakse
|
||||
zen-vertical-tabs-expand-tabs-description = Vali kuidas laiendatakse kaarte külgribal
|
||||
zen-theme-marketplace-header = Zen Mods
|
||||
zen-theme-disable-all-enabled =
|
||||
.title = Keela kõik muudatused
|
||||
.title = Keela kõik mods-id
|
||||
zen-theme-disable-all-disabled =
|
||||
.title = Luba kõik muudatused
|
||||
zen-theme-marketplace-description = Otsi ja paigalda muudatusi veebipoest.
|
||||
zen-theme-marketplace-description = Otsi ja paigalda mods-e veebipoest.
|
||||
zen-theme-marketplace-remove-button =
|
||||
.label = Eemalda muudatus
|
||||
.label = Eemalda mod
|
||||
zen-theme-marketplace-check-for-updates-button =
|
||||
.label = Kontrolli uuendusi
|
||||
zen-theme-marketplace-import-button =
|
||||
.label = Import mods
|
||||
.label = Impordi Mods-id
|
||||
zen-theme-marketplace-export-button =
|
||||
.label = Export Mods
|
||||
zen-theme-marketplace-import-success = Mods imported successfully
|
||||
zen-theme-marketplace-import-failure = There was an error importing the mods
|
||||
zen-theme-marketplace-export-success = Mods exported successfully
|
||||
zen-theme-marketplace-export-failure = There was an error exporting the mods
|
||||
zen-theme-marketplace-updates-success = Muudatused on edukalt uuendatud
|
||||
zen-theme-marketplace-updates-failure = Couldn't find any updates!
|
||||
.label = Ekspordi Mods-id
|
||||
zen-theme-marketplace-import-success = Mods-id on edukalt imporditud
|
||||
zen-theme-marketplace-import-failure = Mods-ide importimisel tekkis viga
|
||||
zen-theme-marketplace-export-success = Mods-id on edukalt eksporditud
|
||||
zen-theme-marketplace-export-failure = Mods-ide eksportimisel tekkis viga
|
||||
zen-theme-marketplace-updates-success = Mods-id on edukalt uuendatud
|
||||
zen-theme-marketplace-updates-failure = Uuendusi ei leitud!
|
||||
zen-theme-marketplace-toggle-enabled-button =
|
||||
.title = Keela muudatus
|
||||
.title = Keela mod
|
||||
zen-theme-marketplace-toggle-disabled-button =
|
||||
.title = Luba muudatus
|
||||
zen-theme-marketplace-remove-confirmation = Oled sa kindel, et soovid eemaldada selle muudatuse?
|
||||
.title = Luba mod
|
||||
zen-theme-marketplace-remove-confirmation = Oled sa kindel, et soovid eemaldada selle mod-i?
|
||||
zen-theme-marketplace-close-modal = Sulge
|
||||
zen-theme-marketplace-theme-header-title =
|
||||
.title = CSS selektor: { $name }
|
||||
@@ -126,7 +126,7 @@ zen-theme-marketplace-input-default-placeholder =
|
||||
.placeholder = Sisesta midagi...
|
||||
pane-zen-marketplace-title = Zen Mods
|
||||
zen-themes-auto-update =
|
||||
.label = Automatically update installed mods on startup
|
||||
.label = Uuenda paigaldatud mods-e brauseri avamisel automaatselt
|
||||
zen-settings-workspaces-force-container-tabs-to-workspace =
|
||||
.label = Konteineri kaartide avamisel lülitu tööruumi kuhu konteiner on vaikimisi määratud
|
||||
zen-theme-marketplace-link = Külasta veebipoodi
|
||||
@@ -171,7 +171,7 @@ zenCKSOption-group-zen-compact-mode = Kompaktne režiim
|
||||
zenCKSOption-group-zen-workspace = Tööruumid
|
||||
zenCKSOption-group-zen-other = Muud Zeni funktsioonid
|
||||
zenCKSOption-group-zen-split-view = Jaotatud vaade
|
||||
zenCKSOption-group-devTools = Developer Tools
|
||||
zenCKSOption-group-devTools = Arendaja tööriistad
|
||||
zen-key-quick-restart = Kiirtaaskävitus
|
||||
zen-window-new-shortcut = Uus aken
|
||||
zen-tab-new-shortcut = Uus kaart
|
||||
@@ -185,7 +185,7 @@ zen-text-action-redo-shortcut = Tee uuesti
|
||||
zen-text-action-cut-shortcut = Lõika
|
||||
zen-text-action-copy-shortcut = Kopeeri
|
||||
zen-text-action-copy-url-shortcut = Kopeeri praegune URL
|
||||
zen-text-action-copy-url-markdown-shortcut = Copy current URL as Markdown
|
||||
zen-text-action-copy-url-markdown-shortcut = Kopeeri praegune URL Markdown-i märgendina
|
||||
zen-text-action-paste-shortcut = Aseta
|
||||
zen-text-action-select-all-shortcut = Vali kõik
|
||||
zen-text-action-delete-shortcut = Kustuta
|
||||
@@ -220,9 +220,9 @@ zen-nav-fwd-shortcut-alt = Navigeeri edasi (alternatiivne)
|
||||
zen-history-show-all-shortcut = Näita kogu ajalugu
|
||||
zen-key-enter-full-screen = Täisekraanirežiim
|
||||
zen-key-exit-full-screen = Välju täisekraanirežiimist
|
||||
zen-ai-chatbot-sidebar-shortcut = Toggle AI Chatbot Sidebar
|
||||
zen-key-inspector-mac = Toggle Inspector (Mac)
|
||||
zen-toggle-sidebar-shortcut = Toggle Firefox Sidebar
|
||||
zen-ai-chatbot-sidebar-shortcut = Lülita AI vestlusroboti külgriba sisse/välja
|
||||
zen-key-inspector-mac = Lülita inspekteerija sisse/välja (Mac)
|
||||
zen-toggle-sidebar-shortcut = Lülita Firefoxi külgriba sisse/välja
|
||||
zen-reader-mode-toggle-shortcut-other = Lülita lugejarežiim sisse/välja
|
||||
zen-picture-in-picture-toggle-shortcut = Lülita pilt-pildis sisse/välja
|
||||
zen-nav-reload-shortcut-2 = Laadi leht uuesti
|
||||
@@ -239,9 +239,9 @@ zen-key-stop = Peata laadimine
|
||||
zen-full-zoom-reduce-shortcut = Vähenda
|
||||
zen-full-zoom-enlarge-shortcut = Suurenda
|
||||
zen-full-zoom-reset-shortcut = Lähtesta suurendamine
|
||||
zen-full-zoom-reset-shortcut-alt = Reset Zoom (Alt)
|
||||
zen-full-zoom-enlarge-shortcut-alt = Zoom In (Alt)
|
||||
zen-full-zoom-enlarge-shortcut-alt2 = Zoom In (Alt 2)
|
||||
zen-full-zoom-reset-shortcut-alt = Lähtesta suurendamine (Alternatiivne)
|
||||
zen-full-zoom-enlarge-shortcut-alt = Suurenda (Alternatiivne)
|
||||
zen-full-zoom-enlarge-shortcut-alt2 = Suurenda (Alternatiivne 2)
|
||||
zen-bidi-switch-direction-shortcut = Muuda teksti suunda
|
||||
zen-private-browsing-shortcut = Ava privaatne aken
|
||||
zen-screenshot-shortcut = Tee ekraanipilt
|
||||
@@ -288,16 +288,16 @@ zen-key-goto-history = Ava ajalugu
|
||||
zen-key-go-home = Avaleht
|
||||
zen-bookmark-show-sidebar-shortcut = Kuva järjehoidjate külgriba
|
||||
zen-bookmark-show-toolbar-shortcut = Kuva järjehoidjariba
|
||||
zen-devtools-toggle-shortcut = Toggle DevTools
|
||||
zen-devtools-toggle-browser-toolbox-shortcut = Toggle Browser Toolbox
|
||||
zen-devtools-toggle-browser-console-shortcut = Toggle Browser Console
|
||||
zen-devtools-toggle-responsive-design-mode-shortcut = Toggle Responsive Design Mode
|
||||
zen-devtools-toggle-inspector-shortcut = Toggle Inspector
|
||||
zen-devtools-toggle-web-console-shortcut = Toggle Web Console
|
||||
zen-devtools-toggle-js-debugger-shortcut = Toggle JavaScript Debugger
|
||||
zen-devtools-toggle-net-monitor-shortcut = Toggle Network Monitor
|
||||
zen-devtools-toggle-style-editor-shortcut = Toggle Style Editor
|
||||
zen-devtools-toggle-performance-shortcut = Toggle Performance
|
||||
zen-devtools-toggle-storage-shortcut = Toggle Storage
|
||||
zen-devtools-toggle-dom-shortcut = Toggle DOM
|
||||
zen-devtools-toggle-accessibility-shortcut = Toggle Accessibility
|
||||
zen-devtools-toggle-shortcut = Lülita arendaja tööriistad sisse/välja
|
||||
zen-devtools-toggle-browser-toolbox-shortcut = Lülita brauseri tööriistakast sisse/välja
|
||||
zen-devtools-toggle-browser-console-shortcut = Lülita brauseri konsool sisse/välja
|
||||
zen-devtools-toggle-responsive-design-mode-shortcut = Lülita reageeriva disaini režiim sisse/välja
|
||||
zen-devtools-toggle-inspector-shortcut = Lülita inspekteerija sisse/välja
|
||||
zen-devtools-toggle-web-console-shortcut = Lülita veebikonsool sisse/välja
|
||||
zen-devtools-toggle-js-debugger-shortcut = Lülita JavaScripti siluja sisse/välja
|
||||
zen-devtools-toggle-net-monitor-shortcut = Lülita võrgu jälgija sisse/välja
|
||||
zen-devtools-toggle-style-editor-shortcut = Lülita stiilide redaktor sisse/välja
|
||||
zen-devtools-toggle-performance-shortcut = Lülita jõudluse sektsioon sisse/välja
|
||||
zen-devtools-toggle-storage-shortcut = Lülita mälu sektsioon sisse/välja
|
||||
zen-devtools-toggle-dom-shortcut = Lülita DOM sisse/välja
|
||||
zen-devtools-toggle-accessibility-shortcut = Lülita ligipääsetavuse sektsioon sisse/välja
|
||||
|
@@ -1,21 +1,21 @@
|
||||
zen-folders-search-placeholder =
|
||||
.placeholder = Search { $folder-name }...
|
||||
.placeholder = Otsi kaustast { $folder-name }...
|
||||
zen-folders-panel-rename-folder =
|
||||
.label = Rename Folder
|
||||
.label = Nimeta kaust ümber
|
||||
zen-folders-panel-unpack-folder =
|
||||
.label = Unpack Folder
|
||||
.label = Paki kaust lahti
|
||||
zen-folders-new-subfolder =
|
||||
.label = New Subfolder
|
||||
.label = Uus alamkaust
|
||||
zen-folders-panel-delete-folder =
|
||||
.label = Delete Folder
|
||||
.label = Kustuta kaust
|
||||
zen-folders-panel-convert-folder-to-space =
|
||||
.label = Convert folder to Space
|
||||
.label = Teisenda kaust tööruumiks
|
||||
zen-folders-panel-change-folder-space =
|
||||
.label = Change Space...
|
||||
.label = Liiguta tööruumi...
|
||||
zen-folders-panel-change-icon-folder =
|
||||
.label = Change Icon
|
||||
.label = Muuda ikooni
|
||||
zen-folders-unload-all-tooltip =
|
||||
.tooltiptext = Unload all tabs in this folder
|
||||
.tooltiptext = Eemalda mälust selle kausta kaardid
|
||||
zen-folders-unload-folder =
|
||||
.label = Unload All Tabs
|
||||
zen-folders-search-no-results = No tabs matching that search 🤔
|
||||
.label = Eemalda mälust kõik kaardid
|
||||
zen-folders-search-no-results = Otsingule ei vasta ühtegi kaarti 🤔
|
||||
|
@@ -2,49 +2,49 @@ zen-panel-ui-current-profile-text = praegune profiil
|
||||
unified-extensions-description = Laiendusi kasutatakse täiendava funktsionaalsuse lisamiseks { -brand-short-name }i.
|
||||
tab-context-zen-reset-pinned-tab =
|
||||
.label = Lähtesta püsikaart
|
||||
.accesskey = R
|
||||
.accesskey = p
|
||||
tab-context-zen-add-essential =
|
||||
.label = Add to Essentials ({ $num } / 12 slots filled)
|
||||
.accesskey = E
|
||||
.label = Märgi oluliseks ({ $num } / 12 täidetud)
|
||||
.accesskey = o
|
||||
tab-context-zen-remove-essential =
|
||||
.label = Eemalda olulistest
|
||||
.accesskey = R
|
||||
.accesskey = o
|
||||
tab-context-zen-replace-pinned-url-with-current =
|
||||
.label = Asenda püsikaardi URL praegusega
|
||||
.accesskey = C
|
||||
zen-themes-corrupted = Sinu { -brand-short-name } muudatuste fail on vigane. See on nüüd lähtestatud vaikimisi teemaks.
|
||||
.accesskey = p
|
||||
zen-themes-corrupted = Sinu { -brand-short-name } mods-ide fail on vigane. See on nüüd lähtestatud vaikimisi teemaks.
|
||||
zen-shortcuts-corrupted = Sinu { -brand-short-name } otseteede fail on vigane. See on nüüd lähtestatud vaikimisi otseteedeks.
|
||||
# note: Do not translate the "<br/>" tags in the following string
|
||||
zen-new-urlbar-notification =
|
||||
The new URL bar has been enabled, removing the need for new tab pages.<br/><br/>
|
||||
Try opening a new tab to see the new URL bar in action!
|
||||
zen-disable = Disable
|
||||
Uus asukohariba on sisse lülitatud, mistõttu pole enam uue kaardi lehte tarvis.<br/><br/>
|
||||
Proovi avada uut kaarti, et näha uut asukohariba!
|
||||
zen-disable = Lülita välja
|
||||
pictureinpicture-minimize-btn =
|
||||
.aria-label = Minimize
|
||||
.tooltip = Minimize
|
||||
.aria-label = Minimeeri
|
||||
.tooltip = Minimeeri
|
||||
zen-panel-ui-gradient-generator-custom-color = Kohandatud värv
|
||||
zen-panel-ui-gradient-generator-saved-message = Värviüleminek on edukalt salvestatud!
|
||||
zen-copy-current-url-confirmation = URL kopeeriti lõikelauale.
|
||||
zen-general-cancel-label =
|
||||
.label = Cancel
|
||||
.label = Tühista
|
||||
zen-general-confirm =
|
||||
.label = Kinnita
|
||||
zen-pinned-tab-replaced = Pinned tab URL has been replaced with the current URL.
|
||||
zen-tabs-renamed = Tab has been successfully renamed!
|
||||
zen-background-tab-opened-toast = New background tab opened!
|
||||
zen-workspace-renamed-toast = Workspace has been successfully renamed!
|
||||
zen-tabs-renamed = Kaart on edukalt ümber nimetatud!
|
||||
zen-background-tab-opened-toast = Taustal avati uus kaart!
|
||||
zen-workspace-renamed-toast = Tööruum on edukalt ümber nimetatud!
|
||||
zen-library-sidebar-workspaces =
|
||||
.label = Spaces
|
||||
.label = Tööruumid
|
||||
zen-library-sidebar-mods =
|
||||
.label = Mods
|
||||
.label = Mods-id
|
||||
|
||||
# note: Do not translate the "<br/>" tags in the following string
|
||||
|
||||
zen-learn-more-text = Rohkem teavet
|
||||
zen-close-label = Sulge
|
||||
zen-singletoolbar-urlbar-placeholder-with-name =
|
||||
.placeholder = Search...
|
||||
.placeholder = Otsi...
|
||||
zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
.label = Emojid
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
.label = Ikoonid
|
||||
|
@@ -15,22 +15,22 @@ zen-toolbar-context-compact-mode-hide-both =
|
||||
.label = Peida mõlemad
|
||||
.accesskey = P
|
||||
zen-toolbar-context-new-folder =
|
||||
.label = New Folder
|
||||
.accesskey = N
|
||||
.label = Uus kaust
|
||||
.accesskey = U
|
||||
sidebar-zen-expand =
|
||||
.label = Laienda külgriba
|
||||
sidebar-zen-create-new =
|
||||
.label = Create New...
|
||||
.label = Loo uus...
|
||||
tabbrowser-unload-tab-button =
|
||||
.tooltiptext =
|
||||
{ $tabCount ->
|
||||
[one] Unload and switch to tab
|
||||
*[other] Unload { $tabCount } tabs and switch to the first
|
||||
[one] Eemalda mälust ning vaheta kaarti
|
||||
*[other] Eemalda mälust { $tabCount } kaarti ning vaheta esimesele kaardile
|
||||
}
|
||||
tabbrowser-reset-pin-button =
|
||||
.tooltiptext =
|
||||
{ $tabCount ->
|
||||
[one] Reset and pin tab
|
||||
*[other] Reset and pin { $tabCount } tabs
|
||||
[one] Lähtesta ja tee püsikaardiks
|
||||
*[other] Lähtesta ja tee püsikaardiks { $tabCount } kaarti
|
||||
}
|
||||
tab-reset-pin-label = Back to pinned url
|
||||
tab-reset-pin-label = Tagasi püsikaardi URL-ile
|
||||
|
@@ -4,24 +4,24 @@
|
||||
|
||||
zen-welcome-title-line1 = Tere tulemast
|
||||
zen-welcome-title-line2 = rahulikumasse internetti
|
||||
zen-welcome-import-title = A Fresh Start, Same Bookmarks
|
||||
zen-welcome-import-description-1 = Your bookmarks, history, and passwords are like a trail of breadcrumbs through the internet—don’t leave them behind!
|
||||
zen-welcome-import-title = Värske algus, samad järjehoidjad
|
||||
zen-welcome-import-description-1 = Sinu järjehoidjad, ajalugu ja paroolid on nagu seni läbitud rada internetis—ära jäta seda maha!
|
||||
zen-welcome-import-description-2 = Easily bring them over from another browser and pick up right where you left off..
|
||||
zen-welcome-import-button = Import now
|
||||
zen-welcome-set-default-browser = Set { -brand-short-name } as your default browser
|
||||
zen-welcome-dont-set-default-browser = DON’T set { -brand-short-name } as your default browser
|
||||
zen-welcome-initial-essentials-title = Your Key Tabs, Always Within Reach
|
||||
zen-welcome-initial-essentials-description-1 = Keep your most important tabs easily accessible and always at hand, no matter how many you open.
|
||||
zen-welcome-initial-essentials-description-2 = Essential tabs are always visible, no matter what workspace you are in.
|
||||
zen-welcome-workspace-colors-title = Your Workspaces, Your Colors
|
||||
zen-welcome-workspace-colors-description = Personalize your browser by giving each workspace its own unique color identity.
|
||||
zen-welcome-import-button = Impordi nüüd
|
||||
zen-welcome-set-default-browser = Määra { -brand-short-name } oma vaikebrauseriks
|
||||
zen-welcome-dont-set-default-browser = ÄRA määra { -brand-short-name } oma vaikebrauseriks
|
||||
zen-welcome-initial-essentials-title = Sinu põhilised kaardid, alati käeulatuses
|
||||
zen-welcome-initial-essentials-description-1 = Hoia oma kõige olulisemad kaardid hõlpsalt juurdepääsetavad ning käeulatuses, hoolimata sellest, kui mitu neid avad.
|
||||
zen-welcome-initial-essentials-description-2 = Olulised kaardid on alati nähtavad sõltumata sellest, millises tööruumis hetkel oled.
|
||||
zen-welcome-workspace-colors-title = Sinu tööruumid, sinu värvid
|
||||
zen-welcome-workspace-colors-description = Isikupärasta oma brauser, andes igale tööruumile omapärase värvitooni.
|
||||
zen-welcome-start-browsing-title =
|
||||
All set?<br/>
|
||||
Let’s get rolling!
|
||||
zen-welcome-start-browsing-description-1 = You’re all set up and ready to go. Click the button below to start browsing with { -brand-short-name }.
|
||||
zen-welcome-start-browsing = Dive in!
|
||||
zen-welcome-default-search-title = Your Default Search Engine
|
||||
zen-welcome-default-search-description = Choose your default search engine. You can always change it later!
|
||||
zen-welcome-skip-button = Skip
|
||||
zen-welcome-next-action = Next
|
||||
zen-welcome-finished = Your Zen has been set up correctly!
|
||||
Valmis?<br/>
|
||||
Alustame!
|
||||
zen-welcome-start-browsing-description-1 = Kõik on valmis. { -brand-short-name }iga sirvimise alustamiseks klõpsake alloleval nupul.
|
||||
zen-welcome-start-browsing = Hakkame pihta!
|
||||
zen-welcome-default-search-title = Sinu vaikimisi otsingumootor
|
||||
zen-welcome-default-search-description = Vali oma vaikimisi otsingumootor. Saad seda alati hiljem muuta!
|
||||
zen-welcome-skip-button = Jäta vahele
|
||||
zen-welcome-next-action = Edasi
|
||||
zen-welcome-finished = Zen on edukalt seadistatud!
|
||||
|
@@ -1,21 +1,21 @@
|
||||
zen-panel-ui-workspaces-text = Tööruumid
|
||||
zen-panel-ui-workspaces-create =
|
||||
.label = Create Space
|
||||
.label = Uus tööruum
|
||||
zen-panel-ui-folder-create =
|
||||
.label = Create Folder
|
||||
.label = Uus kaust
|
||||
zen-workspaces-panel-context-delete =
|
||||
.label = Kustuta tööruum
|
||||
.accesskey = K
|
||||
zen-workspaces-panel-change-name =
|
||||
.label = Change Name
|
||||
.label = Nimeta ümber
|
||||
zen-workspaces-panel-change-icon =
|
||||
.label = Change Icon
|
||||
.label = Muuda ikooni
|
||||
zen-workspaces-panel-context-default-profile =
|
||||
.label = Set Profile
|
||||
zen-workspaces-how-to-reorder-title = How to reorder spaces
|
||||
zen-workspaces-how-to-reorder-desc = Drag the space icons at the bottom of the sidebar to reorder them
|
||||
.label = Määra profiil
|
||||
zen-workspaces-how-to-reorder-title = Kuidas vahetada tööruumide järjestust
|
||||
zen-workspaces-how-to-reorder-desc = Lohista tööruumide ikoone külgriba alumises servas, et nende järjestust muuta
|
||||
zen-workspaces-change-theme =
|
||||
.label = Edit Theme
|
||||
.label = Muuda teemat
|
||||
zen-workspaces-panel-context-open =
|
||||
.label = Ava tööruum
|
||||
.accesskey = A
|
||||
@@ -29,23 +29,23 @@ zen-bookmark-edit-panel-workspace-selector =
|
||||
.value = Tööruumid
|
||||
.accesskey = T
|
||||
zen-panel-ui-gradient-generator-algo-complementary =
|
||||
.label = Complementary
|
||||
.label = Täiendvärvid
|
||||
zen-panel-ui-gradient-generator-algo-splitComplementary =
|
||||
.label = Split
|
||||
.label = Täiendvärvide kolmik
|
||||
zen-panel-ui-gradient-generator-algo-analogous =
|
||||
.label = Analogous
|
||||
.label = Lähedased värvid
|
||||
zen-panel-ui-gradient-generator-algo-triadic =
|
||||
.label = Triadic
|
||||
.label = Kolmkõla
|
||||
zen-panel-ui-gradient-generator-algo-floating =
|
||||
.label = Floating
|
||||
zen-panel-ui-gradient-click-to-add = Click to add a color
|
||||
.label = Hõljuv
|
||||
zen-panel-ui-gradient-click-to-add = Klõpsa värvi lisamiseks
|
||||
zen-workspace-creation-name =
|
||||
.placeholder = Space Name
|
||||
.placeholder = Tööruumi nimi
|
||||
zen-workspaces-panel-context-reorder =
|
||||
.label = Reorder Spaces
|
||||
zen-workspace-creation-profile = Profile
|
||||
.tooltiptext = Profiles are used to separate cookies and site data between spaces.
|
||||
zen-workspace-creation-header = Create a Space
|
||||
zen-workspace-creation-label = Spaces are used to organize your tabs and sessions.
|
||||
.label = Muuda tööruumide järjestust
|
||||
zen-workspace-creation-profile = Profiil
|
||||
.tooltiptext = Profiile kasutatakse küpsiste ning saidi andmete eraldamiseks tööruumide vahel.
|
||||
zen-workspace-creation-header = Loo uus tööruum
|
||||
zen-workspace-creation-label = Tööruume kasutatakse kaartide ja sessioonide organiseerimiseks.
|
||||
zen-workspaces-delete-workspace-title = Delete Workspace?
|
||||
zen-workspaces-delete-workspace-body = Are you sure you want to delete { $name }? This action cannot be undone.
|
||||
zen-workspaces-delete-workspace-body = Kas oled kindel, et soovid kustutada tööruumi { $name }? Seda tegevust ei saa tagasi võtta.
|
||||
|
@@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both =
|
||||
.label = Masquer les deux
|
||||
.accesskey = H
|
||||
zen-toolbar-context-new-folder =
|
||||
.label = New Folder
|
||||
.label = Nouveau dossier
|
||||
.accesskey = N
|
||||
sidebar-zen-expand =
|
||||
.label = Étendre la barre latérale
|
||||
|
@@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both =
|
||||
.label = Folaigh an dá cheann
|
||||
.accesskey = H
|
||||
zen-toolbar-context-new-folder =
|
||||
.label = New Folder
|
||||
.label = Fillteán Nua
|
||||
.accesskey = N
|
||||
sidebar-zen-expand =
|
||||
.label = Barra Taoibh a Leathnú
|
||||
|
@@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both =
|
||||
.label = Mindkettő elrejtése
|
||||
.accesskey = H
|
||||
zen-toolbar-context-new-folder =
|
||||
.label = New Folder
|
||||
.label = Új mappa
|
||||
.accesskey = N
|
||||
sidebar-zen-expand =
|
||||
.label = Oldalsáv kibontása
|
||||
|
@@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both =
|
||||
.label = Sembunyikan keduanya
|
||||
.accesskey = H
|
||||
zen-toolbar-context-new-folder =
|
||||
.label = New Folder
|
||||
.label = Folder Baru
|
||||
.accesskey = N
|
||||
sidebar-zen-expand =
|
||||
.label = Perluas Bilah Sisi
|
||||
|
@@ -15,7 +15,7 @@ zen-folders-panel-change-folder-space =
|
||||
zen-folders-panel-change-icon-folder =
|
||||
.label = Keisti piktogramą
|
||||
zen-folders-unload-all-tooltip =
|
||||
.tooltiptext = Unload all tabs in this folder
|
||||
.tooltiptext = Iškelti visas korteles šiame aplanke
|
||||
zen-folders-unload-folder =
|
||||
.label = Unload All Tabs
|
||||
.label = Iškelti visas korteles
|
||||
zen-folders-search-no-results = Nėra kortelių, atitinkančių šią paiešką. 🤔
|
||||
|
@@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both =
|
||||
.label = Slėpti abi
|
||||
.accesskey = H
|
||||
zen-toolbar-context-new-folder =
|
||||
.label = New Folder
|
||||
.label = Naujas aplankas
|
||||
.accesskey = N
|
||||
sidebar-zen-expand =
|
||||
.label = Išskleisti šoninę juostą
|
||||
|
@@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both =
|
||||
.label = Esconder os dois
|
||||
.accesskey = A
|
||||
zen-toolbar-context-new-folder =
|
||||
.label = New Folder
|
||||
.label = Nova Pasta
|
||||
.accesskey = N
|
||||
sidebar-zen-expand =
|
||||
.label = Expandir barra lateral
|
||||
|
@@ -15,7 +15,7 @@ zen-toolbar-context-compact-mode-hide-both =
|
||||
.label = Ocultar ambas
|
||||
.accesskey = H
|
||||
zen-toolbar-context-new-folder =
|
||||
.label = New Folder
|
||||
.label = Nova Pasta
|
||||
.accesskey = N
|
||||
sidebar-zen-expand =
|
||||
.label = Expandir Barra Lateral
|
||||
|
@@ -24,5 +24,4 @@
|
||||
|
||||
- name: zen.injections.match-urls
|
||||
value: 'http://localhost/*'
|
||||
locked: true
|
||||
condition: '!defined(MOZILLA_OFFICIAL)'
|
||||
|
@@ -51,3 +51,6 @@
|
||||
|
||||
- name: zen.view.drag-and-drop.drop-inside-lower-threshold
|
||||
value: 30
|
||||
|
||||
- name: zen.view.context-menu.refresh
|
||||
value: false
|
||||
|
@@ -8,8 +8,7 @@
|
||||
<html:input id="zen-folder-tabs-list-search"
|
||||
data-l10n-id="zen-folders-search-placeholder"
|
||||
data-l10n-args="{"folder-name":""}"
|
||||
type="search"
|
||||
flex="1" />
|
||||
type="search" />
|
||||
</hbox>
|
||||
<scrollbox class="zen-folder-tabs-list-scrollbox" flex="1">
|
||||
<vbox id="zen-folder-tabs-list"></vbox>
|
||||
|
@@ -1,11 +1,15 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6fe685e62 100644
|
||||
index d80a66a01002e78a9c65545d08fe786328ddf124..a3f903c0245a9ac89def72c6ed1f4beed4c5079b 100644
|
||||
--- a/browser/components/tabbrowser/content/tabbrowser.js
|
||||
+++ b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
@@ -422,15 +422,60 @@
|
||||
@@ -422,15 +422,64 @@
|
||||
return this.tabContainer.visibleTabs;
|
||||
}
|
||||
|
||||
+ zenHandleTabMove(...args) {
|
||||
+ return this.#handleTabMove(...args);
|
||||
+ }
|
||||
+
|
||||
+ get _numVisiblePinTabsWithoutCollapsed() {
|
||||
+ let i = 0;
|
||||
+ for (let item of this.tabContainer.ariaFocusableItems) {
|
||||
@@ -65,7 +69,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
set selectedTab(val) {
|
||||
if (
|
||||
gSharedTabWarning.willShowSharedTabWarning(val) ||
|
||||
@@ -578,6 +623,7 @@
|
||||
@@ -578,6 +627,7 @@
|
||||
this.tabpanels.appendChild(panel);
|
||||
|
||||
let tab = this.tabs[0];
|
||||
@@ -73,7 +77,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
tab.linkedPanel = uniqueId;
|
||||
this._selectedTab = tab;
|
||||
this._selectedBrowser = browser;
|
||||
@@ -863,9 +909,13 @@
|
||||
@@ -863,9 +913,13 @@
|
||||
}
|
||||
|
||||
this.showTab(aTab);
|
||||
@@ -88,7 +92,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
|
||||
aTab.setAttribute("pinned", "true");
|
||||
this._updateTabBarForPinnedTabs();
|
||||
@@ -878,11 +928,15 @@
|
||||
@@ -878,11 +932,15 @@
|
||||
}
|
||||
|
||||
this.#handleTabMove(aTab, () => {
|
||||
@@ -105,7 +109,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
});
|
||||
|
||||
aTab.style.marginInlineStart = "";
|
||||
@@ -1060,6 +1114,8 @@
|
||||
@@ -1060,6 +1118,8 @@
|
||||
|
||||
let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"];
|
||||
|
||||
@@ -114,7 +118,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
if (
|
||||
aIconURL &&
|
||||
!aLoadingPrincipal &&
|
||||
@@ -1070,6 +1126,9 @@
|
||||
@@ -1070,6 +1130,9 @@
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -124,7 +128,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
|
||||
let browser = this.getBrowserForTab(aTab);
|
||||
browser.mIconURL = aIconURL;
|
||||
@@ -1319,6 +1378,7 @@
|
||||
@@ -1319,6 +1382,7 @@
|
||||
if (!this._previewMode) {
|
||||
newTab.recordTimeFromUnloadToReload();
|
||||
newTab.updateLastAccessed();
|
||||
@@ -132,7 +136,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
oldTab.updateLastAccessed();
|
||||
// if this is the foreground window, update the last-seen timestamps.
|
||||
if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) {
|
||||
@@ -1471,6 +1531,9 @@
|
||||
@@ -1471,6 +1535,9 @@
|
||||
}
|
||||
|
||||
let activeEl = document.activeElement;
|
||||
@@ -142,7 +146,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
// If focus is on the old tab, move it to the new tab.
|
||||
if (activeEl == oldTab) {
|
||||
newTab.focus();
|
||||
@@ -1794,7 +1857,8 @@
|
||||
@@ -1794,7 +1861,8 @@
|
||||
}
|
||||
|
||||
_setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) {
|
||||
@@ -152,7 +156,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1902,7 +1966,7 @@
|
||||
@@ -1902,7 +1970,7 @@
|
||||
newIndex = this.selectedTab._tPos + 1;
|
||||
}
|
||||
|
||||
@@ -161,7 +165,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
if (this.isTabGroupLabel(targetTab)) {
|
||||
throw new Error(
|
||||
"Replacing a tab group label with a tab is not supported"
|
||||
@@ -2166,6 +2230,7 @@
|
||||
@@ -2166,6 +2234,7 @@
|
||||
uriIsAboutBlank,
|
||||
userContextId,
|
||||
skipLoad,
|
||||
@@ -169,7 +173,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
} = {}) {
|
||||
let b = document.createXULElement("browser");
|
||||
// Use the JSM global to create the permanentKey, so that if the
|
||||
@@ -2239,8 +2304,7 @@
|
||||
@@ -2239,8 +2308,7 @@
|
||||
// we use a different attribute name for this?
|
||||
b.setAttribute("name", name);
|
||||
}
|
||||
@@ -179,7 +183,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
b.setAttribute("transparent", "true");
|
||||
}
|
||||
|
||||
@@ -2405,7 +2469,7 @@
|
||||
@@ -2405,7 +2473,7 @@
|
||||
|
||||
let panel = this.getPanel(browser);
|
||||
let uniqueId = this._generateUniquePanelID();
|
||||
@@ -188,7 +192,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
aTab.linkedPanel = uniqueId;
|
||||
|
||||
// Inject the <browser> into the DOM if necessary.
|
||||
@@ -2464,8 +2528,8 @@
|
||||
@@ -2464,8 +2532,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) {
|
||||
@@ -199,7 +203,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
} else {
|
||||
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
|
||||
}
|
||||
@@ -2629,7 +2693,6 @@
|
||||
@@ -2629,7 +2697,6 @@
|
||||
this.selectedTab = this.addTrustedTab(BROWSER_NEW_TAB_URL, {
|
||||
tabIndex: tab._tPos + 1,
|
||||
userContextId: tab.userContextId,
|
||||
@@ -207,7 +211,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
focusUrlBar: true,
|
||||
});
|
||||
resolve(this.selectedBrowser);
|
||||
@@ -2709,6 +2772,8 @@
|
||||
@@ -2709,6 +2776,8 @@
|
||||
schemelessInput,
|
||||
hasValidUserGestureActivation = false,
|
||||
textDirectiveUserActivation = false,
|
||||
@@ -216,7 +220,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
} = {}
|
||||
) {
|
||||
// all callers of addTab that pass a params object need to pass
|
||||
@@ -2719,6 +2784,12 @@
|
||||
@@ -2719,6 +2788,12 @@
|
||||
);
|
||||
}
|
||||
|
||||
@@ -229,7 +233,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
if (!UserInteraction.running("browser.tabs.opening", window)) {
|
||||
UserInteraction.start("browser.tabs.opening", "initting", window);
|
||||
}
|
||||
@@ -2782,6 +2853,19 @@
|
||||
@@ -2782,6 +2857,19 @@
|
||||
noInitialLabel,
|
||||
skipBackgroundNotify,
|
||||
});
|
||||
@@ -249,7 +253,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
if (insertTab) {
|
||||
// Insert the tab into the tab container in the correct position.
|
||||
this.#insertTabAtIndex(t, {
|
||||
@@ -2790,6 +2874,7 @@
|
||||
@@ -2790,6 +2878,7 @@
|
||||
ownerTab,
|
||||
openerTab,
|
||||
pinned,
|
||||
@@ -257,7 +261,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
bulkOrderedOpen,
|
||||
tabGroup: tabGroup ?? openerTab?.group,
|
||||
});
|
||||
@@ -2808,6 +2893,7 @@
|
||||
@@ -2808,6 +2897,7 @@
|
||||
openWindowInfo,
|
||||
skipLoad,
|
||||
triggeringRemoteType,
|
||||
@@ -265,7 +269,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
}));
|
||||
|
||||
if (focusUrlBar) {
|
||||
@@ -2928,6 +3014,12 @@
|
||||
@@ -2928,6 +3018,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -278,7 +282,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
// Additionally send pinned tab events
|
||||
if (pinned) {
|
||||
this.#notifyPinnedStatus(t);
|
||||
@@ -3016,10 +3108,10 @@
|
||||
@@ -3016,10 +3112,10 @@
|
||||
isAdoptingGroup = false,
|
||||
isUserTriggered = false,
|
||||
telemetryUserCreateSource = "unknown",
|
||||
@@ -290,7 +294,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
}
|
||||
|
||||
if (!color) {
|
||||
@@ -3040,9 +3132,14 @@
|
||||
@@ -3040,9 +3136,14 @@
|
||||
label,
|
||||
isAdoptingGroup
|
||||
);
|
||||
@@ -307,7 +311,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
);
|
||||
group.addTabs(tabs);
|
||||
|
||||
@@ -3163,7 +3260,7 @@
|
||||
@@ -3163,7 +3264,7 @@
|
||||
}
|
||||
|
||||
this.#handleTabMove(tab, () =>
|
||||
@@ -316,7 +320,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
);
|
||||
}
|
||||
|
||||
@@ -3365,6 +3462,7 @@
|
||||
@@ -3365,6 +3466,7 @@
|
||||
openWindowInfo,
|
||||
skipLoad,
|
||||
triggeringRemoteType,
|
||||
@@ -324,7 +328,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
}
|
||||
) {
|
||||
// If we don't have a preferred remote type (or it is `NOT_REMOTE`), and
|
||||
@@ -3434,6 +3532,7 @@
|
||||
@@ -3434,6 +3536,7 @@
|
||||
openWindowInfo,
|
||||
name,
|
||||
skipLoad,
|
||||
@@ -332,7 +336,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
});
|
||||
}
|
||||
|
||||
@@ -3621,7 +3720,7 @@
|
||||
@@ -3621,7 +3724,7 @@
|
||||
// Add a new tab if needed.
|
||||
if (!tab) {
|
||||
let createLazyBrowser =
|
||||
@@ -341,7 +345,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
|
||||
let url = "about:blank";
|
||||
if (tabData.entries?.length) {
|
||||
@@ -3658,8 +3757,10 @@
|
||||
@@ -3658,8 +3761,10 @@
|
||||
insertTab: false,
|
||||
skipLoad: true,
|
||||
preferredRemoteType,
|
||||
@@ -353,7 +357,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
if (select) {
|
||||
tabToSelect = tab;
|
||||
}
|
||||
@@ -3671,7 +3772,8 @@
|
||||
@@ -3671,7 +3776,8 @@
|
||||
this.pinTab(tab);
|
||||
// Then ensure all the tab open/pinning information is sent.
|
||||
this._fireTabOpen(tab, {});
|
||||
@@ -363,7 +367,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
let { groupId } = tabData;
|
||||
const tabGroup = tabGroupWorkingData.get(groupId);
|
||||
// if a tab refers to a tab group we don't know, skip any group
|
||||
@@ -3685,7 +3787,10 @@
|
||||
@@ -3685,7 +3791,10 @@
|
||||
tabGroup.stateData.id,
|
||||
tabGroup.stateData.color,
|
||||
tabGroup.stateData.collapsed,
|
||||
@@ -375,7 +379,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
);
|
||||
tabsFragment.appendChild(tabGroup.node);
|
||||
}
|
||||
@@ -3730,9 +3835,23 @@
|
||||
@@ -3730,9 +3839,23 @@
|
||||
// to remove the old selected tab.
|
||||
if (tabToSelect) {
|
||||
let leftoverTab = this.selectedTab;
|
||||
@@ -391,15 +395,15 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
+ gZenWorkspaces._initialTab._shouldRemove = true;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
+ }
|
||||
+ else {
|
||||
+ gZenWorkspaces._tabToRemoveForEmpty = this.selectedTab;
|
||||
+ }
|
||||
}
|
||||
+ this._hasAlreadyInitializedZenSessionStore = true;
|
||||
|
||||
if (tabs.length > 1 || !tabs[0].selected) {
|
||||
this._updateTabsAfterInsert();
|
||||
@@ -3927,7 +4046,7 @@
|
||||
@@ -3927,7 +4050,7 @@
|
||||
// Ensure we have an index if one was not provided.
|
||||
if (typeof elementIndex != "number" && typeof tabIndex != "number") {
|
||||
// Move the new tab after another tab if needed, to the end otherwise.
|
||||
@@ -408,7 +412,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
if (
|
||||
!bulkOrderedOpen &&
|
||||
((openerTab &&
|
||||
@@ -3939,7 +4058,7 @@
|
||||
@@ -3939,7 +4062,7 @@
|
||||
let lastRelatedTab =
|
||||
openerTab && this._lastRelatedTabMap.get(openerTab);
|
||||
let previousTab = lastRelatedTab || openerTab || this.selectedTab;
|
||||
@@ -417,7 +421,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
tabGroup = previousTab.group;
|
||||
}
|
||||
if (
|
||||
@@ -3950,7 +4069,7 @@
|
||||
@@ -3950,7 +4073,7 @@
|
||||
) {
|
||||
elementIndex = Infinity;
|
||||
} else if (previousTab.visible) {
|
||||
@@ -426,7 +430,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
} else if (previousTab == FirefoxViewHandler.tab) {
|
||||
elementIndex = 0;
|
||||
}
|
||||
@@ -3978,14 +4097,14 @@
|
||||
@@ -3978,14 +4101,14 @@
|
||||
}
|
||||
// Ensure index is within bounds.
|
||||
if (tab.pinned) {
|
||||
@@ -445,7 +449,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
|
||||
if (pinned && !itemAfter?.pinned) {
|
||||
itemAfter = null;
|
||||
@@ -3996,7 +4115,7 @@
|
||||
@@ -3996,7 +4119,7 @@
|
||||
|
||||
this.tabContainer._invalidateCachedTabs();
|
||||
|
||||
@@ -454,7 +458,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
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);
|
||||
@@ -4032,6 +4151,7 @@
|
||||
@@ -4032,6 +4155,7 @@
|
||||
if (pinned) {
|
||||
this._updateTabBarForPinnedTabs();
|
||||
}
|
||||
@@ -462,7 +466,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
|
||||
TabBarVisibility.update();
|
||||
}
|
||||
@@ -4321,6 +4441,9 @@
|
||||
@@ -4321,6 +4445,9 @@
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -472,7 +476,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
this.removeTabs(selectedTabs, { isUserTriggered, telemetrySource });
|
||||
}
|
||||
|
||||
@@ -4582,6 +4705,7 @@
|
||||
@@ -4582,6 +4709,7 @@
|
||||
telemetrySource,
|
||||
} = {}
|
||||
) {
|
||||
@@ -480,7 +484,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs
|
||||
// can be considered equivalent to closing the window.
|
||||
if (
|
||||
@@ -4671,6 +4795,7 @@
|
||||
@@ -4671,6 +4799,7 @@
|
||||
if (lastToClose) {
|
||||
this.removeTab(lastToClose, aParams);
|
||||
}
|
||||
@@ -488,7 +492,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
@@ -4709,6 +4834,12 @@
|
||||
@@ -4709,6 +4838,12 @@
|
||||
aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start();
|
||||
}
|
||||
|
||||
@@ -501,7 +505,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
// Handle requests for synchronously removing an already
|
||||
// asynchronously closing tab.
|
||||
if (!animate && aTab.closing) {
|
||||
@@ -4723,6 +4854,9 @@
|
||||
@@ -4723,6 +4858,9 @@
|
||||
// state).
|
||||
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
|
||||
let isLastTab = this.#isLastTabInWindow(aTab);
|
||||
@@ -511,7 +515,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
if (
|
||||
!this._beginRemoveTab(aTab, {
|
||||
closeWindowFastpath: true,
|
||||
@@ -4905,7 +5039,7 @@
|
||||
@@ -4905,7 +5043,7 @@
|
||||
closeWindowWithLastTab != null
|
||||
? closeWindowWithLastTab
|
||||
: !window.toolbar.visible ||
|
||||
@@ -520,7 +524,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
|
||||
if (closeWindow) {
|
||||
// We've already called beforeunload on all the relevant tabs if we get here,
|
||||
@@ -4929,6 +5063,7 @@
|
||||
@@ -4929,6 +5067,7 @@
|
||||
|
||||
newTab = true;
|
||||
}
|
||||
@@ -528,7 +532,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
aTab._endRemoveArgs = [closeWindow, newTab];
|
||||
|
||||
// swapBrowsersAndCloseOther will take care of closing the window without animation.
|
||||
@@ -4969,13 +5104,7 @@
|
||||
@@ -4969,13 +5108,7 @@
|
||||
aTab._mouseleave();
|
||||
|
||||
if (newTab) {
|
||||
@@ -543,7 +547,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
} else {
|
||||
TabBarVisibility.update();
|
||||
}
|
||||
@@ -5108,6 +5237,7 @@
|
||||
@@ -5108,6 +5241,7 @@
|
||||
this.tabs[i]._tPos = i;
|
||||
}
|
||||
|
||||
@@ -551,7 +555,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
if (!this._windowIsClosing) {
|
||||
// update tab close buttons state
|
||||
this.tabContainer._updateCloseButtons();
|
||||
@@ -5320,6 +5450,7 @@
|
||||
@@ -5320,6 +5454,7 @@
|
||||
}
|
||||
|
||||
let excludeTabs = new Set(aExcludeTabs);
|
||||
@@ -559,7 +563,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
|
||||
// If this tab has a successor, it should be selectable, since
|
||||
// hiding or closing a tab removes that tab as a successor.
|
||||
@@ -5332,13 +5463,13 @@
|
||||
@@ -5332,13 +5467,13 @@
|
||||
!excludeTabs.has(aTab.owner) &&
|
||||
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
|
||||
) {
|
||||
@@ -575,7 +579,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
);
|
||||
|
||||
let tab = this.tabContainer.findNextTab(aTab, {
|
||||
@@ -5354,7 +5485,7 @@
|
||||
@@ -5354,7 +5489,7 @@
|
||||
}
|
||||
|
||||
if (tab) {
|
||||
@@ -584,7 +588,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
}
|
||||
|
||||
// If no qualifying visible tab was found, see if there is a tab in
|
||||
@@ -5375,7 +5506,7 @@
|
||||
@@ -5375,7 +5510,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
@@ -593,7 +597,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
}
|
||||
|
||||
_blurTab(aTab) {
|
||||
@@ -5777,10 +5908,10 @@
|
||||
@@ -5777,10 +5912,10 @@
|
||||
SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
|
||||
}
|
||||
|
||||
@@ -606,7 +610,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
aTab.selected ||
|
||||
aTab.closing ||
|
||||
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
|
||||
@@ -5839,6 +5970,7 @@
|
||||
@@ -5839,6 +5974,7 @@
|
||||
* @param {MozTabbrowserTab|MozTabbrowserTabGroup|MozTabbrowserTabGroup.labelElement} aTab
|
||||
*/
|
||||
replaceTabWithWindow(aTab, aOptions) {
|
||||
@@ -614,7 +618,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
if (this.tabs.length == 1) {
|
||||
return null;
|
||||
}
|
||||
@@ -5972,7 +6104,7 @@
|
||||
@@ -5972,7 +6108,7 @@
|
||||
* `true` if element is a `<tab-group>`
|
||||
*/
|
||||
isTabGroup(element) {
|
||||
@@ -623,7 +627,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -6048,8 +6180,8 @@
|
||||
@@ -6048,8 +6184,8 @@
|
||||
}
|
||||
|
||||
// Don't allow mixing pinned and unpinned tabs.
|
||||
@@ -634,7 +638,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
} else {
|
||||
tabIndex = Math.max(tabIndex, this.pinnedTabCount);
|
||||
}
|
||||
@@ -6075,10 +6207,16 @@
|
||||
@@ -6075,10 +6211,16 @@
|
||||
this.#handleTabMove(
|
||||
element,
|
||||
() => {
|
||||
@@ -653,7 +657,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
if (neighbor && this.isTab(element) && tabIndex > element._tPos) {
|
||||
neighbor.after(element);
|
||||
} else {
|
||||
@@ -6136,23 +6274,28 @@
|
||||
@@ -6136,23 +6278,28 @@
|
||||
#moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) {
|
||||
if (this.isTabGroupLabel(targetElement)) {
|
||||
targetElement = targetElement.group;
|
||||
@@ -688,7 +692,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
} 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
|
||||
@@ -6165,14 +6308,34 @@
|
||||
@@ -6165,14 +6312,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.
|
||||
@@ -724,7 +728,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
element.pinned
|
||||
? this.tabContainer.pinnedTabsContainer
|
||||
: this.tabContainer;
|
||||
@@ -6181,7 +6344,7 @@
|
||||
@@ -6181,7 +6348,7 @@
|
||||
element,
|
||||
() => {
|
||||
if (moveBefore) {
|
||||
@@ -733,7 +737,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
} else if (targetElement) {
|
||||
targetElement.after(element);
|
||||
} else {
|
||||
@@ -6227,10 +6390,10 @@
|
||||
@@ -6227,10 +6394,10 @@
|
||||
* @param {TabMetricsContext} [metricsContext]
|
||||
*/
|
||||
moveTabToGroup(aTab, aGroup, metricsContext) {
|
||||
@@ -746,7 +750,24 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
return;
|
||||
}
|
||||
if (aTab.group && aTab.group.id === aGroup.id) {
|
||||
@@ -6324,6 +6487,10 @@
|
||||
@@ -6261,6 +6428,7 @@
|
||||
|
||||
let state = {
|
||||
tabIndex: tab._tPos,
|
||||
+ workspaceId: tab.getAttribute("zen-workspace-id")
|
||||
};
|
||||
if (tab.visible) {
|
||||
state.elementIndex = tab.elementIndex;
|
||||
@@ -6287,7 +6455,7 @@
|
||||
let changedTabGroup =
|
||||
previousTabState.tabGroupId != currentTabState.tabGroupId;
|
||||
|
||||
- if (changedPosition || changedTabGroup) {
|
||||
+ if (changedPosition || changedTabGroup || (previousTabState.workspaceId != currentTabState.workspaceId)) {
|
||||
tab.dispatchEvent(
|
||||
new CustomEvent("TabMove", {
|
||||
bubbles: true,
|
||||
@@ -6324,6 +6492,10 @@
|
||||
|
||||
moveActionCallback();
|
||||
|
||||
@@ -757,7 +778,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
// Clear tabs cache after moving nodes because the order of tabs may have
|
||||
// changed.
|
||||
this.tabContainer._invalidateCachedTabs();
|
||||
@@ -7221,7 +7388,7 @@
|
||||
@@ -7221,7 +7393,7 @@
|
||||
// preventDefault(). It will still raise the window if appropriate.
|
||||
break;
|
||||
}
|
||||
@@ -766,7 +787,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
window.focus();
|
||||
aEvent.preventDefault();
|
||||
break;
|
||||
@@ -8166,6 +8333,7 @@
|
||||
@@ -8166,6 +8338,7 @@
|
||||
aWebProgress.isTopLevel
|
||||
) {
|
||||
this.mTab.setAttribute("busy", "true");
|
||||
@@ -774,7 +795,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
gBrowser._tabAttrModified(this.mTab, ["busy"]);
|
||||
this.mTab._notselectedsinceload = !this.mTab.selected;
|
||||
}
|
||||
@@ -9157,7 +9325,7 @@ var TabContextMenu = {
|
||||
@@ -9157,7 +9330,7 @@ var TabContextMenu = {
|
||||
);
|
||||
contextUnpinSelectedTabs.hidden =
|
||||
!this.contextTab.pinned || !this.multiselected;
|
||||
@@ -783,7 +804,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..c5c079ac5218f051407b27c6edbd4ba6
|
||||
// Build Ask Chat items
|
||||
TabContextMenu.GenAI.buildTabMenu(
|
||||
document.getElementById("context_askChat"),
|
||||
@@ -9476,6 +9644,7 @@ var TabContextMenu = {
|
||||
@@ -9476,6 +9649,7 @@ var TabContextMenu = {
|
||||
)
|
||||
);
|
||||
} else {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
|
||||
index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c3b65f80b 100644
|
||||
index e2b27db6c13278defea3bcc7606a8da54e7d001c..db0c8da40e626354895421190ca5d6e3f397fc45 100644
|
||||
--- a/browser/components/tabbrowser/content/tabs.js
|
||||
+++ b/browser/components/tabbrowser/content/tabs.js
|
||||
@@ -332,7 +332,7 @@
|
||||
@@ -19,7 +19,17 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
} else if (
|
||||
event.originalTarget.closest("scrollbox") &&
|
||||
!Services.prefs.getBoolPref(
|
||||
@@ -686,7 +685,7 @@
|
||||
@@ -449,6 +448,9 @@
|
||||
}
|
||||
|
||||
on_keydown(event) {
|
||||
+ if (document.documentElement.getAttribute('zen-renaming-tab') === 'true') {
|
||||
+ return;
|
||||
+ }
|
||||
let { altKey, shiftKey } = event;
|
||||
let [accel, nonAccel] =
|
||||
AppConstants.platform == "macosx"
|
||||
@@ -686,7 +688,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
|
||||
@@ -28,7 +38,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
let tabsPerRow = 0;
|
||||
let position = RTL_UI
|
||||
? window.windowUtils.getBoundsWithoutFlushing(
|
||||
@@ -851,7 +850,7 @@
|
||||
@@ -851,7 +853,7 @@
|
||||
let dropEffect = this.getDropEffectForTabDrag(event);
|
||||
let isMovingInTabStrip = !fromTabList && dropEffect == "move";
|
||||
let collapseTabGroupDuringDrag =
|
||||
@@ -37,7 +47,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
|
||||
tab._dragData = {
|
||||
offsetX: this.verticalMode
|
||||
@@ -861,7 +860,7 @@
|
||||
@@ -861,7 +863,7 @@
|
||||
? event.screenY - window.screenY - tabOffset
|
||||
: event.screenY - window.screenY,
|
||||
scrollPos:
|
||||
@@ -46,7 +56,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
? this.pinnedTabsContainer.scrollPosition
|
||||
: this.arrowScrollbox.scrollPosition,
|
||||
screenX: event.screenX,
|
||||
@@ -886,6 +885,7 @@
|
||||
@@ -886,6 +888,7 @@
|
||||
if (tab.multiselected) {
|
||||
this.#moveTogetherSelectedTabs(tab);
|
||||
} else if (collapseTabGroupDuringDrag) {
|
||||
@@ -54,7 +64,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
tab.group.collapsed = true;
|
||||
}
|
||||
}
|
||||
@@ -932,6 +932,10 @@
|
||||
@@ -932,6 +935,10 @@
|
||||
}
|
||||
|
||||
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
|
||||
@@ -65,7 +75,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
if (
|
||||
(dropEffect == "move" || dropEffect == "copy") &&
|
||||
document == draggedTab.ownerDocument &&
|
||||
@@ -1059,7 +1063,9 @@
|
||||
@@ -1059,7 +1066,9 @@
|
||||
isTabGroupLabel(draggedTab) &&
|
||||
draggedTab._dragData?.expandGroupOnDrop
|
||||
) {
|
||||
@@ -76,7 +86,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1095,6 +1101,18 @@
|
||||
@@ -1095,6 +1104,18 @@
|
||||
|
||||
this._tabDropIndicator.hidden = true;
|
||||
event.stopPropagation();
|
||||
@@ -95,7 +105,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
if (draggedTab && dropEffect == "copy") {
|
||||
let duplicatedDraggedTab;
|
||||
let duplicatedTabs = [];
|
||||
@@ -1119,8 +1137,9 @@
|
||||
@@ -1119,8 +1140,9 @@
|
||||
let translateOffsetY = oldTranslateY % tabHeight;
|
||||
let newTranslateX = oldTranslateX - translateOffsetX;
|
||||
let newTranslateY = oldTranslateY - translateOffsetY;
|
||||
@@ -107,7 +117,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
|
||||
if (this.#isContainerVerticalPinnedGrid(draggedTab)) {
|
||||
// Update both translate axis for pinned vertical expanded tabs
|
||||
@@ -1136,8 +1155,8 @@
|
||||
@@ -1136,8 +1158,8 @@
|
||||
}
|
||||
} else {
|
||||
let tabs = this.ariaFocusableItems.slice(
|
||||
@@ -118,7 +128,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
);
|
||||
let size = this.verticalMode ? "height" : "width";
|
||||
let screenAxis = this.verticalMode ? "screenY" : "screenX";
|
||||
@@ -1178,11 +1197,9 @@
|
||||
@@ -1178,11 +1200,9 @@
|
||||
}
|
||||
|
||||
let shouldPin =
|
||||
@@ -132,7 +142,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
let shouldTranslate =
|
||||
!gReduceMotion &&
|
||||
!shouldCreateGroupOnDrop &&
|
||||
@@ -1195,6 +1212,7 @@
|
||||
@@ -1195,6 +1215,7 @@
|
||||
(oldTranslateY && oldTranslateY != newTranslateY);
|
||||
} else if (this.verticalMode) {
|
||||
shouldTranslate &&= oldTranslateY && oldTranslateY != newTranslateY;
|
||||
@@ -140,7 +150,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
} else {
|
||||
shouldTranslate &&= oldTranslateX && oldTranslateX != newTranslateX;
|
||||
}
|
||||
@@ -1376,6 +1394,7 @@
|
||||
@@ -1376,6 +1397,7 @@
|
||||
|
||||
let nextItem = this.ariaFocusableItems[newIndex];
|
||||
let tabGroup = isTab(nextItem) && nextItem.group;
|
||||
@@ -148,7 +158,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
gBrowser.loadTabs(urls, {
|
||||
inBackground,
|
||||
replace,
|
||||
@@ -1408,6 +1427,17 @@
|
||||
@@ -1408,6 +1430,17 @@
|
||||
|
||||
this.finishMoveTogetherSelectedTabs(draggedTab);
|
||||
this.finishAnimateTabMove();
|
||||
@@ -166,7 +176,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
this.#expandGroupOnDrop(draggedTab);
|
||||
this.#resetTabsAfterDrop(draggedTab.ownerDocument);
|
||||
|
||||
@@ -1577,7 +1607,6 @@
|
||||
@@ -1577,7 +1610,6 @@
|
||||
|
||||
this.toggleAttribute("overflow", true);
|
||||
this._updateCloseButtons();
|
||||
@@ -174,7 +184,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
|
||||
document
|
||||
.getElementById("tab-preview-panel")
|
||||
@@ -1635,7 +1664,7 @@
|
||||
@@ -1635,7 +1667,7 @@
|
||||
}
|
||||
|
||||
get newTabButton() {
|
||||
@@ -183,7 +193,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
}
|
||||
|
||||
get verticalMode() {
|
||||
@@ -1651,6 +1680,7 @@
|
||||
@@ -1651,6 +1683,7 @@
|
||||
}
|
||||
|
||||
get overflowing() {
|
||||
@@ -191,7 +201,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
return this.hasAttribute("overflow");
|
||||
}
|
||||
|
||||
@@ -1659,26 +1689,54 @@
|
||||
@@ -1659,26 +1692,54 @@
|
||||
if (this.#allTabs) {
|
||||
return this.#allTabs;
|
||||
}
|
||||
@@ -253,7 +263,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1745,32 +1803,27 @@
|
||||
@@ -1745,32 +1806,27 @@
|
||||
|
||||
let elementIndex = 0;
|
||||
|
||||
@@ -295,7 +305,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
|
||||
return this.#focusableItems;
|
||||
}
|
||||
@@ -1778,6 +1831,7 @@
|
||||
@@ -1778,6 +1834,7 @@
|
||||
_invalidateCachedTabs() {
|
||||
this.#allTabs = null;
|
||||
this._invalidateCachedVisibleTabs();
|
||||
@@ -303,7 +313,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
}
|
||||
|
||||
_invalidateCachedVisibleTabs() {
|
||||
@@ -1793,8 +1847,8 @@
|
||||
@@ -1793,8 +1850,8 @@
|
||||
#isContainerVerticalPinnedGrid(tab) {
|
||||
return (
|
||||
this.verticalMode &&
|
||||
@@ -314,7 +324,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
!this.expandOnHover
|
||||
);
|
||||
}
|
||||
@@ -1810,7 +1864,7 @@
|
||||
@@ -1810,7 +1867,7 @@
|
||||
|
||||
if (node == null) {
|
||||
// We have a container for non-tab elements at the end of the scrollbox.
|
||||
@@ -323,7 +333,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
}
|
||||
|
||||
node.before(tab);
|
||||
@@ -1905,7 +1959,7 @@
|
||||
@@ -1905,7 +1962,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.
|
||||
@@ -332,7 +342,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
const newTab2 = this.newTabButton;
|
||||
const newTabVertical = document.getElementById(
|
||||
"vertical-tabs-newtab-button"
|
||||
@@ -2000,10 +2054,12 @@
|
||||
@@ -2000,10 +2057,12 @@
|
||||
|
||||
_handleTabSelect(aInstant) {
|
||||
let selectedTab = this.selectedItem;
|
||||
@@ -345,7 +355,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
selectedTab._notselectedsinceload = false;
|
||||
}
|
||||
|
||||
@@ -2140,6 +2196,16 @@
|
||||
@@ -2140,6 +2199,16 @@
|
||||
when the tab is first selected to be dragged.
|
||||
*/
|
||||
#updateTabStylesOnDrag(tab) {
|
||||
@@ -362,7 +372,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
let isPinned = tab.pinned;
|
||||
let numPinned = gBrowser.pinnedTabCount;
|
||||
let allTabs = this.ariaFocusableItems;
|
||||
@@ -2398,7 +2464,7 @@
|
||||
@@ -2398,7 +2467,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -371,7 +381,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
|
||||
let directionX = screenX > dragData.animLastScreenX;
|
||||
let directionY = screenY > dragData.animLastScreenY;
|
||||
@@ -2407,6 +2473,8 @@
|
||||
@@ -2407,6 +2476,8 @@
|
||||
|
||||
let { width: tabWidth, height: tabHeight } =
|
||||
draggedTab.getBoundingClientRect();
|
||||
@@ -380,7 +390,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
let shiftSizeX = tabWidth * movingTabs.length;
|
||||
let shiftSizeY = tabHeight;
|
||||
dragData.tabWidth = tabWidth;
|
||||
@@ -2443,8 +2511,8 @@
|
||||
@@ -2443,8 +2514,8 @@
|
||||
let lastBoundX =
|
||||
lastTabInRow.screenX +
|
||||
lastTabInRow.getBoundingClientRect().width -
|
||||
@@ -391,7 +401,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
translateX = Math.min(Math.max(translateX, firstBoundX), lastBoundX);
|
||||
translateY = Math.min(Math.max(translateY, firstBoundY), lastBoundY);
|
||||
|
||||
@@ -2560,7 +2628,7 @@
|
||||
@@ -2560,7 +2631,7 @@
|
||||
}
|
||||
|
||||
dragData.animDropElementIndex = newIndex;
|
||||
@@ -400,7 +410,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
dragData.dropBefore = newIndex < tabs.length;
|
||||
|
||||
// Shift background tabs to leave a gap where the dragged tab
|
||||
@@ -2593,13 +2661,18 @@
|
||||
@@ -2593,13 +2664,18 @@
|
||||
|
||||
this.#clearDragOverCreateGroupTimer();
|
||||
|
||||
@@ -423,7 +433,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
|
||||
if (this.#rtlMode) {
|
||||
tabs.reverse();
|
||||
@@ -2610,7 +2683,7 @@
|
||||
@@ -2610,7 +2686,7 @@
|
||||
let screenAxis = this.verticalMode ? "screenY" : "screenX";
|
||||
let size = this.verticalMode ? "height" : "width";
|
||||
let translateAxis = this.verticalMode ? "translateY" : "translateX";
|
||||
@@ -432,7 +442,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
let translateX = event.screenX - dragData.screenX;
|
||||
let translateY = event.screenY - dragData.screenY;
|
||||
|
||||
@@ -2620,10 +2693,16 @@
|
||||
@@ -2620,10 +2696,16 @@
|
||||
dragData.translateY = translateY;
|
||||
|
||||
// Move the dragged tab based on the mouse position.
|
||||
@@ -451,7 +461,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
let endEdge = ele => ele[screenAxis] + bounds(ele)[size];
|
||||
let lastMovingTabScreen = endEdge(lastMovingTab);
|
||||
let firstMovingTabScreen = firstMovingTab[screenAxis];
|
||||
@@ -2632,6 +2711,7 @@
|
||||
@@ -2632,6 +2714,7 @@
|
||||
// Constrain the range over which the moving tabs can move between the first and last tab
|
||||
let firstBound = firstTab[screenAxis] - firstMovingTabScreen;
|
||||
let lastBound = endEdge(lastTab) - lastMovingTabScreen;
|
||||
@@ -459,7 +469,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
|
||||
// Center the tab under the cursor if the tab is not under the cursor while dragging
|
||||
if (
|
||||
@@ -2649,6 +2729,9 @@
|
||||
@@ -2649,6 +2732,9 @@
|
||||
// Shift the `.tab-group-label-container` to shift the label element.
|
||||
item = item.parentElement;
|
||||
}
|
||||
@@ -469,7 +479,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
item.style.transform = `${translateAxis}(${translate}px)`;
|
||||
}
|
||||
|
||||
@@ -2786,6 +2869,9 @@
|
||||
@@ -2786,6 +2872,9 @@
|
||||
break;
|
||||
}
|
||||
let element = tabs[mid];
|
||||
@@ -479,7 +489,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
let elementForSize = isTabGroupLabel(element)
|
||||
? element.parentElement
|
||||
: element;
|
||||
@@ -2805,6 +2891,8 @@
|
||||
@@ -2805,6 +2894,8 @@
|
||||
};
|
||||
|
||||
let dropElement = getOverlappedElement();
|
||||
@@ -488,7 +498,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
|
||||
let newDropElementIndex;
|
||||
if (dropElement) {
|
||||
@@ -2869,7 +2957,10 @@
|
||||
@@ -2869,7 +2960,10 @@
|
||||
let shouldCreateGroupOnDrop;
|
||||
let dropBefore;
|
||||
if (dropElement) {
|
||||
@@ -500,7 +510,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
? dropElement.parentElement
|
||||
: dropElement;
|
||||
|
||||
@@ -2889,7 +2980,7 @@
|
||||
@@ -2889,7 +2983,7 @@
|
||||
? Services.prefs.getIntPref(
|
||||
"browser.tabs.dragDrop.moveOverThresholdPercent"
|
||||
) / 100
|
||||
@@ -509,7 +519,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
moveOverThreshold = Math.min(1, Math.max(0, moveOverThreshold));
|
||||
let shouldMoveOver = overlapPercent > moveOverThreshold;
|
||||
if (logicalForward && shouldMoveOver) {
|
||||
@@ -2921,44 +3012,21 @@
|
||||
@@ -2921,44 +3015,21 @@
|
||||
|
||||
// If dragging a group over another group, don't make it look like it is
|
||||
// possible to drop the dragged group inside the other group.
|
||||
@@ -559,7 +569,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
// When dragging tab(s) over an ungrouped tab, signal to the user
|
||||
// that dropping the tab(s) will create a new tab group.
|
||||
shouldCreateGroupOnDrop =
|
||||
@@ -2968,12 +3036,6 @@
|
||||
@@ -2968,12 +3039,6 @@
|
||||
overlapPercent > dragOverGroupingThreshold;
|
||||
|
||||
if (shouldCreateGroupOnDrop) {
|
||||
@@ -572,7 +582,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
} else {
|
||||
this.removeAttribute("movingtab-createGroup");
|
||||
document
|
||||
@@ -3000,19 +3062,14 @@
|
||||
@@ -3000,19 +3065,14 @@
|
||||
dropElement = dropElementGroup;
|
||||
colorCode = undefined;
|
||||
} else if (isTabGroupLabel(dropElement)) {
|
||||
@@ -600,7 +610,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
}
|
||||
this.#setDragOverGroupColor(colorCode);
|
||||
this.toggleAttribute("movingtab-ungroup", !colorCode);
|
||||
@@ -3030,19 +3087,28 @@
|
||||
@@ -3030,19 +3090,28 @@
|
||||
dragData.dropElement = dropElement;
|
||||
dragData.dropBefore = dropBefore;
|
||||
dragData.animDropElementIndex = newDropElementIndex;
|
||||
@@ -631,7 +641,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
}
|
||||
item.style.transform = transform;
|
||||
}
|
||||
@@ -3095,12 +3161,14 @@
|
||||
@@ -3095,12 +3164,14 @@
|
||||
);
|
||||
}
|
||||
|
||||
@@ -648,7 +658,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
|
||||
for (let item of this.ariaFocusableItems) {
|
||||
if (isTabGroupLabel(item)) {
|
||||
@@ -3108,6 +3176,18 @@
|
||||
@@ -3108,6 +3179,18 @@
|
||||
item = item.parentElement;
|
||||
}
|
||||
item.style.transform = "";
|
||||
@@ -667,7 +677,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
item.removeAttribute("dragover-createGroup");
|
||||
}
|
||||
this.removeAttribute("movingtab-createGroup");
|
||||
@@ -3129,16 +3209,15 @@
|
||||
@@ -3129,16 +3212,15 @@
|
||||
tab.style.left = "";
|
||||
tab.style.top = "";
|
||||
tab.style.maxWidth = "";
|
||||
@@ -686,7 +696,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
}
|
||||
let periphery = draggedTabDocument.getElementById(
|
||||
"tabbrowser-arrowscrollbox-periphery"
|
||||
@@ -3211,7 +3290,7 @@
|
||||
@@ -3211,7 +3293,7 @@
|
||||
let postTransitionCleanup = () => {
|
||||
movingTab._moveTogetherSelectedTabsData.animate = false;
|
||||
};
|
||||
@@ -695,7 +705,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
postTransitionCleanup();
|
||||
} else {
|
||||
let onTransitionEnd = transitionendEvent => {
|
||||
@@ -3384,7 +3463,7 @@
|
||||
@@ -3384,7 +3466,7 @@
|
||||
}
|
||||
|
||||
_notifyBackgroundTab(aTab) {
|
||||
@@ -704,7 +714,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3493,7 +3572,10 @@
|
||||
@@ -3493,7 +3575,10 @@
|
||||
#getDragTarget(event, { ignoreSides = false } = {}) {
|
||||
let { target } = event;
|
||||
while (target) {
|
||||
@@ -716,7 +726,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..016d58789918235cc3a41f33ee402c2c
|
||||
break;
|
||||
}
|
||||
target = target.parentNode;
|
||||
@@ -3510,6 +3592,9 @@
|
||||
@@ -3510,6 +3595,9 @@
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@@ -2,6 +2,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/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<svg width="24" height="24" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.25 7C10.25 6.30964 10.8097 5.75 11.5 5.75C12.1904 5.75 12.75 6.30964 12.75 7V9.74469L14.8375 8.44C15.4229 8.07411 16.1941 8.25208 16.56 8.8375C16.9259 9.42292 16.7479 10.1941 16.1625 10.56L13.8585 12L16.1625 13.44C16.7479 13.8059 16.9259 14.5771 16.56 15.1625C16.1941 15.7479 15.4229 15.9259 14.8375 15.56L12.75 14.2553V17C12.75 17.6904 12.1904 18.25 11.5 18.25C10.8097 18.25 10.25 17.6904 10.25 17V14.2553L8.16251 15.56C7.57709 15.9259 6.8059 15.7479 6.44002 15.1625C6.07413 14.5771 6.2521 13.8059 6.83752 13.44L9.14152 12L6.83752 10.56C6.2521 10.1941 6.07413 9.42292 6.44002 8.8375C6.8059 8.25208 7.57709 8.07411 8.16251 8.44L10.25 9.74469V7Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
|
@@ -78,6 +78,9 @@ var gZenUIManager = {
|
||||
},
|
||||
|
||||
_debloatContextMenus() {
|
||||
if (!Services.prefs.getBoolPref('zen.view.context-menu.refresh', false)) {
|
||||
return;
|
||||
}
|
||||
const contextMenusToClean = [
|
||||
// Remove the 'new tab below' context menu.
|
||||
// reason: It doesn't properly work with zen and it's philosophy of not having
|
||||
@@ -129,7 +132,7 @@ var gZenUIManager = {
|
||||
},
|
||||
|
||||
updateTabsToolbar() {
|
||||
const kUrlbarHeight = 336;
|
||||
const kUrlbarHeight = 388;
|
||||
gURLBar.textbox.style.setProperty(
|
||||
'--zen-urlbar-top',
|
||||
`${window.innerHeight / 2 - Math.max(kUrlbarHeight, gURLBar.textbox.getBoundingClientRect().height) / 2}px`
|
||||
|
@@ -100,7 +100,8 @@
|
||||
opacity: var(--zen-grainy-background-opacity, 0);
|
||||
mix-blend-mode: overlay;
|
||||
:root:not([swipe-gesture='true']) & {
|
||||
transition: opacity 0.3s ease-in-out;
|
||||
/* note: Keep in sync with kGlobalAnimationDuration */
|
||||
transition: opacity 0.2s ease-in-out;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -228,3 +228,19 @@ body > #confetti {
|
||||
linear-gradient(#fff 0 0);
|
||||
mask-composite: exclude;
|
||||
}
|
||||
|
||||
/* Status panel */
|
||||
|
||||
#statuspanel {
|
||||
padding: 4px 3px;
|
||||
|
||||
& > #statuspanel-label {
|
||||
border-radius: 16px !important;
|
||||
border: 1px solid rgba(225, 225, 225, 0.15) !important;
|
||||
padding: 5px 9px 6px 9px !important;
|
||||
font-weight: 600 !important;
|
||||
background: color-mix(in srgb, var(--zen-primary-color), black 80%) !important;
|
||||
color: #f3f3f3 !important;
|
||||
font-size: smaller !important;
|
||||
}
|
||||
}
|
||||
|
@@ -44,7 +44,7 @@
|
||||
var(--zen-colors-tertiary) 99%
|
||||
);
|
||||
|
||||
--zen-dialog-background: light-dark(rgb(219, 219, 219), rgb(31, 31, 31));
|
||||
--zen-dialog-background: light-dark(rgb(244, 244, 244), rgb(31, 31, 31));
|
||||
--zen-urlbar-background: color-mix(in srgb, var(--zen-primary-color) 3%, #f4f4f4 97%);
|
||||
|
||||
--zen-secondary-btn-color: var(--zen-colors-primary-foreground);
|
||||
|
@@ -149,6 +149,12 @@
|
||||
}
|
||||
|
||||
createSubfolder() {
|
||||
// We need to expand all parent folders
|
||||
let currentFolder = this;
|
||||
do {
|
||||
currentFolder.collapsed = false;
|
||||
currentFolder = currentFolder.group;
|
||||
} while (currentFolder);
|
||||
gZenFolders.createFolder([], {
|
||||
renameFolder: !gZenUIManager.testingEnabled,
|
||||
label: 'Subfolder',
|
||||
|
@@ -817,6 +817,7 @@
|
||||
pinned: true,
|
||||
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
|
||||
_forZenEmptyTab: true,
|
||||
createLazyBrowser: true,
|
||||
});
|
||||
|
||||
tabs = [emptyTab, ...filteredTabs];
|
||||
@@ -1059,9 +1060,7 @@
|
||||
// We don't need to do anything if the URL is invalid. e.g. about:blank
|
||||
}
|
||||
let tabLabel = tab.label || '';
|
||||
let iconURL =
|
||||
gBrowser.getIcon(tab) ||
|
||||
"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100'%3E%3C/svg%3E";
|
||||
let iconURL = gBrowser.getIcon(tab) || PlacesUtils.favicons.defaultFavicon;
|
||||
|
||||
icon.src = iconURL;
|
||||
|
||||
|
@@ -392,6 +392,7 @@ zen-folder {
|
||||
background-color: transparent;
|
||||
border: none !important;
|
||||
outline: none !important;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
#zen-folder-tabs-list {
|
||||
|
@@ -898,7 +898,7 @@ class nsZenViewSplitter extends nsZenDOMOperatedFeature {
|
||||
document.getElementById('context_zenSplitTabs').setAttribute('data-l10n-args', tabCountInfo);
|
||||
document
|
||||
.getElementById('context_zenSplitTabs')
|
||||
.setAttribute('disabled', !this.contextCanSplitTabs());
|
||||
.setAttribute('hidden', !this.contextCanSplitTabs());
|
||||
});
|
||||
}
|
||||
|
||||
@@ -907,14 +907,12 @@ class nsZenViewSplitter extends nsZenDOMOperatedFeature {
|
||||
*/
|
||||
insertSplitViewTabContextMenu() {
|
||||
const element = window.MozXULElement.parseXULToFragment(`
|
||||
<menuseparator/>
|
||||
<menuitem id="context_zenSplitTabs"
|
||||
data-lazy-l10n-id="tab-zen-split-tabs"
|
||||
data-l10n-args='{"tabCount": 1}'
|
||||
command="cmd_zenSplitViewContextMenu"/>
|
||||
<menuseparator/>
|
||||
`);
|
||||
document.getElementById('context_closeDuplicateTabs').after(element);
|
||||
document.getElementById('context_duplicateTab').before(element);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -805,6 +805,10 @@
|
||||
if (selectedTab.group?.hasAttribute('split-view-group')) {
|
||||
tabsToUnload = selectedTab.group.tabs;
|
||||
}
|
||||
const allAreUnloaded = tabsToUnload.every((tab) => tab.hasAttribute('pending'));
|
||||
if (allAreUnloaded) {
|
||||
return await this._onCloseTabShortcut(event, selectedTab, { behavior: 'close' });
|
||||
}
|
||||
await gBrowser.explicitUnloadTabs(tabsToUnload);
|
||||
selectedTab.removeAttribute('discarded');
|
||||
}
|
||||
|
@@ -708,6 +708,8 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature {
|
||||
_handleSwipeStart(event) {
|
||||
if (!this.workspaceEnabled) return;
|
||||
|
||||
gZenFolders.cancelPopupTimer();
|
||||
|
||||
document.documentElement.setAttribute('swipe-gesture', 'true');
|
||||
document.addEventListener('popupshown', this.popupOpenHandler, { once: true });
|
||||
|
||||
@@ -1483,18 +1485,22 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature {
|
||||
continue;
|
||||
}
|
||||
|
||||
tab.setAttribute('zen-workspace-id', workspaceID);
|
||||
if (tab.hasAttribute('zen-essential')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (container && !justChangeId) {
|
||||
if (tab.group?.hasAttribute('split-view-group')) {
|
||||
this.moveTabsToWorkspace(tab.group.tabs, workspaceID, true);
|
||||
container.insertBefore(tab.group, container.lastChild);
|
||||
gBrowser.zenHandleTabMove(tab.group, () => {
|
||||
this.moveTabsToWorkspace(tab.group.tabs, workspaceID, true);
|
||||
container.insertBefore(tab.group, container.lastChild);
|
||||
});
|
||||
continue;
|
||||
}
|
||||
container.insertBefore(tab, container.lastChild);
|
||||
gBrowser.zenHandleTabMove(tab, () => {
|
||||
tab.setAttribute('zen-workspace-id', workspaceID);
|
||||
container.insertBefore(tab, container.lastChild);
|
||||
});
|
||||
}
|
||||
// also change glance tab if it's the same tab
|
||||
const glanceTab = tab.querySelector('.tabbrowser-tab[zen-glance-tab]');
|
||||
@@ -1575,6 +1581,7 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature {
|
||||
}
|
||||
|
||||
const workspaces = await this._workspaces();
|
||||
gZenFolders.cancelPopupTimer();
|
||||
|
||||
// Refresh tab cache
|
||||
for (const otherWorkspace of workspaces.workspaces) {
|
||||
@@ -1807,7 +1814,7 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature {
|
||||
{ previousWorkspaceIndex = null, previousWorkspace = null, onInit = false } = {}
|
||||
) {
|
||||
gZenUIManager.tabsWrapper.style.scrollbarWidth = 'none';
|
||||
const kGlobalAnimationDuration = 0.3;
|
||||
const kGlobalAnimationDuration = 0.2;
|
||||
this._animatingChange = true;
|
||||
const animations = [];
|
||||
const workspaces = await this._workspaces();
|
||||
@@ -2626,7 +2633,7 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature {
|
||||
|
||||
menu.appendChild(menuPopup);
|
||||
|
||||
document.getElementById('context_closeDuplicateTabs').after(menu);
|
||||
document.getElementById('context_moveTabOptions').after(menu);
|
||||
}
|
||||
|
||||
async changeTabWorkspace(workspaceID) {
|
||||
|
@@ -19,7 +19,7 @@
|
||||
"brandShortName": "Zen",
|
||||
"brandFullName": "Zen Browser",
|
||||
"release": {
|
||||
"displayVersion": "1.15.2b",
|
||||
"displayVersion": "1.15.3b",
|
||||
"github": {
|
||||
"repo": "zen-browser/desktop"
|
||||
},
|
||||
|
Reference in New Issue
Block a user