From bf6e493f89967c5655330272b6625ee9579927e8 Mon Sep 17 00:00:00 2001 From: "Mr. M" Date: Thu, 12 Jun 2025 19:13:50 +0200 Subject: [PATCH] feat: Add comfirmation before deleting a workspace, b=no-bug, c=common, workspaces --- l10n | 2 +- src/browser/base/content/browser-js.patch | 12 +++++++++++- src/zen/common/ZenCustomizableUI.sys.mjs | 6 +++--- src/zen/common/ZenUIManager.mjs | 2 +- src/zen/common/styles/zen-popup.css | 4 ++++ src/zen/common/zen-sets.js | 2 +- src/zen/workspaces/ZenWorkspaceCreation.mjs | 2 +- src/zen/workspaces/ZenWorkspaces.mjs | 8 +++++++- 8 files changed, 29 insertions(+), 9 deletions(-) diff --git a/l10n b/l10n index 80f03d91..ac5ebba5 160000 --- a/l10n +++ b/l10n @@ -1 +1 @@ -Subproject commit 80f03d913e3703933e9f4c1099720e112814e953 +Subproject commit ac5ebba5c12de1190dd073993c1e46b6d1b41dab diff --git a/src/browser/base/content/browser-js.patch b/src/browser/base/content/browser-js.patch index 7baa95e0..ae3011a2 100644 --- a/src/browser/base/content/browser-js.patch +++ b/src/browser/base/content/browser-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js -index 6d664917a5a3bb1cea8a747e42e8bc0065ec999e..5059293ebfa29d646455b7a3505bd6eae408ba64 100644 +index 6d664917a5a3bb1cea8a747e42e8bc0065ec999e..dfacd5c40ef14319fe7398452c007f167003a583 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, { @@ -39,3 +39,13 @@ index 6d664917a5a3bb1cea8a747e42e8bc0065ec999e..5059293ebfa29d646455b7a3505bd6ea } return true; +@@ -5717,6 +5722,9 @@ var ConfirmationHint = { + MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl"); + MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl"); + document.l10n.setAttributes(this._message, messageId, options.l10nArgs); ++ if (window.gZenUIManager?.showToast) { ++ return window.gZenUIManager.showToast(messageId, options); ++ } + if (options.descriptionId) { + document.l10n.setAttributes(this._description, options.descriptionId); + this._description.hidden = false; diff --git a/src/zen/common/ZenCustomizableUI.sys.mjs b/src/zen/common/ZenCustomizableUI.sys.mjs index 8dfe198e..af10ec1b 100644 --- a/src/zen/common/ZenCustomizableUI.sys.mjs +++ b/src/zen/common/ZenCustomizableUI.sys.mjs @@ -107,14 +107,14 @@ export var ZenCustomizableUI = new (class { _initCreateNewButton(window) { const button = window.document.getElementById('zen-create-new-button'); button.addEventListener('command', () => { - if (button.hasAttribute('open')) { + if (button.hasAttribute('zen-ignore-open')) { return; } const image = button.querySelector('image'); const popup = window.document.getElementById('zenCreateNewPopup'); - button.setAttribute('open', 'true'); + button.setAttribute('zen-ignore-open', 'true'); const handlePopupHidden = () => { - button.removeAttribute('open'); + button.removeAttribute('zen-ignore-open'); window.gZenUIManager.motion.animate( image, { transform: ['rotate(45deg)', 'rotate(0deg)'] }, diff --git a/src/zen/common/ZenUIManager.mjs b/src/zen/common/ZenUIManager.mjs index 92647288..4bf55451 100644 --- a/src/zen/common/ZenUIManager.mjs +++ b/src/zen/common/ZenUIManager.mjs @@ -455,7 +455,7 @@ var gZenUIManager = { const wrapper = document.createXULElement('hbox'); const element = document.createXULElement('vbox'); const label = document.createXULElement('label'); - document.l10n.setAttributes(label, messageId, options); + document.l10n.setAttributes(label, messageId, options.l10nArgs); element.appendChild(label); if (options.descriptionId) { const description = document.createXULElement('label'); diff --git a/src/zen/common/styles/zen-popup.css b/src/zen/common/styles/zen-popup.css index ffab2d76..774f5e4c 100644 --- a/src/zen/common/styles/zen-popup.css +++ b/src/zen/common/styles/zen-popup.css @@ -418,3 +418,7 @@ menuseparator { padding: 0 !important; min-width: unset !important; } + +#window-modal-dialog { + inset: 0; +} diff --git a/src/zen/common/zen-sets.js b/src/zen/common/zen-sets.js index 64b8fcf6..14e2eb09 100644 --- a/src/zen/common/zen-sets.js +++ b/src/zen/common/zen-sets.js @@ -103,7 +103,7 @@ document.addEventListener( break; case 'cmd_zenReorderWorkspaces': gZenUIManager.showToast('zen-workspaces-how-to-reorder-title', { - timeout: 10000, + timeout: 9000, descriptionId: 'zen-workspaces-how-to-reorder-desc', }); break; diff --git a/src/zen/workspaces/ZenWorkspaceCreation.mjs b/src/zen/workspaces/ZenWorkspaceCreation.mjs index b9b46706..83cf5638 100644 --- a/src/zen/workspaces/ZenWorkspaceCreation.mjs +++ b/src/zen/workspaces/ZenWorkspaceCreation.mjs @@ -170,6 +170,7 @@ document.getElementById('nav-bar').style.visibility = 'collapse'; } this.style.visibility = 'visible'; + this.resolveInitialized(); gZenUIManager.motion .animate( this.elementsToAnimate, @@ -188,7 +189,6 @@ .then(() => { this.inputName.focus(); gZenWorkspaces.workspaceElement(this.workspaceId).hidden = false; - this.resolveInitialized(); }); }); } diff --git a/src/zen/workspaces/ZenWorkspaces.mjs b/src/zen/workspaces/ZenWorkspaces.mjs index ebdfdee5..43df3449 100644 --- a/src/zen/workspaces/ZenWorkspaces.mjs +++ b/src/zen/workspaces/ZenWorkspaces.mjs @@ -2338,7 +2338,13 @@ var gZenWorkspaces = new (class extends ZenMultiWindowFeature { } async contextDeleteWorkspace() { - await this.removeWorkspace(this.activeWorkspace); + const [title, body] = await document.l10n.formatValues([ + { id: 'zen-workspaces-delete-workspace-title' }, + { id: 'zen-workspaces-delete-workspace-body' }, + ]); + if (Services.prompt.confirm(null, title, body)) { + await this.removeWorkspace(this.activeWorkspace); + } } findTabToBlur(tab) {