diff --git a/src/webui/www/private/confirmfeeddeletion.html b/src/webui/www/private/confirmfeeddeletion.html index 27103f860..e802e3f70 100644 --- a/src/webui/www/private/confirmfeeddeletion.html +++ b/src/webui/www/private/confirmfeeddeletion.html @@ -11,6 +11,15 @@ "use strict"; window.addEventListener("DOMContentLoaded", (event) => { + window.addEventListener("keydown", (event) => { + switch (event.key) { + case "Escape": + event.preventDefault(); + window.parent.qBittorrent.Client.closeFrameWindow(window); + break; + } + }); + document.getElementById("cancelBtn").focus(); document.getElementById("cancelBtn").addEventListener("click", (e) => { e.preventDefault(); diff --git a/src/webui/www/private/confirmruleclear.html b/src/webui/www/private/confirmruleclear.html index 022e78eef..8b6f7889b 100644 --- a/src/webui/www/private/confirmruleclear.html +++ b/src/webui/www/private/confirmruleclear.html @@ -11,6 +11,15 @@ "use strict"; window.addEventListener("DOMContentLoaded", (event) => { + window.addEventListener("keydown", (event) => { + switch (event.key) { + case "Escape": + event.preventDefault(); + window.parent.qBittorrent.Client.closeFrameWindow(window); + break; + } + }); + document.getElementById("cancelBtn").focus(); document.getElementById("cancelBtn").addEventListener("click", (e) => { e.preventDefault(); diff --git a/src/webui/www/private/confirmruledeletion.html b/src/webui/www/private/confirmruledeletion.html index 16c224829..db0a1c175 100644 --- a/src/webui/www/private/confirmruledeletion.html +++ b/src/webui/www/private/confirmruledeletion.html @@ -11,6 +11,15 @@ "use strict"; window.addEventListener("DOMContentLoaded", (event) => { + window.addEventListener("keydown", (event) => { + switch (event.key) { + case "Escape": + event.preventDefault(); + window.parent.qBittorrent.Client.closeFrameWindow(window); + break; + } + }); + document.getElementById("cancelBtn").focus(); document.getElementById("cancelBtn").addEventListener("click", (e) => { e.preventDefault(); diff --git a/src/webui/www/private/confirmtrackerdeletion.html b/src/webui/www/private/confirmtrackerdeletion.html index 6a6950c5c..c3d1f0a49 100644 --- a/src/webui/www/private/confirmtrackerdeletion.html +++ b/src/webui/www/private/confirmtrackerdeletion.html @@ -11,6 +11,15 @@ "use strict"; window.addEventListener("DOMContentLoaded", (event) => { + window.addEventListener("keydown", (event) => { + switch (event.key) { + case "Escape": + event.preventDefault(); + window.parent.qBittorrent.Client.closeFrameWindow(window); + break; + } + }); + const searchParams = new URLSearchParams(window.location.search); const host = searchParams.get("host"); diff --git a/src/webui/www/private/download.html b/src/webui/www/private/download.html index 53921e64d..807e95f70 100644 --- a/src/webui/www/private/download.html +++ b/src/webui/www/private/download.html @@ -14,6 +14,15 @@ "use strict"; window.addEventListener("DOMContentLoaded", (event) => { + window.addEventListener("keydown", (event) => { + switch (event.key) { + case "Escape": + event.preventDefault(); + window.parent.qBittorrent.Client.closeFrameWindow(window); + break; + } + }); + const encodedUrls = new URLSearchParams(window.location.search).get("urls"); if (encodedUrls !== null) { const urls = encodedUrls.split("|").map(decodeURIComponent); diff --git a/src/webui/www/private/scripts/client.js b/src/webui/www/private/scripts/client.js index 53f21ac02..86fbc746b 100644 --- a/src/webui/www/private/scripts/client.js +++ b/src/webui/www/private/scripts/client.js @@ -1778,6 +1778,24 @@ window.addEventListener("DOMContentLoaded", (event) => { deleteSelectedTorrentsFN(event.shiftKey); break; + case "Escape": { + if (event.target.isContentEditable) + return; + + event.preventDefault(); + const modalInstances = Object.values(MochaUI.Windows.instances); + if (modalInstances.length <= 0) + return; + + // MochaUI.currentModal does not update after a modal is closed + const focusedModal = modalInstances.find((modal) => { + return modal.windowEl.hasClass("isFocused"); + }); + if (focusedModal !== undefined) + focusedModal.close(); + break; + } + case "f": case "F": if (event.ctrlKey || event.metaKey) { diff --git a/src/webui/www/private/upload.html b/src/webui/www/private/upload.html index 1a89cffe1..3cf21f84e 100644 --- a/src/webui/www/private/upload.html +++ b/src/webui/www/private/upload.html @@ -14,6 +14,15 @@ "use strict"; window.addEventListener("DOMContentLoaded", (event) => { + window.addEventListener("keydown", (event) => { + switch (event.key) { + case "Escape": + event.preventDefault(); + window.parent.qBittorrent.Client.closeFrameWindow(window); + break; + } + }); + let submitted = false; document.getElementById("uploadForm").addEventListener("submit", (event) => {