diff --git a/src/webui/www/private/scripts/client.js b/src/webui/www/private/scripts/client.js index 8b9be641c..06005d7f1 100644 --- a/src/webui/www/private/scripts/client.js +++ b/src/webui/www/private/scripts/client.js @@ -1774,14 +1774,21 @@ window.addEventListener("DOMContentLoaded", (event) => { deleteSelectedTorrentsFN(event.shiftKey); break; - case "Escape": + case "Escape": { if (event.target.isContentEditable) return; event.preventDefault(); - Object.values(MochaUI.Windows.instances).forEach((modal) => { - modal.close(); + const modalInstances = Object.values(MochaUI.Windows.instances); + if (modalInstances.length <= 0) + return; + // MochaUI.currentModal does not update after a modal is closed + // use `timestamp` for sequential closing + const latestModal = modalInstances.reduce((prev, curr) => { + return (prev.timestamp > curr.timestamp) ? prev : curr; }); + latestModal.close(); break; + } case "f": case "F":