diff --git a/copyparty/web/baguettebox.js b/copyparty/web/baguettebox.js
index defdbbcf..984175b3 100644
--- a/copyparty/web/baguettebox.js
+++ b/copyparty/web/baguettebox.js
@@ -237,7 +237,7 @@ window.baguetteBox = (function () {
}
function keyDownHandler(e) {
- if (e.ctrlKey || e.altKey || e.metaKey || e.isComposing)
+ if (e.ctrlKey || e.altKey || e.metaKey || e.isComposing || modal.busy)
return;
var k = e.code + '', v = vid();
diff --git a/copyparty/web/browser.js b/copyparty/web/browser.js
index a08cc2b7..dc822d9f 100644
--- a/copyparty/web/browser.js
+++ b/copyparty/web/browser.js
@@ -2640,7 +2640,7 @@ var thegrid = (function () {
gfiles.style.display = 'none';
gfiles.innerHTML = (
'
' +
- '
multiselect zoom: ' +
+ 'multiselect zoom: ' +
'– ' +
'+ chop: ' +
'– ' +
@@ -3041,17 +3041,31 @@ function tree_up() {
document.onkeydown = function (e) {
- var ae = document.activeElement, aet = '';
- if (ae && ae != document.body)
- aet = ae.nodeName.toLowerCase();
-
if (e.altKey || e.isComposing)
return;
- if (QS('#bbox-overlay.visible'))
+ if (QS('#bbox-overlay.visible') || modal.busy)
return;
- var k = e.code + '', pos = -1, n;
+ var k = e.code + '',
+ pos = -1,
+ n,
+ ae = document.activeElement,
+ aet = ae && ae != document.body ? ae.nodeName.toLowerCase() : '';
+
+ if (k == 'Escape') {
+ if (QS('.opview.act'))
+ return QS('#ops>a').click();
+
+ if (widget.is_open)
+ return widget.close();
+
+ if (!treectl.hidden)
+ return treectl.detree();
+
+ if (thegrid.en)
+ return ebi('griden').click();
+ }
if (aet == 'tr' && ae.closest('#files')) {
var d = '';